交易请求报文
<?xml version="1.0" encoding="GBK"?>
<business_trans>
<request_type>unifiedorder_request</request_type>
<isspid>39493002</isspid>
<pos_id>1511300001</pos_id>
<store_id>1511300001</store_id>
<pos_seq>15113000000002</pos_seq>
<user_id>user01</user_id>
<system_id>8888</system_id>
<device_ip>127.0.0.1</device_ip>
<unifiedorder_request>
<pay_type>515</pay_type>
<trade_type>JSAPI</trade_type>
<tx_amt>1</tx_amt>
<buyer_id>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</buyer_id>
<goods_detail><![CDATA[商品信息(JSON)]]></goods_detail>
<notify_url><![CDATA[http://www.baidu.com/]]></notify_url>
<extend_params><![CDATA[扩展参数]]></extend_params>
</unifiedorder_request>
</business_trans>
交易请求报文说明
节点名称 | 中文名称 | 类型 | 说明 | 是否必填 |
---|---|---|---|---|
request_type | 请求类型 | String(32) | 标识请求报文的类型,固定为unifiedorder_request | 必填 |
isspid | 商户号 | String(8) | 接入SP的ID号,由翼码平台分配给ipos接入受理商户的机构号(原值返回) | 必填 |
pos_id | 终端号 | String(20) | 终端号 | 必填 |
store_id | 门店号 | String(20) | 门店号 | 必填 |
pos_seq | 终端流水号 | String(32) | 同一个商户必须唯一,且大于12位 | 必填 |
user_id | 操作员标识 | String(20) | 操作员号 | 可空 |
system_id | 系统平台号 | String(4) | 由翼码提供 | 必填 |
device_ip | 设备IP | String(15) | 发起交易的门店公网IP 根据央行要求必须传门店真实公网IP 否则商家会被风控!!! | 可空 |
unifiedorder_request ->pay_type | 支付类型 | String(3) | 515:微信小程序 | 必填 |
unifiedorder_request ->trade_type | 交易类型 | String(16) | 微信小程序取值如下:JSAPI | 必填 |
unifiedorder_request ->buyer_id | 用户标识 | String(128) | 微信小程序:用户在商户appid下的唯一标识(openid) | 必填 |
unifiedorder_request ->goods_detail | 商品信息 | String(6000) | 订单包含的商品信息列表,以JSON格式传入 若传入信息带特殊字符请使用CDATA标签包裹内容 详细参数见下表 | 可空 |
unifiedorder_request ->tx_amt | 交易金额 | Number(9) | 支付金额,单位为分,不支持小数点 | 必填 |
unifiedorder_request ->notify_url | 异步通知地址 | String(256) | 通知地址建议使用CDATA标签包裹内容 异步通知文档见4.19 | 可空 |
unifiedorder_request ->extend_params | 扩展参数 | String | 用于扩展一些特殊的支付参数字段,以JSON格式传入 若传入信息带特殊字符请使用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节点 | 类型 | 说明 | 是否必填 | 范例 |
---|---|---|---|---|
hb_fq_num | String | 花呗分期数,仅支持传入3、6、12,其他期数暂不支持 仅支付宝时生效 hb_fq_num与hb_fq_seller_percent必须同时传入且使用花呗分期商品明细必传 | 可空 | 3 |
hb_fq_seller_percent | String | 花呗卖家承担收费比例,商家承担手续费传入100,用户承担手续费传入0,仅支持传入100、0两种,其他比例暂不支持 仅支付宝时生效 hb_fq_num与hb_fq_seller_percent必须同时传入且使用花呗分期商品明细必传 | 可空 | 100 |
split_flag | String | 分账标识 N:不分账 R:实时分账 D:延时分账 不传该节点时,将按控制台配置处理 该节点与分账功能相关具体联系业务确认开通功能 | 可空 | R |
split_info | JSON | 分账信息 仅支持请求实时分账split_flag=R 该节点与分账功能相关具体联系业务确认开通功能 | 可空 |
分账业务相关的特别说明:
1. split_flag=N 不分账时,split_info不允许传入;
2. split_flag=R 实时分账时,split_info必传,其中keep_amt与div_amt叠加必须全额分完整笔订单;
3. split_flag=D 延时分账时,split_info不允许传入,在后续流程中调用延迟交易确认接口完成分账,或使用翼码分账系统界面进行分账。
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_flag": "R",
"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>unifiedorder_response</response_type>
<isspid>39493002</isspid>
<pos_id>1511300001</pos_id>
<pos_seq>1511300000002</pos_seq>
<sys_seq>0311095321465179</sys_seq>
<trans_time>20160311095321</trans_time>
<pay_type>515</pay_type>
<pay_id>wx1712341601086258515448c31980502232</pay_id>
<nonce_str>lj1v8w5rqdiftm8zst5gwhjbvebcvyhl</nonce_str>
<time_stamp>1571286856</time_stamp>
<sign_type>MD5</sign_type>
<pay_sign><![CDATA[9280696fced8329af66d7be472f9e7f6]]></pay_sign>
<result>
<id>9998</id>
<comment>下单成功,等待用户支付</comment>
</result>
</business_trans>
交易返回报文说明
标准接口会因业务升级需要而新增节点,请在解析返回报文时避免新增未知节点产生的程序出错!
节点名称 | 中文名称 | 类型 | 说明 | 是否必填 |
---|---|---|---|---|
response_type | 返回类型 | String(32) | 标识返回报文的类型,固定为unifiedorder_response | 必填 |
isspid | 商户号 | String(8) | 接入SP的ID号,为翼码平台的提供的业务商机构号 | 必填 |
pos_id | 终端号 | String(20) | 终端号 | 必填 |
pos_seq | 终端流水号 | String(32) | 终端交易流水号,和请求报文中的交易流水号相同 | 必填 |
sys_seq | 平台流水号 | String(16) | 由翼码平台产生,供跟踪之用 | 必填 |
trans_time | 交易时间 | String(14) | 交易时间,格式:yyyyMMddHHmmss | 必填 |
pay_type | 支付类型 | String(3) | 515:微信小程序 | 必填 |
pay_id | 交易标识id | String(64) | 微信小程序:微信生成的预支付回话标识(prepay_id) 下单成功时必填 | 可选 |
nonce_str | 随机字符串 | String(32) | 微信小程序下单成功时必填 | 可选 |
time_stamp | 时间戳 | String(10) | 微信小程序下单成功时必填 | 可选 |
sign_type | 签名方式 | String(10) | 微信小程序下单成功时必填 | 可选 |
pay_sign | 支付签名 | String(32) | 微信小程序下单成功时必填 XML报文时将使用CDATA标签包裹 | 可选 |
result->id | 响应码 | String(4) | 9998 - 下单成功等待用户支付,需调用查询接口确认交易 其它失败,错误信息说明见“响应码解释”字段 | 必填 |
result->comment | 响应码解释 | String(64) | 响应码对应中文注解,用于显示提示 | 必填 |
标准接口会因业务升级需要而新增节点,请在解析返回报文时避免新增未知节点产生的程序出错!
服务商模式的微信小程序调用支付特别说明
由于微信小程序支付在服务商模式下,在小程序调起支付API时计算签名字段(paySign)必须使用服务商的key,因此由服务商计算好入参与签名后返回给商户进行调用。
调用wx.requestPayment(OBJECT)发起微信支付,Object参数取值说明:
timeStamp 取【统一下单交易】返回的 time_stamp
nonceStr 取【统一下单交易】返回的 nonce_str
package 中 prepay_id 取【统一下单交易】返回的 pay_id,格式如:prepay_id=wx1712341601086258515448c31980502232
paySign 取【统一下单交易】返回的pay_sign
signType 取【统一下单交易】返回的sign_type
以返回报文为例的示例代码:
wx.requestPayment(
{
'timeStamp': '1571286856',
'nonceStr': 'lj1v8w5rqdiftm8zst5gwhjbvebcvyhl',
'package': 'prepay_id=wx1712341601086258515448c31980502232',
'signType': 'MD5',
'paySign': '9280696fced8329af66d7be472f9e7f6',
'success':function(res){},
'fail':function(res){},
'complete':function(res){}
})