BNP AXEPTA Silent Order Post 返回 20500077
结论
20500077 / NO VALID PAYMETHOD FOUND 表示 AXEPTA 在处理请求时,找不到与当前请求匹配且已为该商户启用的支付方式。
这通常与回调页或响应解密无关。返回结果中的 PayID 全为零,也说明交易还没有进入支付处理阶段,而是在识别支付方式或检查商户配置时被拒绝。
建议先检查这三项:
- Silent Order Post 是否提交到了信用卡专用接口,而非 Hosted Payment Page 或通用支付入口。
- 卡片字段名是否与当前使用的 AXEPTA 接口文档完全一致。
BNP_DEMO_AXEPTA是否已开通 merchant-hosted、Silent Order Post 或对应的银行卡支付方式。
为什么 Hosted Payment Page 能用,Silent Order Post 却失败
Hosted Payment Page 通常由 AXEPTA 展示可用的支付方式,并根据商户后台配置完成路由。商户页面不需要直接指定具体的银行卡支付接口。
Silent Order Post 的支付页面由商户托管。网关需要结合以下信息识别支付方式:
- 请求提交的接口地址;
- 商户号
MerchantID; - 加密参数中的交易数据;
- 未加密提交的银行卡字段;
- 商户后台已启用的支付渠道。
因此,Hosted Payment Page 测试成功,只能说明商户号和基础密钥可能有效,不能证明同一测试账户已经获得 Silent Order Post 权限。
首先检查提交地址
在部分 AXEPTA/Computop 接口版本中,信用卡 Silent Order Post 使用专门的信用卡入口,例如名称中含有 paySSL 的接口。此时,支付方式可能直接由入口确定,而不是由加密数据中的某个通用 PayType 参数决定。
如果将 Silent Order Post 表单提交到 Hosted Payment Page、通用支付接口或其他支付方式的接口,即使 Len、Data 和 MAC 都正确,也可能收到:
20500077
NO VALID PAYMETHOD FOUND
请从当前商户对应的 AXEPTA 接入文档或商户后台复制正式的 Silent Order Post URL,不要自行修改 Hosted Payment Page URL 的路径。
检查银行卡字段名称
示例使用了以下字段:
cardNumber
cardExpiryMonth
cardExpiryYear
这些字段名是否有效,取决于正在使用的 AXEPTA 接口版本。部分 AXEPTA/Computop Silent Order Post 接口可能要求使用:
CCNr
CCExpiryMonth
CCExpiryYear
CCCVC
还要注意字段名可能区分大小写。如果网关没有识别出卡号字段,就可能无法将请求识别为银行卡支付。
表单结构通常类似下面的示例,但接口地址和字段名必须以该商户收到的文档为准:
<form method="post" action="AXEPTA_SILENT_ORDER_POST_ENDPOINT">
<input type="hidden" name="MerchantID" value="YOUR_MERCHANT_ID">
<input type="hidden" name="Len" value="ENCRYPTED_DATA_LENGTH">
<input type="hidden" name="Data" value="ENCRYPTED_DATA">
<input type="text" name="CCNr" autocomplete="cc-number">
<input type="text" name="CCExpiryMonth" autocomplete="cc-exp-month">
<input type="text" name="CCExpiryYear" autocomplete="cc-exp-year">
<input type="password" name="CCCVC" autocomplete="cc-csc">
<button type="submit">Pay</button>
</form>
一次测试中不要同时提交两套字段名。先确认当前接口规范,再只保留规范要求的字段。
同时检查:
MerchantID、Len和Data是否位于 AXEPTA 要求的位置;Len是否按文档规定计算,而不是直接按字符串字符数处理;- 表单是否使用
POST; - 请求的
Content-Type是否符合接口要求; - 浏览器开发者工具中实际提交的字段是否与 HTML 源码一致;
- 卡片字段是否误放进了加密
Data,或者根本没有提交。
确认测试账户已启用支付方式
如果提交地址和字段名都正确,最可能的原因是测试商户尚未开通相应能力。
请让 BNP Paribas/AXEPTA 支持团队确认:
BNP_DEMO_AXEPTA是否允许使用 Silent Order Post;- 是否已启用信用卡支付方式;
- 是否已绑定对应的收单合同或支付通道;
- 是否允许指定的卡组织和币种;
- Silent Order Post 是否需要单独的测试商户号、密钥或接口地址;
- 该商户是否只能使用 Hosted Payment Page;
- 是否需要启用 3-D Secure、SCA 或其他附加配置。
提交工单时,请提供:
MerchantID: BNP_DEMO_AXEPTA
TransID: 101664548923266214628
Code: 20500077
Description: NO VALID PAYMETHOD FOUND
PayID: 00000000000000000000000000000000
Endpoint: 实际提交的完整接口地址
Timestamp: 请求发生时间和时区
不要向支持人员发送明文卡号、CVC、加密密钥或 HMAC 密码。
还需要修正测试数据
示例中的有效期为:
cardExpiryMonth=10
cardExpiryYear=2024
这个日期已经过期。即使支付方式识别问题得到解决,过期卡也可能在后续校验中失败。请改用 AXEPTA 当前测试文档提供的测试卡,并设置文档允许的未来有效期。
不过,过期日期通常不会直接导致 NO VALID PAYMETHOD FOUND。当前错误出现得更早,应优先排查接口路由、字段识别和商户权限。
建议的排查顺序
- 确认使用的是 Silent Order Post 信用卡专用测试地址。
- 对照当前文档,逐字检查所有表单字段名及其大小写。
- 确认所有必填卡片字段都随表单直接提交。
- 改用未过期的官方测试卡数据。
- 再次检查
MerchantID、加密密钥和 MAC 是否属于同一环境。 - 如果仍然返回
20500077,请 AXEPTA 确认测试商户是否已启用 Silent Order Post 和信用卡支付方式。
只调整加密算法通常解决不了这个错误。现有响应可以被正确解密,TransID 也被原样返回,说明 AXEPTA 至少已经读取了请求。接下来应集中排查支付方式路由、银行卡字段和商户后台权限。
备注:内容仅供参考。
