PAYATHON 2026

BNP AXEPTA Silent Order Post 返回 20500077

支付老李

结论

20500077 / NO VALID PAYMETHOD FOUND 表示 AXEPTA 在处理请求时,找不到与当前请求匹配且已为该商户启用的支付方式。

这通常与回调页或响应解密无关。返回结果中的 PayID 全为零,也说明交易还没有进入支付处理阶段,而是在识别支付方式或检查商户配置时被拒绝。

建议先检查这三项:

  1. Silent Order Post 是否提交到了信用卡专用接口,而非 Hosted Payment Page 或通用支付入口。
  2. 卡片字段名是否与当前使用的 AXEPTA 接口文档完全一致。
  3. 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。当前错误出现得更早,应优先排查接口路由、字段识别和商户权限。

建议的排查顺序

  1. 确认使用的是 Silent Order Post 信用卡专用测试地址。
  2. 对照当前文档,逐字检查所有表单字段名及其大小写。
  3. 确认所有必填卡片字段都随表单直接提交。
  4. 改用未过期的官方测试卡数据。
  5. 再次检查 MerchantID、加密密钥和 MAC 是否属于同一环境。
  6. 如果仍然返回 20500077,请 AXEPTA 确认测试商户是否已启用 Silent Order Post 和信用卡支付方式。

只调整加密算法通常解决不了这个错误。现有响应可以被正确解密,TransID 也被原样返回,说明 AXEPTA 至少已经读取了请求。接下来应集中排查支付方式路由、银行卡字段和商户后台权限。

备注:内容仅供参考。