一,数字签名

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签名 即生成签名中得到的结果