微信支付自己是提供了三大Web開發語言的SDK下載的,按理說應該很Easy怎麼會有坑呢?
其實坑大多出在文檔上,文檔不完善,不少東西都得你去摔一跤才明白,事先毫不告訴你,整個微信的文檔都跟屎同樣
其次是參數命名,一下子要用timeStamp
一下子卻又要用timestamp
的,命名混亂就算了還非得區分大小寫,百度一下就知道坑過多少人了php
這些都忍了,跌跌撞撞也就過來了。但最近作支付又遇到兩個大坑。通過數小時終於解決,來介紹下經驗api
項目其中一個需求是在網頁點擊按鈕調起支付,這就得用到微信的JSAPI微信
下載PHP的SDK,直接部署並測試SDK自帶的例程,一切正常
把配置項和支付證書替換成本身公衆號的以後,再測試,報簽名錯誤
我:
而後我到微信支付接口簽名校驗工具,各類測試;到線上各類輸日誌仍是沒有發現問題。而後從新檢查配置、證書,再bing、google都找不到問題所在。不知不覺就耗去了幾個小時工具
最後在Google出來的某看起來很醜的論壇裏一篇帖子提到一個解決方案——重置支付密鑰測試
是的就是那個支付時須要用到的KEY,不是AppID也不是AppSecret
我不抱但願地重置了一下換了個密鑰,等待十分鐘後,就沒報簽名錯誤了微信支付
然而微信不會讓一切那麼順利的,當我使用getBrandWCPayRequest
要調起支付時,報fail錯誤google
這裏要先說到微信的支付受權目錄,關於這玩意兒,微信官方給出的描述是:url
一、全部使用公衆號支付方式發起支付請求的連接地址,都必須在支付受權目錄之下;
二、最多設置3個支付受權目錄,且域名必須經過ICP備案;
三、頭部要包含http或https,須細化到二級或三級目錄,以左斜槓「/」結尾。spa
當時的url大概是http://www.abc.com/wxpay/index.php/wecaht/pay/123
日誌
這樣的,因而我根據第3條描述,將支付受權目錄設定爲http://www.abc.com/wxpay/
好啦這就是二級目錄啦!等待10分鐘後測試,依然fail
後來改成http://www.abc.com/wxpay/index.php/
,三級目錄啦。仍是fail
通過無數google無果後,破罐子破摔填了個倒數第二級目錄http://www.abc.com/wxpay/index.php/wecaht/pay/
嗯是的,就跟你猜到的同樣,成功了……
當時我看着手機裏調起的支付密碼輸入框,滿腦子只有WTF……
本文同時刊登於個人博客 超能小紫,若是喜歡請常來玩哦