接口会根据支付订单情况自动判断退款或撤销。退款交易适用于已成功的支付交易,有效期一般有几个月,不同的支付平台有所差异;撤销适用于所有状态的支付交易,但是有效期只有24小时。
交易请求报文
<?xml version="1.0" encoding="GBK"?><business_trans><request_type>barcode_reverse_request</request_type><isspid>39493002</isspid><pos_id>1511300001</pos_id><store_id>1511300001</store_id><pos_seq>1511300000004</pos_seq><user_id>user01</user_id><system_id>8888</system_id><barcode_reverse_request><pay_type>502</pay_type><tx_amt>10</tx_amt><org_pos_seq>1511300000001</org_pos_seq><goods_detail><![CDATA[商品信息(JSON)]]></goods_detail><extend_params><![CDATA[扩展参数]]></extend_params></barcode_reverse_request></business_trans>
交易请求报文说明
| 节点名称 | 中文名称 | 类型 | 说明 | 是否必填 |
|---|---|---|---|---|
| request_type | 请求类型 | String(32) | 标识请求报文的类型,固定为barcode_reverse_request | 必填 |
| isspid | 商户号 | String(8) | 翼码平台分配的商户号 | 必填 |
| pos_id | 终端号 | String(20) | 终端号 | 必填 |
| store_id | 门店号 | String(20) | 门店号 | 必填 |
| pos_seq | 终端流水号 | String(32) | 同一个商户必须唯一,且大于12位 | 必填 |
| user_id | 操作员标识 | String(20) | 操作员号 | 可空 |
| system_id | 系统平台号 | String(4) | 由翼码提供 | 必填 |
| barcode_reverse_request ->pay_type | 支付类型 | String(3) | 502:支付宝支付 503:微信支付 504:翼支付 507:和包支付 508:和包验证码支付 512:银联二维码 514:招行掌上生活 515:微信小程序 516:数字人民币 519:会员余额支付 传空时自动识别 | 可空 |
| barcode_reverse_request ->tx_amt | 交易金额 | Number(9) | 条码支付金额,单位为分,不支持小数点 | 必填 |
| barcode_reverse_request ->org_pos_seq | 需要退款交易的流水号 | String(32) | 需要退款的原支付流水号,且大于12位 | 必填 |
| barcode_reverse_request ->goods_detail | 退款商品信息 | String(6000) | 需要退款的商品信息列表,以JSON格式传入 若传入信息带特殊字符请使用CDATA标签包裹内容 详细参数见下表 | 可空 |
| barcode_reverse_request ->extend_params | 扩展参数 | String | 用于扩展一些特殊的支付参数字段,以JSON格式传入 XML报文若传入信息带特殊字符请使用CDATA标签包裹内容 详细参数见下表 | 可空 |
goods_detail 商品信息 (JSONArray)
| 参数 | 类型 | 说明 | 是否必填 | 范例 |
|---|---|---|---|---|
| goods_id | String(32) | 商品的编号 | 必填 | apple-01 |
| payment_goods_id | String(32) | 支付平台商品编号 | 可空 | 20010001 |
| goods_name | String(256) | 商品名称 | 必填 | ipad |
| quantity | Number(9) | 商品数量 | 必填 | 1 |
| price | Number(8) | 商品单价,单位为分 | 必填 | 200000 |
| goods_category | String(24) | 商品类目 仅支付宝时生效 | 可空 | 34543238 |
| body | String(1000) | 商品描述信息 仅支付宝时生效 | 可空 | 特价手机 |
| show_url | String(400) | 商品的展示地址 仅支付宝时生效 | 可空 | http://www.alipay.com/xxx.jpg |
goods_detail 样例:
[{"goods_id" : "apple-01","payment_goods_id" : "20010001","goods_name" : "ipad","quantity" : 1,"price" : 200000,"goods_category" : "34543238","body" : "特价手机","show_url" : "http://www.alipay.com/xxx.jpg"},{"goods_id" : "apple-02","payment_goods_id" : "20010002","goods_name" : "ipad2","quantity" :"1,"price" : 200000,"goods_category" : "34543239","body" : "特价手机2","show_url" : "http://www.alipay.com/xxx2.jpg"}]
extend_params 扩展参数 (JSON)
| JSON节点 | 类型 | 说明 | 是否必填 | 范例 |
|---|---|---|---|---|
| split_info | JSON | 分账信息 有实时分账的交易在部分退款时,退款必须传入分账信息 部分支付通道不支持分账金额退回 | 可空 |
split_info 分账信息
| JSON节点 | 类型 | 说明 | 是否必填 | 范例 |
|---|---|---|---|---|
| keep_amt | String | 从分账方自留金额中退款的金额,单位为分,可传0表示不从自留中退 | 必填 | 1000 |
| split_list | Array | 分账明细 | 可空 |
split_list 分账明细
| JSON节点 | 类型 | 说明 | 是否必填 | 范例 |
|---|---|---|---|---|
| merchant_id | String | 分账接收方的分账商户号 | 必填 | 10000000000001 |
| div_amt | String | 从分账金额中退款的金额,单位为分,必须大于0 | 必填 | 1000 |
extend_params 样例:
{"split_info": {"keep_amt": "800","split_list": [{"merchant_id": "10000000000001","div_amt": "150"},{"merchant_id": "10000000000002","div_amt": "50"}]}}
交易返回报文
<?xml version="1.0" encoding="GBK"?><business_trans><response_type>barcode_reverse_response</response_type><isspid>39493002</isspid><pos_id>123456789</pos_id><pos_seq>000000000001</pos_seq><sys_seq>000000000244</sys_seq><trans_time>20090405010104</trans_time><pay_type>502</pay_type><alipay_res_info><trade_no>2014110721001004640000791910</trade_no><out_trade_no>2014110721001004640000791910</out_trade_no><detail_error_code></detail_error_code><detail_error_desc></detail_error_desc></alipay_res_info><wxpay_res_info><trade_no>4220010308201904025663166425</trade_no><out_trade_no>2014110721001004640000791910</out_trade_no><app_id>2014110721001004640000791910</app_id><mch_id>2014110721001004640000791910</mch_id><settlement_total_fee>10</settlement_total_fee><settlement_refund_fee>10</settlement_refund_fee><detail_error_code></detail_error_code><detail_error_desc></detail_error_desc></wxpay_res_info><wxapp_res_info><trade_no>4220010308201904025663166425</trade_no><out_trade_no>2014110721001004640000791910</out_trade_no><atu_trade_no>2018111522001429701012895360</atu_trade_no><atu_out_trade_no>1811150000001</atu_out_trade_no><app_id>2014110721001004640000791910</app_id><mch_id>2014110721001004640000791910</mch_id><settlement_total_fee>10</settlement_total_fee><settlement_refund_fee>10</settlement_refund_fee><detail_error_code></detail_error_code><detail_error_desc></detail_error_desc></wxapp_res_info><yzf_res_info><out_trade_no>2014110721001004640000791910</out_trade_no><detail_error_code>FAIL</detail_error_code><detail_error_desc>退款失败</detail_error_desc></yzf_res_info><cmpay_res_info><out_trade_no>0001034843100000001963</out_trade_no><detail_error_code></detail_error_code><detail_error_desc></detail_error_desc><send_back_fee>1</send_back_fee></cmpay_res_info><umpay_res_info><trade_no></trade_no><out_trade_no>0001034843100000001964</out_trade_no><detail_error_code></detail_error_code><detail_error_desc></detail_error_desc></umpay_res_info><upay_res_info><trade_no>15415906</trade_no><out_trade_no>1000000000511</out_trade_no></upay_res_info><cmb_res_info><trade_no>190419135176132382298112</trade_no><out_trade_no>201904191391123546</out_trade_no></cmb_res_info><ecny_res_info><trade_no>15415906</trade_no><out_trade_no>1000000000511</out_trade_no></ecny_res_info><balpay_res_info><trade_no>15415906</trade_no><out_trade_no>1000000000511</out_trade_no></balpay_res_info><result><id>0000</id><comment>成功</comment></result></business_trans>
交易返回报文说明
标准接口会因业务升级需要而新增节点,请在解析返回报文时避免新增未知节点产生的程序出错!
| 节点名称 | 中文名称 | 类型 | 说明 | 是否必填 |
|---|---|---|---|---|
| response_type | 返回类型 | String(32) | 标识返回报文的类型,固定为barcode_reverse_response | 必填 |
| isspid | 商户号 | String(8) | 翼码平台分配的商户号 | 必填 |
| pos_id | 终端号 | String(20) | 终端号 | 必填 |
| pos_seq | 终端流水号 | String(32) | 终端交易流水号,和请求报文中的交易流水号相同 | 必填 |
| sys_seq | 平台流水号 | String(16) | 由翼码平台产生,供跟踪之用 | 必填 |
| trans_time | 交易时间 | String(14) | 交易时间,格式:yyyyMMddHHmmss | 必填 |
| pay_type | 支付类型 | String(3) | 502:支付宝支付 503:微信支付 504:翼支付 507:和包支付 508:和包验证码支付 512:银联二维码 514:招行掌上生活 515:微信小程序 516:数字人民币 519:会员余额支付 | 必填 |
| result ->id | 响应码 | String(4) | 翼码平台返回的处理结果 0000-成功 9998-退款处理中,需要调用退款查询交易确认退款结果 其它为失败,错误信息说明见“响应码解释”字段 | 必填 |
| result ->comment | 响应码解释 | String(64) | 响应码对应中文注解,用于显示提示 | 必填 |
| 支付宝支付的时候 | 返回以下数据 | |||
| alipay_res_info ->trade_no | 支付平台处理流水 | String(64) | 交易成功时候,必填 | 可空 |
| alipay_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| alipay_res_info ->detail_error_code | 支付详细错误码 | String(48) | ||
| alipay_res_info ->detail_error_desc | 支付详细错误码说明 | String(64) | ||
| 微信支付的时候 | 返回以下数据 | |||
| wxpay_res_info ->trade_no | 支付平台处理流水 | String(64) | 交易成功时候,必填 | 可空 |
| wxpay_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| wxpay_res_info ->detail_error_code | 支付详细错误码 | String(48) | 交易成功时候,必填 | 可空 |
| wxpay_res_info ->detail_error_desc | 支付详细错误码说明 | String(128) | 交易成功时候,必填 | 可空 |
| wxpay_res_info ->settlement_total_fee | 应结订单金额 | String(16) | 应结订单金额=订单金额-免充值代金券金额,应结订单金额<=订单金额。 单位为分,微信有值时返回 | 可空 |
| wxpay_res_info ->settlement_refund_fee | 退款金额 | String(16) | 去掉非充值代金券退款金额后的退款金额,退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额 单位为分,微信有值时返回 | 可空 |
| wxpay_res_info ->app_id | 微信公众帐号 | String(32) | 交易成功时候,必填 | 可空 |
| wxpay_res_info ->mch_id | 微信商户帐号 | String(32) | 交易成功时候,必填 | 可空 |
| 微信小程序的时候 | 返回以下数据 | |||
| wxapp_res_info ->trade_no | 支付平台处理流水 | String(64) | 交易成功时候,必填 | 可空 |
| wxapp_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| wxapp_res_info ->atu_trade_no | ATU订单号 | String(64) | 支付宝/微信/银联订单号 客户手机支付凭证上的订单号 | 可空 |
| wxapp_res_info ->atu_out_trade_no | ATU商户订单号 | String(64) | 支付宝/微信/银联商户订单号 客户手机支付凭证上的商户订单号 | 可空 |
| wxapp_res_info ->detail_error_code | 支付详细错误码 | String(48) | 交易成功时候,必填 | 可空 |
| wxapp_res_info ->detail_error_desc | 支付详细错误码说明 | String(128) | 交易成功时候,必填 | 可空 |
| wxapp_res_info ->settlement_total_fee | 应结订单金额 | String(16) | 应结订单金额=订单金额-免充值代金券金额,应结订单金额<=订单金额。 单位为分,微信有值时返回 | 可空 |
| wxapp_res_info ->settlement_refund_fee | 退款金额 | String(16) | 去掉非充值代金券退款金额后的退款金额,退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额 单位为分,微信有值时返回 | 可空 |
| wxapp_res_info ->app_id | 微信公众帐号 | String(32) | 交易成功时候,必填 | 可空 |
| wxapp_res_info ->mch_id | 微信商户帐号 | String(32) | 交易成功时候,必填 | 可空 |
| 翼支付的时候 | 返回以下数据 | |||
| yzf_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| yzf_res_info ->detail_error_code | 支付详细错误码 | String(48) | 交易成功时候,必填 | 可空 |
| yzf_res_info ->detail_error_desc | 支付详细错误码说明 | String(128) | 交易成功时候,必填 | 可空 |
| 和包支付的时候 | 返回以下数据 | |||
| cmpay_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| cmpay_res_info ->send_back_fee | 买家退款金额 | String(16) | 交易成功时候,必填,单位为分 | 可空 |
| 和包验证码支付的时候 | 返回以下数据 | |||
| umpay_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| 银联二维码支付的时候 | 返回以下数据 | |||
| upay_res_info ->trade_no | 支付平台处理流水 | String(64) | 交易成功时候,必填 | 可空 |
| upay_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| 招行掌上生活的时候 | 返回以下数据 | |||
| cmb_res_info ->trade_no | 支付平台处理流水 | String(64) | 交易成功时候,必填 | 可空 |
| cmb_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| 数字人民币支付的时候 | 返回以下数据 | |||
| ecny_res_info ->trade_no | 支付平台处理流水 | String(64) | 交易成功时候,必填 | 可空 |
| ecny_res_info ->out_trade_no | 支付交易请求流水 | String(64) | 交易成功时候,必填 | 可空 |
| 会员余额支付的时候 | 返回以下数据 | |||
| balpay_res_info ->trade_no | 支付平台订单号 | String(64) | 交易成功时候,必填 | 可空 |
| balpay_res_info ->out_trade_no | 支付商户订单号 | String(64) | 交易成功时候,必填 | 可空 |
标准接口会因业务升级需要而新增节点,请在解析返回报文时避免新增未知节点产生的程序出错!


