此處的微信支付是指微信支付V3版
如何確認自己申請的微信版本是V3版 1.基本9月20以後申請的微信支付均為V3版本 2.檢視微信傳送的郵件 若其中包含以下資訊 商戶ID、申請編號、登入帳號、登入密碼、商戶API密碼 商戶API證照、證照金鑰、CA證照 即為V3版本的微信支付
由於微信支付V2 跟 V3版的引數不同 支付的流程不同 導致微信支付V2版本跟V3版不相容…
微信支付V3的 支付流程如下: (JSAPI支付為例)
- 根據文件中所寫 採用JSAPI進行支付 則使用者的openid 為必須引數 所以官方給的Demo第一步採用了Oauth 認證獲取使用者的Openid,此處需要注意 在傳遞Oauth認證的回撥URL中 應該使用
urlencode()
函式 對URL進行編碼 否則如&a=1&b=2
類似的URL可能出現找不到的現象.
當然如果你在支付的頁面直接把openid 帶過去了…可以直接去掉支付中的oauth認證這步
2.支付成功後的 notify_url ,無法接受到資料問題. 首先 notify_url 同樣不能使用入如 &a=1&b=2
格式 應使用如下 /a/1/b/2
Pathinfo模式 如果是Linux環境還需要對資料夾有 相應的許可權 才能寫入資訊.開發者可以在 notify_url 中根據 支付返回的狀態進行一些相應的操作 例如修改訂單狀態…傳送模板訊息 提醒使用者交易成功等等..
關於支付測試:
1. 登陸微信的公眾平臺後臺(微信公眾平臺)—> 微信支付–>開發者配置 填寫上傳 測試的授權目錄 和 微信測試白名單 注意: 如果需要用到支付中的oauth 還應該去配置下 oauth認證的授權目錄(是不是很麻煩….)
2.如果出現 access_token:not_allow 之類資訊 一般都是 支付的授權目錄 不正確.
3.如果下載的是微信支付V3版本的官方Demo,那麼請首先修改其中的程式碼 curl_setopt($ch, CURLOP_TIMEOUT, $this->curl_timeout);
修改為 curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);
分別位於 WxPayPubHelper.php 的 155 821行 ,註釋掉 171行.
4.支付引數解析 配置檔案中的 appid 和 appsecret 是開發者模式中的 appid 和 appsecret, mchid 和 key 分別在 微信傳送的郵件中可以找到.