## **数据格式说明及签名规则等**
**数据格式:**
- `为保证交易安全性,建议采用HTTPS传输`
- `采用POST方法提交`
- `提交数据格式:application/x-www-form-urlencoded`
- `返回数据格式:text/xml`
- `字符编码:统一采用UTF-8字符编码`
- `签名算法:MD5`
- `签名要求:请求和接收数据均需要校验签名`
- `判断逻辑:先判断协议字段返回,再判断业务返回,最后判断交易状态`
**请求数据:**
```
amount=1&merchant_id=9605008025&nonce_str=66318&pay_way=WXZF&service=get_tdcode&
sign=8a7167c448baef94e2d22c4d78d4d07c&third_order_id=NL2019032218253280439
```
**响应数据:**
- `正常返回`
```
<leshua>
<resp_code><![CDATA[0]]></resp_code>
<merchant_id><![CDATA[9605008025]]></merchant_id>
<sign><![CDATA[DB45DA9E55DD666C49F3963733D2602E]]></sign>
<result_code><![CDATA[0]]></result_code>
<third_order_id><![CDATA[NL2019032218253138930]]></third_order_id>
<nonce_str><![CDATA[rzmkrvsvprjjoqgjpzrmubbdeovjhrcu]]></nonce_str>
<td_code><![CDATA[weixin://wxpay/bizpayurl?pr=kZF1s1X]]></td_code>
<pay_way><![CDATA[WXZF]]></pay_way>
<leshua_order_id><![CDATA[0003495002500081]]></leshua_order_id>
</leshua>
```
- `业务级错误返回`
```
<leshua>
<resp_code><![CDATA[0]]></resp_code>
<merchant_id><![CDATA[9605008025]]></merchant_id>
<sign><![CDATA[22B542D7A1EE3EACE9DD90537B5D8D68]]></sign>
<result_code><![CDATA[1]]></result_code>
<third_order_id><![CDATA[NL2019032218253291474]]></third_order_id>
<pay_way><![CDATA[WXZF]]></pay_way>
<nonce_str><![CDATA[acvlgvqgwekjujypttfhulneqsgubnvc]]></nonce_str>
<error_msg><![CDATA[超出单笔支付限额,无法支付]]></error_msg>
<error_code><![CDATA[-1041]]></error_code>
</leshua>
```
**数字签名:**
- 为了保证数据传输过程中的数据真实性和完整性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。
- 签名有两个步骤,先按一定规则拼接要签名的原始串,再选择具体的算法和密钥计算出签名结果。
- 原始串中,字段名和字段值都采用原始值,不进行URL Encode。
- 平台返回的应答或通知消息可能会由于升级增加参数,请验证应答签名时注意允许这种情况。
**签名方法:**
- 设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
- 在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
**签名样例:**
- 假设需要传递的参数如下:
```
server:query_status
merchant_id:1234567890
third_order_id:12345678901
nonce_str:12345678901
```
- 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下
```
stringA=merchant_id=1234567890&nonce_str=12345678901&server=query_status&third_order_id=12345678901
```
- 拼接商户秘钥key
```
stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户密钥key
```
- 计算签名
```
交易报文MD5计算:sign=MD5(stringSignTemp).toUpperCase()
通知报文MD5计算:sign=MD5(stringSignTemp).toLowerCase()
```
**特别注意:**
- 请求数据验签方法
```
除sign、leshua、resp_code字段外,其他参数按照签名方法验签,空值不传递,不参与签名组串。
```
- 应答数据验签方法
```
除sign、leshua、resp_code字段外,其他参数按照签名方法验签,空值参与签名组串。
```
- 产品介绍
- 1、概述
- 2、变更记录
- 应用场景
- 进件应用场景
- 交易应用场景
- 对账应用场景
- 交易错误码信息参照表
- 进件接口
- 接口指南及签名算法等说明
- 图片上传
- 商户进件
- 商户开通业务
- 商户信息修改
- 商户查询
- 商户支付参数-新增
- 商户支付参数-查询
- 商户审核回调
- 子商户号查询
- 商户微信实名认证-申请
- 商户微信实名认证-撤销
- 商户微信实名认证-查询
- 交易接口
- 数据格式及签名规则说明
- 统一下单
- 条码支付
- 交易结果查询
- 订单关闭
- 退款
- 退款查询
- 授权码查询用户openid
- 授权码获取银联云闪付用户ID
- 退款结果通知
- 支付结果通知
- 打款查询
- 商户打款单结果查询
- 查询商户指定日期打款情况
- 查询旗下商户打款失败明细
- 打款回调
- 对账单文件
- 交易对账单
- 代理商分润对账单
- 代理商退货分润对账单
- 商户打款单
- POS机具通知
- 数据格式及数据签名说明
- 扫码支付成功通知
- 扫码退款通知
- 刷卡交易通知
- FAQ
- 进件相关
- 交易相关
- POS相关
- 手续费及分润计算
- Demo相关下载
- Demo与进件相关数据和对账单文件示例下载
- Java-SDK使用说明
- 商户进件资料提交规范
- 商户信息提交规范
- 商户结算信息提交规范
- 图片上传提交规范
- 结算
- 常见打款失败原因
- 商户修改结算卡流程
- 商户特殊业务
- 商户申请关注公众号
- 商户申请手续费开票流程
- 机具购买流程
- saasPOS机具清单信息
- 服务商机具购买流程
- saas刷脸设备清单信息
- 商户微信认证操作指引
- 商户微信认证操作指引
- 重要通知