最近有很多的網(wǎng)友咨詢小編微信支付簽名生成方面的問(wèn)題,下面的內(nèi)容中,小編會(huì)為大家介紹其中的算法的,如果您對(duì)這方面的內(nèi)容比較的感興趣的話,可以跟著小編一起往下看看具體的介紹哦。
微信支付簽名生成算法是什么?
簽名生成的通用步驟如下:
第一步,設(shè)所有發(fā)送或者接收到的數(shù)據(jù)為集合M,將集合M內(nèi)非空參數(shù)值的參數(shù)按照參數(shù)名ASCII碼從小到大排序(字典序),使用URL鍵值對(duì)的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特別注意以下重要規(guī)則:
◆ 參數(shù)名ASCII碼從小到大排序(字典序);
◆ 如果參數(shù)的值為空不參與簽名;
◆ 參數(shù)名區(qū)分大小寫(xiě);
◆ 驗(yàn)證調(diào)用返回或微信主動(dòng)通知簽名時(shí),傳送的sign參數(shù)不參與簽名,將生成的簽名與該sign值作校驗(yàn)。
◆ 微信接口可能增加字段,驗(yàn)證簽名時(shí)必須支持增加的擴(kuò)展字段
第二步,在stringA最后拼接上key=(API密鑰的值)得到stringSignTemp字符串,并對(duì)stringSignTemp進(jìn)行MD5運(yùn)算,再將得到的字符串所有字符轉(zhuǎn)換為大寫(xiě),得到sign值signValue。
舉例:
假設(shè)傳送的參數(shù)如下:
appid: wxd930ea5d5a258f4f
mch_id: 10000100
device_info: 1000
body: test
nonce_str: ibuaiVcKdpRxkhJA
第一步:對(duì)參數(shù)按照key=value的格式,并按照參數(shù)名ASCII字典序排序如下:
stringA="appid=wxd930ea5d5aerf4f&body=tyer&device_info=1000&mch_id=1000010tyreyce_str=ibuaiVcKdpRxkhJA";
第二步:拼接API密鑰:
stringSignTemp="stringA&key=1920062erg4c09247ec02edce69f6a2d"
sign=MD5(strgSignTemp).toUppdfsase()="9A0A8659F0gdgg846rgE2CA0A9CF3B7"
相信很多的網(wǎng)友對(duì)于這方面的算法是很感興趣的,所以小編特意的為大家整理了上面的內(nèi)容,相信可以幫大家了解到很多的東西哦。另外開(kāi)淘網(wǎng)會(huì)不斷的為大家感謝相關(guān)的內(nèi)容的。
推薦閱讀:
微信支付商戶平臺(tái)結(jié)算規(guī)則有哪些?
微信商戶提現(xiàn)有手續(xù)費(fèi)嗎?微信商戶提現(xiàn)功能是什么?
微信支付商戶怎么提現(xiàn)?微信商戶提現(xiàn)兩種方法介紹
查看更多相似文章