签名规则

    签名步骤

    对本平台接口发起的请求,需要进行签名。

    1、获取请求报文所有非空请求参数,不包括数组、字节类型参数,如文件、字节流,剔除signsign_type字段,并按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。

    2、将排序后的参数和对应值,组合成“参数=参数值”的格式,并且把这些参数用 & 字符连接起来,此时生成的字符串为待签名字符串。

    3、使用商户私钥,对待签名字符串计算RSA签名(SHA256WithRSA),得到签名sign。

    验签步骤

    针对接口返回的数据,以及异步通知回调的数据,需进行验签。

    1、先根据签名步骤里面的1~2,获取到待签名字符串。

    2、使用平台公钥,根据签名字符串sign,对待签名字符串与进行RSA验签(SHA256WithRSA)

    注意事项

    1、商户私钥(private key)需填写到代码中供签名时使用。生成的私钥需妥善保管,避免遗失,不要泄露。

    2、平台公钥(public key)用于接口返回数据、异步通知回调数据的验签。

    3、具体发起支付相关流程的示例代码可下载SDK查看。

    MD5 兼容签名(旧商户)

    未升级 RSA 密钥的商户,可继续使用 MD5 签名方式。

    1、按签名步骤 1~2 生成待签名字符串(剔除 sign、sign_type 及空值参数,按键名 ASCII 升序,以 & 连接成 a=1&b=2 形式,末尾不带 &)。

    2、将商户密钥(商户后台 API 信息中的商户密钥)直接拼接在待签名字符串末尾,做 MD5 计算并转小写:

    sign = md5(待签名字符串 + 商户密钥)

    3、请求时 sign_typeMD5(或不传)。建议新对接商户统一使用 RSA 签名。