前言
之前寫了一篇微信公眾號開發(fā)的文,原文鏈接。
現(xiàn)在再寫一篇續(xù),以記錄這一路遇見的坑……
坑
總結(jié)一下遇見的幾個坑:
KEY--商戶支付密鑰,這個字符串必須要32位。之前用了一個網(wǎng)上的隨機(jī)字符串生成器,也沒有仔細(xì)檢查,結(jié)果生成了一個40多位的KEY,以至于支付用的簽名一直無法通過。并且即便是使用微信自己的檢查工具也沒有檢查出這個問題
-
微信支付需要在微信公眾平臺的后臺添加上你網(wǎng)站的域名地址后方能生效。并且需要注意的是開發(fā)的時候我們一般用的是測試授權(quán)目錄,網(wǎng)站正是運(yùn)營的時候一定要添加到支付授權(quán)目錄
授權(quán)目錄.png 訂單過期時間過短問題。在
WxPayUnifiedOrder類中,有兩個方法可以設(shè)置訂單的開始和過期時間:SetTime_start和SetTime_expire。我之前設(shè)置了10分鐘的過期時間,微信還是報(bào)錯說過期時間太少,至少要5分鐘什么的。之所以會有這個錯誤是因?yàn)檫@個方法使用的是北京時間。所以,如果你使用了date()函數(shù)時,就必須先要設(shè)置好時區(qū):
$input = new WxPayUnifiedOrder();
date_default_timezone_set('PRC'); //設(shè)置成北京時間,如果沒有這句就會報(bào)錯
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
- 價格問題。如果你數(shù)據(jù)庫中儲存的商品價格是¥10.00這樣的價格。在通過微信支付前需要乘以100。這樣做是因?yàn)槲⑿胖Ц缎枰幚淼膬r格必須是個整數(shù)(其實(shí)也就是說微信支付使用的是分作單位,而一般我們用的是元)。如果是浮點(diǎn)小數(shù),在省略小數(shù)點(diǎn)的過程中容易出現(xiàn)一些匪夷所思的錯誤。
測試工具
最后放兩個工具的鏈接地址
-
簽名校驗(yàn)工具。這個工具是用來校驗(yàn)生成的支付簽名用的??梢杂肧DK中
ToXml()方法所生成的xml字符串在這里進(jìn)行驗(yàn)證。
簽名校驗(yàn) -
接口調(diào)試工具。這個工具和上一個工具作用非常相似。唯一的不同之處是它會自動給你生成一個
xml的文本。對于一些商品單一的支付來說,xml其實(shí)是可以寫死的。而在這里就可以直接獲取。
接口調(diào)試


