代付提单签名规则
使用场景:该签名规则代付提单时使用,回调接口的还是沿用通用的签名(md5)
✅ 签名说明 :
参数名区分大小写。
如果参数的值为空不参与签名,注意一些特定字段也不参与签名,具体参见接口参数说明。
参数名 ASCIl 码从小到大排序(字典序)。
排序后按照(key1=value1&key2=value2&key3=value3...)的格式拼接成字符串 A。
用A拼接 ’key=密钥值‘ 生成最终字符串 S,key密钥值由商户创建时生成提供,请勿泄露给不相关人员。
使用RSA对字符串S进行加密(填充方式:RSA/ECB/PKCS1Padding),生成最终字符串 sign作为请求参数之一参与请求api接口,RSA密钥(2048 位 PKCS#8格式,Base64编码无头尾,一行格式)请商户自行生成后,将解密的私钥上传到商户后台,加密的公钥请商户妥善保管,防止盗窃或者丢失。

✅ 签名示例 :
示例RSA公钥:
最终字符串S:
⚠️签名串中的参数不是全部 参数拼接,是部分参数的拼接,具体请看代付参数说明,根据是否参与签名进行排序以及加密
RSA公钥加密后为(PKCS1Padding方式,加密串每次是变化的,以下只是随机的一种加密结果):
完整请求参数JSON为:
✅ JAVA 实现:
🐘PHP 实现:
🟦 Node.js 实现(使用 crypto模块):
🟨 Go 实现(使用 crypto/rsa+ encoding/pem):
✅ C++ 实现(使用 OpenSSL):
✅ C# 实现(.NET) :
商户后台上传密钥说明:


✅ 补充说明
公钥必须是 X.509 格式的 RSA 公钥,Base64 编码字符串,和 Java 的 X509EncodedKeySpec 匹配。
所有语言的输出是 Base64 编码的密文字符串。
加密结果在跨语言中应保持一致,只要公钥和填充方式一致。
加密使用相同的算法(RSA/ECB/PKCS1Padding)和 Base64 编码。
示例代码都是常见的库实现方案,涉及到代码调试不做技术支持,请自行解决。
加密的字段不是所有的请求参数是选择部分加密的,加起来长度不会超过245,不用分块。
Last updated