1 文档说明
1.1 文档目的
本文档目的是为宝付商户转账支付定义一个接口规范,以帮助商户技术人员快速接入宝付网关,并快速掌握其相关功能,便于尽快的投入使用。
1.2 阅读对象
- 商户开发人员、维护人员和管理人员
- 宝付转账支付相关的技术人员
1.3 技术支持联系方式
在开发或使用转账支付接口时,如果您有任何技术上的疑问,请按如下方式寻求帮助,宝付技术支持人员会及时处理,给予您答复。 - 技术支持热线:021-68819999-8005
- 技术支持Email:support@baofoo.com
- 技术支持QQ:800066689
1.4 术语与定义
1.4.1 符号含义
序号|符号缩写|符号性质|符号说明
–|:-:|:-:|-
1|M|强制域(Mandatory)|必须填写的属性,否则会被认为格式错误
2|C|条件域(Conditional)|某条件成立时必须填写的属性
3|O|选用域(Optional)|选填属性
4|R|原样返回域(Returned)|必须与先前报文中对应域的值相同的域
1.4.2 术语含义
- 商户号:宝付提供给商户的唯一编号,是商户在宝付的唯一标识。
- 终端号:商户在与宝付签订某项具体产品功能的合作协议自动分配的会员属性,将用于进行具体交易的必要参数。
- 原商户订单号:原先支付时商户请求提交的支付订单号。
- 商户流水号:商户请求宝付时提交的流水号,每次请求均不可重复。
- 商户订单号:商户请求宝付时提交的订单号,当天请求不可重复;
- 宝付交易号:宝付用于一笔订单的唯一标识。
2 业务方案说明
2.1 应用场景
适用于高频付款场景。每次付款仅换附言即可,宝付提供固定的收款账户,为每笔交易分配一个随机码(动态转账附言)。
注:该接口为纯后台模式
2.2 业务流程
1、商户开通转账支付产品,并由商务经理申请配置转账支付随机码收款功能;
2、商户调转账支付随机码下单接口,宝付将商户随机码固定收款子账户及订单唯一对应的随机码返回给商户
3、用户在商户平台进行正常的支付请求,商户向用户展示收款子账户及随机码(银行转账附言)信息;
4、用户通过网银向商户展示的收款子账户转账,并输入 转账附言(随机码);
5、宝付收到用户付款信息后比对 收款户名、收款账号、金额、转账附言如一致,宝付自动完成资金收款并入账至商户账户,不一致则自动将资金原路退款给用户。账号:开通转账支付随机码权限后由宝付分配户名:[商户主体名称]开户银行:支付机构备付金集中存管账户开户城市:上海开户网点:宝付网络-备付金账户行号:991290000793
3.收款子账户交易接口
3.1 转账支付建单(随机码)
3.1.1接口说明
交易URL
测试环境地址:https://vgw.baofoo.com/cutpayment/api/backTransRequest
正式环境地址:https://public.baofoo.com/cutpayment/api/backTransRequest
3.1.2 请求报文
| 序号 | 域名 | 变量名 | 必填 | 备注 |
|---|---|---|---|---|
| 01 | 版本号 | version | M | 4.0.0.0 |
| 02 | 商户号 | member_id | M | 宝付提供给商户的唯一编号 |
| 03 | 终端号 | terminal_id | M | |
| 04 | 交易类型 | txn_type | M | 取值0431 |
| 05 | 交易子类 | txn_sub_type | M | 99 |
| 06 | 加密数据类型 | data_type | M | data_type =xml或json |
| 07 | 加密数据 | data_content | M | 具体参数如下加密数据。注意:加密之前,先将组装的数据(请参照数据模版组装)进行Base64编码转化,然后再进行证书加密。 |
加密数据
| 序号 | 域名 | 变量名 | 必填 | 备注 |
|---|---|---|---|---|
| 01 | 商户号 | member_id | M | 宝付提供给商户的唯一编号 |
| 02 | 终端号 | terminal_id | M | |
| 03 | 交易子类 | txn_sub_type | M | 99 |
| 04 | 商户流水号 | trans_serial_no | M | 8-20 位字母和数字,每次请求都不可重复 |
| 05 | 商户订单号 | trans_id | M | 商户发起的支付订单号 |
| 06 | 支付金额 | order_money | M | 单位:分 |
| 07 | 手续费承担方 | fee_member_id | O | |
| 08 | 回调地址 | notify_url | O | 如果传入,则异步通知使用该url;如果未传入,则不做异步通知 |
| 09 | 接入类型 | biz_type | C | 其他:不填写和默认0000,表示为储蓄卡支付。 |
| 10 | 附加字段 | additional_info | O | |
| 11 | 预留字段 | req_reserved | O |
加密数据模板JSON
{
“member_id”:123564,
“trans_id”:”123456”,
“order_money”:”1000000”,
}
3.1.3返回报文说明
| 序号 | 参数含义 | 参数名称 | 必填 | 参数备注 |
|---|---|---|---|---|
| 01 | 应答码 | resp_code | M | 应答码为0000时,表示订单预提交成功 |
| 02 | 应答信息 | resp_msg | M | |
| 03 | 版本号 | version | R | |
| 04 | 商户号 | member_id | R | 宝付提供给商户的唯一编号 |
| 05 | 终端号 | terminal_id | R | |
| 06 | 接入类型 | biz_type | R | |
| 07 | 数据类型 | data_type | R | xml/json |
| 08 | 交易类型 | txn_type | R | 取值0431 |
| 09 | 交易子类 | txn_sub_type | R | 99 |
| 10 | 商户流水号 | trans_serial_no | R | 8-20 位字母和数字,每次请求都不可重复 |
| 11 | 商户订单号 | trans_id | R | 商户订单号 |
| 12 | 宝付订单号 | order_id | O | |
| 13 | 银行附言 | bank_remark | C | 随机码 |
| 14 | 收款子账号 | payee_acct_code | C | |
| 15 | 收款子账户户名 | payee_acct_name | C | |
| 16 | 开户行号 | cnaps_code | C | 固定值:991290000793 |
| 17 | 开户网点 | acct_dept | C | 固定值:宝付网络-备付金账户 |
| 18 | 附加字段 | additional_info | O | |
| 19 | 预留字段 | req_reserved | R |
解密后报文JSON
{
“additional_info”: “”,
“data_type”: “json”,
“member_id”: “100000178”,
“order_id”: 25960005451,
“req_reserved”: “”,
“resp_code”: “0000”,
“resp_msg”: “交易成功”,
“terminal_id”: “100000935”,
“trans_id”: “20250512185554509600”,
“trans_serial_no”: “202505121855545098902”,
“txn_sub_type”: “99”,
“txn_type”: “0431”,
“version”: “4.0.0.0”
}
3.2转账支付订单查询接口
3.2.1接口说明
交易URL
测试环境地址:https://vgw.baofoo.com/cutpayment/api/backTransRequest
正式环境地址:https://public.baofoo.com/cutpayment/api/backTransRequest
3.2.2 请求报文
| 序号 | 域名 | 变量名 | 必填 | 备注 |
|---|---|---|---|---|
| 01 | 版本号 | version | M | 4.0.0.0 |
| 02 | 商户号 | member_id | M | 宝付提供给商户的唯一编号 |
| 03 | 终端号 | terminal_id | M | |
| 04 | 交易类型 | txn_type | M | 取值0431 |
| 05 | 交易子类 | txn_sub_type | M | 40 |
| 06 | 加密数据类型 | data_type | M | data_type =xml或json |
| 07 | 加密数据 | data_content | M | 具体参数如下加密数据。 |
加密数据
| 序号 | 域名 | 变量名 | 必填 | 备注 |
|---|---|---|---|---|
| 01 | 交易子类 | txn_sub_type | M | 40 |
| 02 | 商户号 | member_id | M | 宝付提供给商户的唯一编号 |
| 03 | 终端号 | terminal_id | M | |
| 04 | 商户订单号 | trans_id | M | 商户发起的支付订单号 |
| 05 | 商户流水号 | trans_serial_no | M | 8-20 位字母和数字,每次请求都不可重复 |
| 06 | 接入类型 | biz_type | C | 其他:不填写和默认0000,表示为储蓄卡支付。 |
| 07 | 请求方保留域 | req_reserved | O | |
| 08 | 附加字段 | additional_info | O |
3.2.3 应答报文
| 序号 | 参数含义 | 参数名称 | 必填 | 参数备注 |
|---|---|---|---|---|
| 01 | 应答码 | resp_code | M | 0000表示交易成功,仅代表查询订单状态成功,不代表订单支付成功,具体订单什么状态需要看state的值,具体参考下面state各状态代表的含义 |
| 02 | 应答信息 | resp_msg | M | |
| 03 | 商户订单号 | trans_id | R | 商户订单号 |
| 04 | 终端号 | terminal_id | R | |
| 05 | 交易类型 | txn_type | R | 取值0431 |
| 06 | 交易子类 | txn_sub_type | R | 40 |
| 07 | 数据类型 | data_type | R | xml/json |
| 08 | 版本号 | version | O | |
| 09 | 附加字段 | additional_info | O | |
| 10 | 预留字段 | req_reserved | O | |
| 11 | 商户号 | member_id | M | 宝付提供给商户的唯一编号 |
| 12 | 商户流水号 | trans_serial_no | R | 8-20 位字母和数字,每次请求都不可重复 |
| 13 | 接入类型 | biz_type | R | |
| 14 | 订单状态 | state | M | 订单的状态:0:待确认(预下单时的状态),1:成功,2:失败,3:待处理,4:已取消 |
| 15 | 成功时间 | succ_time | O | 仅state=1时即订单已经加值成功的时候才有成功时间,其余状态为空值 |
| 16 | 银行流水号 | bank_serial_no | M | 交易子类40传版本号4.0.0.1 返回此值-交易状态成功时返回 |
| 17 | 失败原因 | fail_reason | M | 交易子类40传版本号4.0.0.1 返回此值-交易状态失败时返回 |
| 18 | 银行附言 | bank_remark | C | 随机码模式返回 |
| 19 | 收款子账号 | payee_acct_code | C | 随机码模式返回 |
| 20 | 收款子账户户名 | payee_acct_name | C | 随机码模式返回 |
| 21 | 开户行 | cnaps_code | C | 随机码模式返回 |
| 22 | 开户网点 | acct_dept | C | 随机码模式返回 |
3.3 转账支付异步通知
3.3.1 功能说明
将结果异步通知给商户
3.3.2 通知报文
member_id= 100000178&terminal_id=1000938&data_content=09f27e40024994307c854b5bff54fdbb79e7ed9900e6013e58a816e31ef39088f42417a5d87d05e01508b93bea5be2af8fa0562b8259b07eff3fb61fee70d69a5550561731b6bf1319a98091180490d6fd783af72d20e7bf53e3b924f6455f93d7234fff06fef004f05e6795903e21535a1b19fa75473fc99a8b8ff2aadc146f85bf2bb168ccfa724a77e24f4aea12ed0634b4810feed3c1c799bdbd03b98c8378ca5fa68efd1bccd54d8f9a7ad80912f8e5c29ff74f0b8bef247c4e4319f8778366f06f3b547f9586bf229e3b15bd38523999bb58f9c11fd68df33da5ad5d99f6a528c69b178248804da25b082ab08f9c504a4db70139f1a540614fa21cebb3
解密后报文
- Xml格式
<result> <resp_code>0000</resp_code> <resp_msg>成功</resp_msg> <memberTransId>test0000000000a01</memberTransId> <state>1</state> <orderMoney>1.01</orderMoney> <succTime>20170808143943</succTime> </result> - Json格式
{ "resp_code":"0000" "resp_msg":"成功" "memberTransId":"test0000000000a01", "orderMoney":"1.01", "state":"1", "succTime":"20170808143943" }
加密数据
| 序号 | 域名 | 变量名 | 必填 | 备注 |
|---|---|---|---|---|
| 01 | 应答码 | resp_code | M | |
| 02 | 应答信息 | resp_msg | M | |
| 03 | 商户订单号 | memberTransId | M | |
| 03 | 订单金额 | orderMoney | M | 单位:元 |
| 04 | 状态 | state | M | 1:成功 2:失败 |
| 05 | 成功时间 | succTime | M | yyyyMMddHHmmss |
| 06 | 银行流水号 | bank_serial_no | M | 交易子类98传版本号4.0.0.1 返回此值-交易状态成功时返回 |
| 07 | 失败原因 | fail_msg | M | 交易子类98传版本号4.0.0.1 返回此值-交易状态失败时返回 |
| 08 | 失败码 | fail_code | M | 交易子类98传版本号4.0.0.1 返回此值-交易状态失败时返回 4:风控审核不通过 6:超时关单 |
| 09 | 随机码 | bank_remark | C | 随机码模式返回 |
注:
宝付将掉单或超时的订单取出,补发支付结果(结果有成功和失败,不是仅仅发支付成功的订单,请商户务必要根据应答码判断支付结果是成功还是失败,再进行正确的处理),以GET和POST方式发送到商户配置的接收地址,商户接收到支付结果,并且进行相应处理之后,需要商户接收通知的地址在页面上输出 OK 表示接收成功<除了 OK 无任何其他内容>,告诉宝付已经成功接收并处理完毕,宝付系统在未得到商户接收通知成功的反馈时,将通过重发机制再次通知商户(重发次数 2~10 次,请以第一次收到的支付成功的消息为准,避免进行多次充值或支付),直到商户接收成功或达到最大重发次数为止。
3.6 收款子账号入金通知
3.6.1 接口说明
该接口用于接收收款子账号入金银行流水通知
3.6.2 应答报文
| 序号 | 参数含义 | 参数名称 | 必填 | 参数备注 |
|---|---|---|---|---|
| 01 | 数据域 | data_content | M | 加密数据 |
加密数据
请求响应结果的数据类型根据请求参数字段“data_type”来决定,输出内容包括
| 序号 | 域名 | 变量名 | 必填 | 备注 |
|---|---|---|---|---|
| 01 | 应答码 | resp_code | M | 具体参见附录1:应答码 |
| 02 | 应答信息 | resp_msg | M | 填写具体的应答信息 |
| 03 | 商户号 | member_id | M | 宝付提供给商户的唯一编号 |
| 04 | 终端号 | terminal_id | M | |
| 05 | 支付金额 | order_money | M | 单位:分 |
| 06 | 收款方账户号 | payee_acct_code | M | |
| 07 | 付款方账户号 | payer_acct_code | M | |
| 08 | 付款方开户名 | payer_user_name | M | |
| 09 | 银行流水号 | bank_serial_no | M | |
| 10 | 银行到账时间 | bank_time | M | |
| 11 | 银行附言 | bank_remark | C |
3.7 收款子账号银行流水退款通知
3.7.1 功能说明
该接口异步通知场景是针对用户通过网银将交易资金付款到商户的收款账户(我司给商户分配的收款账户),因商户建单超时或用户转账卡号中风控等原因导致转账资金流水无法登记到商户账户下的原路退回场景给商户发送的退款通知
异步通知以POST方式发送到商户配置的接收地址,商户接收到支付结果,并且进行相应处理之后,需要商户接收通知的地址在页面上输出 OK 表示接收成功<除了 OK 无任何其他内容>,告诉宝付已经成功接收并处理完毕,宝付系统在未得到商户接收通知成功的反馈时,将通过重发机制再次通知商户(重发次数 2~10 次,请以第一次收到的支付成功的消息为准,避免进行多次充值或支付),直到商户接收成功或达到最大重发次数为止。
3.7.2 通知报文
{“data_content”:”384e97a6d316e841838c49580ccb614182f8721cc6ead8d445fff3cd78065d36c098aac2e93e3e38914e40dddba09e1a1d0e22859b2ae035cfaf7fd6ba387d4a1ed274d66c9a6913553297bee86e156c8a6b3bcf98c8991d49372283eb08379774cec6c430e0e1cd00a1a4160e07fea99dfc0047863d76be0f6f33b546025e77857b7230e6b1ad4f40dcad369e1d78211caca305104cdde6d03b5279c91d49a8fc835626c9e569eadfe2724d48f7116880558b75e05fd64d9005765a3ee41ea79acf9d57d0c0858c623fde08ff697f29ea407af76538df38e4fe48caf376119f6e2109be946f5fb1965a6447931d1ccdabf853362f4bf58d3aa3c3eadbe638e333ee65a5cf44f69f60ba477b9553a01b0527b589212af23932fc8775a27b11222e61397e27c93928f92f08ac69b9add28bd360892601bc7fff063f878060e7f5ec0694e7df7f0bacaff5aa74cc62305e6206aa9e484505e31ba63dabc37984f58aab11f6ceec74a71b64874b8dbe8f371d7931c9c17905e1156f6a11a92ebecc6cb92afe6af450054c84ca92aa199e123a6dce83c1cdf6387a020000d2d66a0072f825acda029cccdd3db4302c9bfc64aab94d0ca25b4861abf39352ea29ad8624c1274643c96695a2059f6f2099b5f86340077d3e63154b13e9f935c131afaec799fac2d5da60f4030922984d4472048637da5adacd6701d4dd8d6fc2997e83”,”member_id”:”120838”,”terminal_id”:”23462”}
解密后报文
- Json格式
{"resp_code":"0000","resp_msg":"成功","member_id":"120838","payee_acct_code":"68010200008001","order_money":"0.22","order_time":"20250909191653","bank_serial_no":"101011D511757416611137852","refund_money":"0.22","refund_succ_time":"20250909202002","refund_reason":"超时退款","payerUserName":"*婷婷","payerAcctCode":"621700*********0704"}
加密数据
| 序号 | 域名 | 变量名 | 必填 | 备注 |
|---|---|---|---|---|
| 01 | 返回状态码 | resp_codememberTransId | M | 固定”0000” |
| 02 | 返回信息 | resp_msg | M | 固定”成功” |
| 03 | 商户号 | member_id | M | |
| 04 | 收款方账户号 | payeeAcctCode | M | |
| 05 | 订单金额 | order_money | M | |
| 06 | 订单交易时间 | order_time | M | |
| 07 | 银行流水号 | bank_serial_no | M | |
| 08 | 退款金额 | refund_money | M | |
| 09 | 退款时间 | refund_succ_time | M | |
| 10 | 退款原因 | refund_reason | M | |
| 11 | 付款方账户号 | payerAcctCode | M | |
| 12 | 付款方户名 | payerUserName | M | |
| 13 | 银行附言 | bank_remark | C |
附录
1 应答码
- 交易成功类
| 错误码 | 含义 |
|---|---|
| 0000 | 成功 |
| BF00114 | 订单已支付成功,请勿重复支付 |
| BF00338 | 分账成功 |
| BF00339 | 已分账 |
- 交易结果暂未知,需查询类
| 错误码 | 含义 |
|---|---|
| BF00100 | 系统异常,请联系宝付 |
| BF00112 | 系统繁忙,请稍后再试 |
| BF00113 | 交易结果未知,请稍后查询 |
| BF00115 | 交易处理中,请稍后查询 |
| BF00144 | 该交易有风险,订单处理中 |
| BF00202 | 交易超时,请稍后查询 |
| BF00399 | 订单已存在,请勿重复提交 |
- 交易失败,无需查询类
2 银行编码
| 银行代码 | 银行名称 |
|---|---|
| ICBC | 中国工商银行 |
| ABC | 中国农业银行 |
| CCB | 中国建设银行 |
| BOC | 中国银行 |
| BCOM | 中国交通银行 |
| CIB | 兴业银行 |
| CITIC | 中信银行 |
| CEB | 中国光大银行 |
| PAB | 平安银行 |
| PSBC | 中国邮政储蓄银行 |
| SHB | 上海银行 |
| SPDB | 浦东发展银行 |
| CMBC | 民生银行 |
| CMB | 招商银行 |
| GDB | 广发银行 |
| HXB | 华夏银行 |
| HZB | 杭州银行 |
| BOB | 北京银行 |
| NBCB | 宁波银行 |
| JSB | 江苏银行 |
| ZSB | 浙商银行 |
3 交易子类
| 取值 | 交易子类 |
|---|---|
| 40 | 转账支付订单查询 |
| 99 | 转账支付随机码下单 |
4 匹配码规则
规则:2位的商户编码 + 36进制编码(当前时间与基准时间差36进制转大写)
注:1.商户编码由宝付生成并提供,请联系宝付技术支持
2. 36进制编码规则及demo请联系宝付技术支持5 订单重复性校验
宝付为了确保交易能够准确的通知到商户,有可能会重复发送通知消息,为此宝付提醒商户,采取正确的防重复校验。
大多数校验通知都采取先查询后更新的方式,这种方式存在一个很大的漏洞,当多个通 知请求在很短的一个时间内达到时,查询数据有可能是脏数据,导致订单重复更新,后续工 作重复执行。
对于此种情况,宝付结合自身校验情况,分享两个校验方式。
1) 如果是单线程或者订单资源在一个共享区域,那么可以采取锁定资源的方式,每次 调用加锁,每次调用完毕解锁。
2) 大部分数据都存在数据库,宝付绝大多数都是这种情况,利用数据库的特性来控制, 在我们调用数据库更新信息时,数据库会返回给我们更新条目数,我们利用这个特性,这样 操作,当我们更新订单时,把这个订单的原始状态作为条件进行更新,当我们短时间内操作 更新时,第二次更新必然不成功,因为条件不满足了,状态变了,那么数据库在第二次就会 返回更新数量为0,这样我们就发现问题了,这就是熟称的“乐观锁”。
0 个附件