聚合被扫支付API(微信、支付宝、银联二维码)
业务功能
收银员使用扫码设备读取用户微信/支付宝APP付款码/银联二维码以后,二维码或条码信息传送至商户收银台,由商户收银台或者商户后台调用该接口发起支付对用户进行收款。
交互模式
请求:后台请求交互模式
返回结果:后台请求交互模式
测试url:
地址:39.107.230.207
端口:10020
请求参数(O-非必传 ,M-必传):
编码格式 | 参数名称 | 类型 | 参数说明 | 样例 | 可空 |
---|---|---|---|---|---|
ASCII | 交易类型(trans_type) | String | 必传:P(聚合被扫) | M | |
ASCII | 接入机构标识(assignid) | String | 代理商线下入网获取 | M | |
ASCII | 商户编号(merch_no) | String | 商户在SaaS平台的编号 | M | |
ASCII | 服务商交易订单号(out_trade_no) | String | 服务商的交易订单编号(同一服务商下唯一) | 161018121614000624679888 | M |
ASCII | 订单金额原(total_amount) | String | 订单总金额,以元为单位 | 100 | M |
ASCII | 支付授权码(auth_code) | String | 支付授权码 | 130022933989643883 | M |
ASCII | 通知地址(notify_url) | String | 支付成功后的通知地址 | http://test.mdun.cn/jd/pay/notice | O |
ASCII | SAAS终端号(pn) | String | 标准服务商必填(v1.27增加) | M | |
ASCII | 基站或经纬度(station) | String | 可选,上送规则 STA|经度|纬度|基站信息| 基站信息为小区号+基站号 | STA|106.56944275|29.55116272|1307042561| 或 STA|||1307042561| 或 STA|106.56944275|29.55116272|0| |
O |
ASCII | 签名(sign) | String | 可以传递16位 | M | |
previous_trade_no | 前一笔SaaS平台返回的订单编号 | String | SaaS平台的交易订单编号 | AL200325141943092770216077 | O |
time_consume | 交易耗时 | String | 前一笔交易耗时(请求开始到请求结束),毫秒(ms) | 200 | O |
net_type | 网络类型 | String | 前一笔交易时使用的网络类型(2G,4G,WIFI) | 2G | O |
terminal_info | 终端信息 | object | 【259新增】商户侧受理终端信息,字段详 细说明参考下文。 | O |
终端信息terminal_info 字段说明
参数 | 参数名称 | 类型 | 参数说明 | 样例 | 可空 |
---|---|---|---|---|---|
location | 终端实时经纬度信息 | String | 受理终端设备实时经纬度信息,格式为纬度/经度, +表示北纬、东经,-表示南纬、西经 | +37.12/-121.213 | O |
device_ip | 商户端设备 IP | String | 商户端终端设备 IP 地址。注: 如经、维度信息未上送,该字段必送。 | O | |
encrypt_rand_num | 加密随机因子 | String(10) | 仅在被扫支付类交易报文中出现:若付款码为 19 位数字,则取后6 位;若付款码为 EMV二维码,则取其tag 57 的卡号/token 号的后 6 位 | O | |
secret_text | 密文数据 | String(16) | 仅在被扫支付类交易报文中出现:64bit 的密文数据, 对终端硬件序列号和加密随机因子加密后的结果。本子域取值为: 64bit 密文数据进行base64 编码后的结果。 | O | |
app_version | 应用程序版本号 | String(8) | 终端应用程序的版本号。应用程序变更应保证版本号不重复。当长度不足时,右补空格 | O |
请求示例:
带通知地址notify_url字节组拼接顺序:
trans_type + assignid +merch_no + out_trade_no + total_amount +auth_code+ notify_url + pn + station + sign
带通知地址notify_url字节组拼接顺序(有参数previous_trade_no,time_consume,net_type):
trans_type + assignid +merch_no + out_trade_no + total_amount +auth_code+ notify_url + pn + station + sign + previous_trade_no + time_consume +net_type
带通知地址notify_url签名字符串顺序:
assignid + merch_no + out_trade_no +total_amount + auth_code + notify_url + pn + station + trans_type
不带通知地址notify_url字节组拼接顺序:
trans_type + assignid +merch_no + out_trade_no + total_amount +auth_code + pn +station+ sign
不带通知地址notify_url字节组拼接顺序(有参数previous_trade_no,time_consume,net_type):
trans_type + assignid +merch_no + out_trade_no + total_amount +auth_code + pn +station+ sign + previous_trade_no + time_consume +net_type
带通知地址notify_url签名字符串顺序:
assignid + merch_no + out_trade_no +total_amount + auth_code + pn +station+ trans_type
说明:
1. 新增参数previous_trade_no ,time_consume ,net_type 不参与任何模式下的签名
2. 如果上传previous_trade_no , time_consume , net_type参数信息,请保证顺序
3. previous_trade_no ,time_consume 有数据信息,请同时上传,缺少任何一项,请不要上传
4. 上传net_type时,需要previous_trade_no ,time_consume存在(有数据信息),否则不需要上传
按照文档顺序
1.针对第一个参数交易类型A,使用1个字节来表示交易类型的ASCII长度(注意:每个参数字节组长度不能超过99个),使用bcd编码获取1个字节 bcd(A.getBytes(“ASCII”).length)
2.获取规定编码的字节组,A.getBytes(“ASCII”)
3.将1和2中字节组进行合并;
4.依次针对所有的字段进行拼接;
5.最后发送字节的16进制字符串:01500863706F7374657374083838383838383838137465737430303030303030303901311831333437333031353438363235373933343616313231393035303530303030303030311643383730353134353732333045314144000000
返回参数:
编码格式 | 参数名称 | 类型 | 参数说明 | 样例 | 可空 |
---|---|---|---|---|---|
ASCII | 错误码(return_code) | int | 10000 代表成功,其他是失败 | M | |
ASCII | 服务商交易订单号(out_trade_no) | String | M | ||
ASCII | SAAS平台订单号(trade_no) | String | M | ||
ASCII | 被扫类型(trade_type) | String | 微信支付:WX 支付宝支付:ALI 银联二维码支付:UNIONQR | M | |
ASCII | 交易状态(trade_status) | String | (仅支付宝微信返回) 1:交易成功 2:交易失败 3:交易进行中 | O | |
ASCII | 业务受理状态(accept_status) | String | (仅银联二维码返回) 1:受理成功 2:受理拒绝 | O | |
UTF-8 | 错误信息(return_msg) | String | O | ||
ASCII | 签名(原 sign) | String | M |
返回示例:
与请求方式一样,获取SAAS返回字节组,先通过解析第一个字节获并使用bcd编码获取return_code的长度,根据return_code的值,进行成功和失败两种的解析。解析过程中要注意参数的顺序
1.当retrun_code为10000时,SAAS平台返回字节组顺序是:return_code + out_trade_no + trade_no + trade_type +trade_status/accept_status+ sign
签名顺序:return_code + out_trade_no + trade_no + trade_type + trade_status/accept_status
2.当retrun_code不为10000时,SAAS平台返回字节组顺序是:return_code + ret_msg + sign
签名顺序:return_code + return_msg
SAAS返回字节组转化16进制字符串
053130303030137465737430303030303030303726414C3230303432363135313134333933373530303934373234374668747470733A2F2F71722E616C697061792E636F6D2F6261783035343931376C686D75636F6F7076376836306331324136373637414332384145453130314344453736333635324143353145354541