19支付 - 文档中心

签名算法

19支付 签名算法与微信官方签名算法一致


签名生成的通用步骤如下

1.设所有发送或者接收到的数据为集合M,将集合内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

2.在stringA最后拼接上&key=密钥得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值

特别注意以下重要规则:

a.参数名ASCII码从小到大排序(字典序);

b.如果参数的值为空不参与签名;

c.参数名区分大小写;

d.验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。

e.19支付 接口可能增加字段,验证签名时必须支持增加的扩展字段

示例

例如传递的参数如下:

1. app_id: 191008821006
2. total_fee: 1
3. out_trade_no: 2019101056485

第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下

app_id=191008821006&out_trade_no=2019101056485&total_fee=1

第二步:对上一步中的字符串拼接&key=密钥 (登录19支付平台-> 商户管理 -> 支付对接 AppSecret 前往获取

app_id=191008821006&out_trade_no=2019101056485&total_fee=1&key=xxxxxxxxx

第三步:对上一步中字符串取MD5值

String sign = MD5("app_id=191008821006&out_trade_no=2019101056485&total_fee=1&key=xxxxxxxxx")

第四步:对上面md5值转化为大写

sign.toUpperCase();

JAVA代码示例

以 JAVA 语言为例,调用网站支付接口的代码示例如下:

最后更新: 2020-03-07