报文安全规范


报文安全规范

协议规则

商户对接API必须遵循以下规则:

1.传输方式 为保证交易安全性,采用HTTPS传输
2.提交方式 采用POST/JSON方式提交
3.数据格式 请求以JSON格式提交,返回为标准的JSON格式
4.字符编码 统一采用UTF-8字符编码
5.签名算法 RSA2/SM2
6.签名要求 请求和接收数据均需要校验签名,详细方法请参考安全规范
7.证书要求 采用数字证书,在商户服务平台-》设置-》对接配置-》系统对接参数-》交易密钥处自行配置
8.判断逻辑 先判断协议非空字段返回,再判断加密SIGN正确与否,最后判断交易状态

安全规范

1 商户与支付平台数据互交,需要双向签名/校验以及敏感信息得加密/转密

2 商户在支付平台获取商户号和商户号对应的RSA2/SM2公私钥

3 将数据按照字符串得ASCll得值从小到大排序

4 将排序后字段使用&连接,值为null或者空的话字段名需要参数签名.

accessId=2023020200000000&authToken=&bizContent={"amount":"2","appId":"API@0000000","merCd":"554117800000000","notifyUrl":"www.localhost.com","offestAmt":"0.01","openId":"wxe4afcec36e711a06","orderNo":"20230214091244","pageNotifyUrl":"01","payType":"TX4513","randomStr":"100","remark":"备注摘要""storeCd":"554117800000000","sumAmt":"0.01","txnOrderFlag":"00","validTime":"370102198308270022"}&charSet=UTF-8&format=json&method=allinpay.shandong.payment&timestamp=20230214091244&version=V1

5 使用RSA2/SM2私钥进行签名后Base64字符串填入signData

  Signature signer = Signature.getInstance(algorithm, "BC");
            signer.initSign(privateKey);
            signer.update(inData);
            return Base64.getDecoder().decode(signer.sign());

openssl_sign(
            $signData,
            $sign,
            RSA2::getStrPrivateKey($privateKey),
            OPENSSL_ALGO_SHA256
        ) ? base64_encode($sign) : null;

上次编辑于: