签名生成的通用步骤如下
第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或系统主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
第二步:在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
如请求系统参数如下:
Map signMap = new HashMap<>();
signMap.put("appId", "test01");
signMap.put("mobile", "18698798721");
signMap.put("productNo", '2110000050000');
signMap.put("amount", 50);
signMap.put("orderNo", "12345");
signMap.put("notifyUrl", "xxxxxx");
待签名值
:amount=50&appId=test01&mobile=18698798721¬ifyUrl=xxxxxx&orderNo=12345&productNo=2110000050000&key=EWEFD123RGSRETYDFNGFGFGSHDFGH
签名结果
:7864F84DE809CE3FA0C080FB516FD991
##### 备注
appId 和 key请到代理商户后台 “账户管理 - 账户信息” 中查看
简要描述
请求URL
http://xx.com/gateway/recharge/order
请求方式
- POST application/x-www-form-urlencoded
参数
参数名 |
必选 |
类型 |
说明 |
appId |
是 |
string |
用户名 |
tradeNo |
是 |
string |
平台交易号 |
sign |
是 |
string |
签名 |
返回参数说明
参数名 |
类型 |
说明 |
code |
int |
200查询成功,其他查询失败 |
msg |
string |
描述信息 |
data |
json |
成功返回信息 |
orderNo |
string |
商户订单号 |
tradeNo |
string |
平台交易号 |
productNo |
string |
商品编号 |
orderStatus |
int |
1:处理中,2:成功,3:失败,9:未确认 |
moblie |
string |
手机号 |
facePrice |
string |
订单面值(元) |
carrierOrderNo |
string |
运营商流水号 |
返回示例
{
"code": 200,
"msg": "OK",
"data": {
"orderNo": "22222222233",
"tradeNo": "2020111013362583735",
"productNo": "2110000050000",
"orderStatus": 3,
"moblie": "13670074035",
"facePrice": "50"
}
}