支付 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",个人账户使用"2"。 - 检查实际发送到支付网关的最终 JSON,不要只看业务代码中的对象值。
- 确认序列化结果为:
"account_type": "1"
或:
"account_type": "2"
- 不要传入中文描述或自定义枚举名称。
- 如果取值正确但仍然报错,再检查
payee_info.identity_type、银行卡号、开户行信息等字段是否符合银行卡收款场景。
不同支付产品或接口版本可能对银行卡扩展信息有其他限制。如果当前接口的模型定义与上述结构不同,应以该版本的在线文档或生成 SDK 中 BankcardExtInfo 的字段说明为准。
备注:内容仅供参考。