接口会根据支付订单情况自动判断退款或撤销。退款交易适用于已成功的支付交易,有效期一般有几个月,不同的支付平台有所差异;撤销适用于所有状态的支付交易,但是有效期只有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>
<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 ->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) | 交易成功时候,必填 | 可空 |
标准接口会因业务升级需要而新增节点,请在解析返回报文时避免新增未知节点产生的程序出错!