2.2.1 通讯过程

合作方请求接口上送时,提交六个参数:

  1. encryptData=加密后的请求报文;

  2. encryptKey=加密后的AES对称密钥;

  3. cooperator=合作方标识;

  4. signData=请求报文签名;

  5. reqMsgId=请求流水号(即订单号);

  6. tranCode=交易服务码。

  7. version=接口协议版本号

数族扫码支付平台返回应答报文,返回六个参数:
  1. encryptData=加密后的应答报文;

  2. encryptKey=加密后的AES对称密钥;

  3. signData=应答报文签名;

  4. reqMsgId=请求流水号;

  5. resMsg=结果描述;

  6. reqCode=结果码。

详细步骤如下:
  1. 合作方、数族扫码支付平台生成各自RSA公私钥、AES对称密钥。其中,合作方RSA公私钥为(cooperatorPubKey、cooperatorPriKey),合作方AES对称密钥为cooperatorAESKey;数族扫码支付平台RSA公私钥为(swPubKey、swPriKey),数族扫码支付平台AES对称密钥为swAESKey。生成密钥后交换各自RSA公钥。

  2. 合作方请求报文时,需要用合作方AES对称密钥cooperatorAESKey加密请求报文:encryptData=AES.encryptToBase64(Data,cooperatorAESKey),其中encryptData是Base64编码的字符串;用合作方RSA私钥签名请求报文:signData=RSA.signToBase64(Data,cooperatorPriKey),其中signData是Base64编码的字符串;用数族扫码支付平台RSA公钥加密合作方AES对称密钥cooperatorAESKey:encryptKey=RSA.encryptToBase64(cooperatorAESKey,swPubKey),其中encryptKey是Base64编码的字符串。

  3. 数族扫码支付平台收到合作方请求报文(包含上文要求的7个参数),根据cooperator取出对应的密钥,用数族扫码支付平台RSA私钥解密encryptKey:cooperatorAESKey=RSA.decryptFromBase64(encryptKey,swPriKey);用解密得到的cooperatorAESKey解密encryptData:Data=AES.decryptFromBase64(encryptData, cooperatorAESKey);用合作方RSA公钥验证签名:boolean result=RSA.checkSignFromBase64(Data,signData,cooperatorPubKey);最后根据callBack回调地址异步应答。

  4. 同理,数族扫码支付平台应答报文,合作方端处理类似上述流程。

【注】数族扫码支付平台每次通讯报文的AES密钥不一样。

results matching ""

    No results matching ""