解密流程
返回解密流程说明
返回数据和请求数据是相同的格式,按照请求流程的逆推进行解密以及验签。为了数据安全,首信易支付接口用了两种解密方法、一种签名方法、一种验签方法以及一 种排序方法,分别是:CFCA 私钥证书解密、AES 解密、SHA1 签名、CFCA 公钥验签和键名首字母排序,
首信易的五种语言 demo 分别都提供了各个方法,具体用法:
1.返回示例:
返回头:
{
"merchantId": "890000593",
"requestId": "1556592332569",
"ContentType" : "application/vnd.5upay-v3.0+json",
"encryptKey":"OsYlS3vP1I+m5csUDTSbi801evXvMDsMejLHtqIqbtA5QTdPTjvCE2q4NLFek53Sqo0HxjcHxxgbX5QMEM7y0VMmeUmaLJ7BK/
R3Zc5xtHkWE/AbO8ErG7oXgORZ6JVakeRlDG8sSVTT2Duvy38RsXUQC4Vj4VHgxsLq398vfYQZgf9O8FPfSc+m7g8MGhbbuqMSbOWBH1lDKnCkpl
93XSiWFYHICt7aO/P9avhqlSVJDQg2KpwMld6Mfag5hgz/LTE7DfwyueH6VxIU7rrUkelWZSbO3ULUg7G5okRAFvXJPqfTnkRnQ+qTsK3QOpb98X
laR+tjuYqzTWs+/mUVg=="
}
返回体:
PoE9VSppnI/ixnoi7j2/LE0o28NGVdREh6TfZXXPS0Z0xZTs8Iy9FOoL2lDYOOGfoNNb3YRGtQ1y1ggUykbBaMRh8ipd7njD8XgH0suhx0nyKcSuUBG
S6vkCV3rI+0cJyjENozstB7vhAv31LxOoWyhrBCim/9mnyMomi6jEZS0xdQizUu4TcgJsQL2wXCecHdoD6C6PzLS+oSpizoBC6OtMMuD3aPR/tU5zzZE
dhofU/r1Bof8CuWulV4sCNr8X5EsduZs3uu3dnLsLEJNDjqplN7dGYga492DMg5KHqm8yAOGkiLAyR2jEspHz0ICVdB7RSS6RTDrtqAVzEIw2zrAYyOo
oTMbKOPkh720eFjkRc3iBw5TLfry9ZP4/sBtCzeOvcKw5rxGWiV6RIzxmftUFfsZLAA45DAil6+qryNU7cvS6UupxFiJLykkg88HvZRCGXuY4RxMhTT9
xMT4Vt+emA3RkYHr4U5Z+jUmvx1AjzQs6VBEoqmiFtM5vwHVkkF+e6JYV3d8BVeWyWCcYWYR0h9WYOdvnozsLv5NAQZtFYLbON7krN9abvqUa1Nwn+fo
8f+kQpyQAqhhLbqx/r2V9jvaIWXYyUzo0oLIH8eL2WvWBPDXMeipo0c0erwxqL3cGI1jxsAvrpAHPoGxYaeRCdWWIWDG2l6hHwiER/pZKp16k0JSOsJV
apgWvbPFAd/kfoP6SHuRG/dNjgahiS+tK/QUrV+X8D16Q7uixBJ15/Gwg/b2QSC88Dvs9t14UmYqtqVYFZAo4u5O718r4yA20nk8bZCd9Zwv+Hy6IEg1
MYXCvrQEb6SY5JzCymLPOLq07Mi1a5IZ1c9KGWY2gi6UaXFEHGVCLt8ITlHhG5V8NCo8+uMB3l4vFKNAMRC21tc1Z7dFdD29vnU+2sa2oa86JGMDLbe+
MXgVEpWsmFouGhcq1uU+xDSgTKlhm87TW0waUihBX/VnmCPrpV0YQgIN/RZMnWAHEf78cWx4UMXEqi+eqJer27CuKG8L2k6sCImskWdIBvVXRpHrEsDq
ZnzsBDQuQ5f0kPjljqXjhk/vLzYy+READjUwVpKDhwkvPd2JT+j+UZBg+shYia0UNpPc0GdvFCgz0unqZUIhkEf9dHXQBzu+pyIMOFspxvf9O41Otj+Y
/cDCxeqIP+KlxJrxLrxr6g868VpWKffKEMivuMZMo528QV0/xUyivzUBxep4OCq6x8zB6poGRaap50PAvbMPEZ9FDJdrSpMkZcGJ5c9w+ET/Pu2xBEv1
Pk7ykfyv2FPgM0vfh+xvjhLvAa0YPXvM7xbeB35LQ2iA54T/voza91sNhMowoR7ZcS0xK6+bp+VDCJfAK6kP4dwvCg==
同步返回时Partnerid参数在请求头中,异步通知时Partnerid参数在请求体内
2.CFCA 私钥解密:
该方法的用处是将商户上传到商户后台的 CFCA 公钥加密的 encryptKey 进行解密,得到十六位的 aes 密钥。
返回的请求头 encryptKey:
OsYlS3vP1I+m5csUDTSbi801evXvMDsMejLHtqIqbtA5QTdPTjvCE2q4NLFek53Sqo0HxjcHxxgb X5QMEM7y0VMmeUmaLJ7BK/RR3Zc5xtHkWE/AbO8E
rG7oXgORZ6JVakeRlDG8sSVTT2Duv y38RsXUQC4Vj4VHgxsLq398vfYQZgf9O8FPfSc+m7g8MGhbbuqMSbOWBH1lDKnCkpl93XSi WFYHICt7aO/P9a
vhqlSVJDQg2KpwMld6Mfag5hgz/LTE7DfwyueH6VxIU7rrUkelWZSbO3ULUg 7G5okRAFvXJPqfTnkRnQ+qTsK3QOpb98XlaR+tjuYqzTWs+/mUVg==
解密后得到的 aes 密钥:
w4deov41ogHO7eFi
3.AES 解密:
该方法的用处是将首信易方面随机生成的 aes 密钥加密的数据进行解密,得到原数据。
返回的请求体 data:
IsMowPkfHQd/x4w7uq3PQpCrCSir9e1B4075S03gQ0svH2LtOcPogsODNGPdrf5YL9AMvslQOj3i
GfS8pkfxxsyYienxAWrwNpu0b49LveB8CvJXBaYOETIbRTYtJ2NaEvJp6vySUo+L0vQZuOb6hxL
ALr8nU/zk4cZiS2KvGtP1tTR1If64Xfut1qNITtQv
解密后:
{
“redirectUrl”:”https://payment.5upay.com/receipt/redirect/index/2c9553496a684fe9016a6c53228d7
cf1/2c9553496a684fe9016a6c5322af7cf3”,
”merchantId”:”890000595”,
”requestId”:”1556595531274”,
”paymentOrderId”:”2c9553496a684fe9016a6c53228d7cf1”,
”status”:”REDIRECT”,
”hmac”:”PhbbgXjh6641/cQ6qfy5Dq10h/2TEH1XJiRLKAmtCDUy/hR0K+KRUvJ3bskYVATF3aDrHPBUz+RZjkWjBUgEd9E/7jrHVjAt/WHKl
wwlId1svUcY3oUvJPuh28fHTC8mZ6uOBFLQ5N Vy+sT6A6m2g5OWJ//LQMU05WO77mIt62C60qqFRpdXkcfGdkJapyatUFKIJB8S5EKOeGkDusj6
wMWSIR+Uhrgrzx/pv6BtUmRv2F1syxRK5BjdLWp/bVUl4bxKjCo/JKW8cRmz2ou/ZbchL3uQxJhjwzJoITEJ1PZmUN5B1yJurtQXR3C62MLCeXFV
NFaOP6qC9VbQ8Ewcxh==”
}
4.键名首字母排序:
该方法的主要作用是将去掉了 hmac 的原数据 json 按照键名首字母进行从 a-z的顺序进行排序,并按照排好的顺序进行拼接键值,各键值中间用#号隔开,例:
排序前:
{
“redirectUrl”:
“https://payment.5upay.com/receipt/redirect/index/2c9553496a684fe9016a6c53228d7cf1/2c9553496
a684fe9016a6c5322af7cf3”,
“merchantId”: “890000595”,
“requestId”: “1556595531274”,
“paymentOrderId”: “2c9553496a684fe9016a6c53228d7cf1”,
“status”: “REDIRECT”
}
排序后:
890000595#2c9553496a684fe9016a6c53228d7cf1#https://payment.5upay.com/receipt/redirect/index
/2c9553496a684fe9016a6c53228d7cf1/2c9553496a684fe9016a6c5322af7cf3#1556595531274#RED
IRECT#
5.SHA1 签名:
该签名方法用于对数据进行初步摘要。例:
签名前:
890000595#2c9553496a684fe9016a6c53228d7cf1#https://payment.5upay.com/receipt/redirect/index
/2c9553496a684fe9016a6c53228d7cf1/2c9553496a684fe9016a6c5322af7cf3#1556595531274#RED
IRECT#
签名后:
UmfW5oHZqRwSY5XKdINdfh57FK4=
6.CFCA 公钥验签:
该方法的主要作用是商户方面使用首信易提供的统一 CFCA 公钥对首信易方面返回的 hmac 数据进行验签,以保证数据没有被篡改。