一,数字签名
i. 在没有特殊说明的情况下,所有HwPaymentAPI都需要进行数字签名,以确保HwPayment能够确认使用者的身份。
ii. 生成私钥
- 用途:用于商户端请求API时对参数进行签名的重要参数。
- 存储:商户端需要妥善保存私钥,绝不能泄露。
- 本地生成私钥:openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out private.key
iii. 生成公钥 - 用途:HwPayment用于验证请求签名的重要参数。
- 存储:商户登录HwPayment商户后台系统后填写并保存。
- 本地生成公钥: openssl rsa -pubout -in private.key -out public.key
iv. 生成待签名字符串
a. 将请求参数(POST请求的form内容)按照字符串的自然顺序进行排序。字符串的自然顺序是基于Unicode码点的顺序,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成参数字符串。注意:键值中的value需要进行URL编码。
b. 在参数字符串后面拼接上’&Timestamp=’ 再加上时间戳的值,得到待签名字符串。
v. 生成签名 a. 将待签名字符串用RSA加密,哈希算法采用SHA256,密钥使用申请服务时提交时的公钥和私钥。
b. 将加密结果使用base64进行编码,得到最终的签名结果。
vi. 添加请求头 - 每个接口的请求和响应header中都包含以下参数:
请注意按照以上步骤生成和使用密钥对,以确保数据的安全性和可靠性
| header参数 | 说明 | 生成方法 |
|---|---|---|
| Content-Type | 内容编码类型 | 固定值:application/json |
| MerchantNO | 商户号 | 由HwPayment统一生成分配 |
| ProductCode | 产品号 | 由HwPayment开通权限的产品号 |
| Timestamp | 时间戳 | 即生成待签名字符串时的Timestamp |
| Signature | API签名 | 即生成签名中得到的结果 |
