微信支付簽名算法,微信支付簽名算法是什么?

2017-04-19|HiShop
導(dǎo)讀:微信支付簽名算法,微信支付簽名算法是什么?設(shè)置微信簽名支付時(shí),需要小程序,設(shè)置微信支付簽名算法,以下是小編整理的微信支付簽名算法的內(nèi)容。有興趣的朋友們可以往下學(xué)習(xí)。...

  微信支付簽名算法,微信支付簽名算法是什么?設(shè)置微信簽名支付時(shí),需要小程序,設(shè)置微信支付簽名算法,以下是小編整理的微信支付簽名算法的內(nèi)容。有興趣的朋友們可以往下學(xué)習(xí)。

微信支付簽名算法,微信支付簽名算法是什么?

  簽名生成的通用步驟如下:

  第一步,設(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ù)不參與簽名,將生成的個(gè)性簽名與該sign值作校驗(yàn)。

  ◆ 微信接口可能增加字段,驗(yàn)證簽名時(shí)必須支持增加的擴(kuò)展字段

  第二步,在stringA最后拼接上key得到stringSignTemp字符串,并對(duì)stringSignTemp進(jìn)行MD5運(yùn)算,再將得到的字符串所有字符轉(zhuǎn)換為大寫(xiě),得到sign值signValue。

  key設(shè)置路徑:微信商戶平臺(tái)(pay.weixin.qq.com)-->賬戶設(shè)置-->API安全-->密鑰設(shè)置

  舉例:

  假設(shè)傳送的參數(shù)如下:

  appid: wxd930ea5d5a258f4f

  mch_id: 10000100

  device_info: 1000

  body: test

  nonce_str: ibuaiVcKdpRxkhJA

  第一步:對(duì)參數(shù)按照key=value的格式,并按照參數(shù)名ASCII字典序排序如下:

  stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

  第二步:拼接API密鑰:

  stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d"

  sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"

  最終得到最終發(fā)送的數(shù)據(jù):

  2、生成隨機(jī)數(shù)算法

  微信支付API接口協(xié)議中包含字段nonce_str,主要保證簽名不可預(yù)測(cè)。我們推薦生成隨機(jī)數(shù)算法如下:調(diào)用隨機(jī)數(shù)函數(shù)生成,將得到的值轉(zhuǎn)換為字符串。

  以上是小編整理的微信支付簽名算法,希望對(duì)您有幫助,更多公眾號(hào)內(nèi)容,關(guān)注Hi商學(xué)院。

TAGS:
推薦閱讀