PAYATHON 2026

支付 API 中 BankcardExtInfo 的 accountType 枚举值有哪些?

支付阿杰

结论

BankcardExtInfo.accountType 只支持以下两个固定枚举值:

  • "1":对公银行账户
  • "2":对私银行账户

该字段为字符串类型,应传入字符串 "1" 或 "2"。不要使用中文、英文名称,也不要传入文档未定义的数字。

正确传参方式

收款人使用企业银行账户时:

{
  "payee_info": {
    "identity_type": "BANKCARD_ACCOUNT",
    "identity": "银行账号",
    "bankcard_ext_info": {
      "account_type": "1"
    }
  }
}

收款人使用个人银行账户时:

{
  "payee_info": {
    "identity_type": "BANKCARD_ACCOUNT",
    "identity": "银行账号",
    "bankcard_ext_info": {
      "account_type": "2"
    }
  }
}

在 Java SDK 中同样需要传入字符串:

BankcardExtInfo bankcardExtInfo = new BankcardExtInfo();
bankcardExtInfo.setAccountType("2");

为什么会提示取值不合法

出现以下提示时:

payee_info.bankcard_ext_info.account_type:参数account_type取值不合法

通常与这些情况有关:

  • 传入了 "对公"、"对私"、"PUBLIC" 或 "PRIVATE"。
  • 传入的是枚举说明,而不是固定代码。
  • 使用了数字 1 或 2,但当前 SDK 或网关要求字符串。
  • 字段值中含有空格,例如 "2 "。
  • 收款账户性质与实际开户类型不一致。
  • 请求经过中间对象转换后,account_type 变成了空字符串、布尔值或其他类型。

排查步骤

  1. 根据开户主体确认账户性质。企业账户使用 "1",个人账户使用 "2"。
  2. 检查实际发送到支付网关的最终 JSON,不要只看业务代码中的对象值。
  3. 确认序列化结果为:
"account_type": "1"

或:

"account_type": "2"
  1. 不要传入中文描述或自定义枚举名称。
  2. 如果取值正确但仍然报错,再检查 payee_info.identity_type、银行卡号、开户行信息等字段是否符合银行卡收款场景。

不同支付产品或接口版本可能对银行卡扩展信息有其他限制。如果当前接口的模型定义与上述结构不同,应以该版本的在线文档或生成 SDK 中 BankcardExtInfo 的字段说明为准。

备注:内容仅供参考。