企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **数据格式及数据签名说明** **通知数据** - 采 用 HTTP 标 准 的 POST 协 议 ( 请 使 用 application/x-www-form-urlencoded 此Content-Type 接收通知消息),为了保证数据正确性、准确性,数据必须验证签名。 - 返回数据(支付成功通知如下) ``` <leshua> <error_code>0<error_code> <amount>1<amount> <attach>0<attach> <bank_type>ALIPAYACCOUNT<bank_type> <buyer_pay_amount><buyer_pay_amount> <channel_datetime>2018-12-07 22:42:39<channel_datetime> <channel_order_id>7551000001201812073279154152<channel_order_id> <coupon>0<coupon> <discount_amount>0<discount_amount> <goods_tag><goods_tag> <leshua_order_id>1812072242293655<leshua_order_id> <merchant_id>0000000018<merchant_id> <openid>2088032562556921<openid> <out_transaction_id>2018120722001456935441223102<out_transaction_id> <pay_time>2018-12-07 22:42:39<pay_time> <pay_way>ZFBZF<pay_way> <royalty>0<royalty> <settlement_amount>1<settlement_amount> <sign>0b574d40e722ec76b55d4e8795f71182<sign> <status>2<status> <sub_openid><sub_openid> <third_order_id>20181207224223102101<third_order_id> <trade_type>NATIVE<trade_type> <leshua> ``` ---- **数据签名** - 为了保证数据传输过程中的数据真实性和完整性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。 - 数字签名有两个步骤,先按一定规则拼接要签名的原始串,再选择具体的算法和密钥计算出签名结果。 **签名数据规则如下**: - 签名原始串按以下方式组装成字符串(不包含签名 Key): 1. 请求:除 sign 字段外,所有参数按照字段名的 ascii 码从小到大排序后使用QueryString 的格式(即 key1=value1&key2=value2…)拼接而成,空值不传递,不参与签名组串。 2. 应答:除 sign、leshua、resp\_code 字段外,所有参数按照字段名的 ascii 码从小到大排序后使用 QueryString 的格式(即 key1=value1&key2=value2…)拼接而成,空值参与签名组串。 3. 签名原始串中,字段名和字段值都采用原始值,不进行 URL Encode。 **签名算法如下**: - 目前只支持 MD5 签名算法。 - 交易报文 MD5 计算:sign = MD5(3.1 组装的字符串&key=商户交易密钥).toUpperCase()。 - 通知报文 MD5 计算:sign = MD5(3.1 组装的字符串&key=商户通知密钥).toLowerCase()。 **注**: - 所有涉及到金额的单位都位分,币种为 RMB,最小为 1 分,不允许出现小数。 - 返回参数中必填为是的参数是一定会返回的,必填为否的参数则不一定返回,因升级或配置等情况实际返回参数可能不会跟文档完全一致,必须以实际接收到的参数为准。