1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >王文曉-微信支付頁面</ title > < meta name = "viewport" content = "width=device-width, initial-scale=1.0,user-scalable=no" > < script type = "text/javascript" src = "Public/js/jquery.min.js" ></ script > </ body > </ html > |
1、將要POST到微信服務器的參數(shù)除sign外的參數(shù)賦值,放到一個數(shù)組array里面,按照字典順序排序,其實在PHP中就是用ksort排序。
2、將數(shù)組轉(zhuǎn)換成字符串string,格式為 k1=v1&k2=v2&...kN=vN
3、在此string后加上KEY值(在微信支付商戶后臺用戶自己設定的)現(xiàn)在string = k1=v1&k2=v2&...kN=vN&key=KEY。
4、string = md5(string)
5、sign = strtoupper(string)
簽名方式都是這樣
簽名還有一個坑就是看上面的代碼25行。在js中時間戳這樣寫timestamp,后端(php端)中就要求timeStamp這樣寫。
對此我只想對騰訊說
其他還有一堆問題比如官方注釋寫錯等我就不一一列舉了,畢竟跟上面那些坑比比這都不是問題。
最后還是有個問題是我想問問大家有沒有碰到的,我是在是想不通啥子邏輯。我覺得是微信支付授權目錄有問題。我的情況是這樣的:
前一天下午我發(fā)起支付的頁面是域名/abc/def/pay.php。測試目錄我寫的是域名/abc/
下午好用,晚上給老板測試支付就不好用了,提示的大體意思就是支付授權目錄不對,我仔細一檢查還真不對,應該是域名/abc/def/
但是把測試目錄改正確后再把真正的支付授權目錄改成注目禮后并且把微信號加入白名單還是不行。正當我納悶中半小時后又支付可以了
第二天我再測試官方DEMO。竟然放在域名下任何一個文件夾都能正常支付。不管目錄有沒有授權。我從白名單把我刪除在我的測試目錄下的支付中也是成功的。直到我取消關注公眾號再關注這時提示不在白名單。
其實上面可以匯成一個句話的問題:為什么支付授權目錄一會管用一會不管用呢?求高手回復討論。
補充:
最后一個問題已經(jīng)解決,今天狠狠心,跟老板用了三個微信挨個測試。得到的答案是:微信端或者換支付目錄或者白名單時騰訊服務器有緩存。會過一會生效。我測試都是三分鐘后生效。幾分鐘不生效可以:重登微信、重新關注公眾號。基本可以解決。
還有就是,千萬不要在別的公眾號測試自己的支付代碼。