Skip to main content
请求Powercard时,需要在http header中添加 merchantid=提前申请的merchantId,例如 merchantid=uu

一、生成 RSA 密钥对

Powercard 与商户间的服务通信使用 AES(AES/ECB/PKCS5Padding) + RSA(RSA/ECB/PKCS1Padding) 的方式对请求和响应的内容进行加解密,因此在正式接入前,商户需要先提前申请对应的 merchantId 和密钥。
  1. Powercard 生成一对 RSA 密钥对A,格式为 PKCS8,长度为 2048 位,其中 A-publicKey 给到商户,A-privateKey 由 Powercard 自行保管
  1. 商户自行生成一对 RSA 密钥对B,格式为 PKCS8,长度为 2048 位,其中 B-publicKey 给到 Powercard,B-privateKey 由商户自行保管

二、AES 加密请求体

商户每次在请求 Powercard 接口的时候,都需要对 requestBody 进行 AES 加密,其中 AES key 为 32 位随机字符串
  1. 商户生成随机字符串 aesRandomKey = 38859e263747adad524566278efa64c6
  2. 使用 aesRandomKey 对 requestBody 进行 AES 加密得到最终请求的 data

三、RSA 加密 AES Key

商户完成前两步后,使用第一步中的 A 的 publicKey 对第二步的 AES Key 进行 RSA 加密,得到最终请求的 key

四、构造 requestBody

商户完成前三步后,使用第二步中生成的 data 和第三步中生成的 key,生成最终的 requestBody

五、解密 responseBody

Powercard 在收到商户的请求并成功处理后,会按照同样的方式对 response 进行加密,商户在收到 response 后需要使用 B-privateKey 解析出 pw-aesRandomkey, 然后使用 pw-aesRandomkey 对 data 进行解密得到最终的 responseBody
  1. 商户收到 Powercard 的 responseBody,使用 B-privateKey 解析出 pw-aesRandomkey
  1. 使用 pw-aesRandomkey 对 data 进行 AES 解密得到最终的 responseBody