第一次做PHP商城項目對接微信支付接口,踩了N次坑,這也不對,那也不對,搞了很久,查了一些資料,終於實現了支付功能,小小總結一下,萬一下次遇到就不用到處找資料了。
微信掃碼支付
前期准備:
1、微信公眾號配置,首先微信公眾號上面要開通支付,並且要填寫網頁授權接口,填好之后呢,就是記錄下公眾號上的APPID、APPsecret,這兩個是要使用到的,其他的還有token、 EncodingAESKey,這兩個我沒有使用過,暫時不知道是干什么用的(有可能在微信支付配置文件會使用到,不過我忘記了^_^);
2、微信商戶號配置,公眾號配置好以后,在公眾號綁定商戶號;之后就是配置商戶號了,首先,要設置支付密鑰,就是APPkey(這個是掃碼支付的時候要使用的,請和公眾號的APPsecret區分開來,不要搞混淆了,SDK配置文件注釋也有說明);然后,就是配置域名啊,回調地址這些的,具體在商戶平台都有說明,按照說明來配置就OK,
配置上大體就這些,第一次配置的時候比較尷尬的是,配置哪里都不知道,問了同事才摸索過來,也算是踩了坑了
3、接口對接,這個就比較麻煩一點,因為需要不斷的在線上調試,直接上圖
OK,統一下單完成之后,其他都不用管了,等待支付成功就OK了,其他支付操作都是SDK的事情,最后就是回調了,回調比較簡單,上圖:
完成!到這一步,微信那邊的處理流程已經結束,剩下的就是回調之后,處理訂單的業務邏輯了,
這個方法是SDKdemo里面的nativi_notify.php這個文件,這個文件繼承了核心文件的WxPay.Notify.php這個文件,只需要把這個文件修改一下即可,不想復制修改,那么直接修改核心Notify文件,不過new對象就要newNotify的類了;
特別說明一下生成二維碼,因為在調用支付接口的時候,返回的是一個支付鏈接,需要手動生成二維碼使用微信客戶端掃一掃才能支付,所以需要對返回的鏈接做處理,這里需要在前端頁面的img標簽的src屬性里面以方法傳參的形式來生成二維碼:
如圖,將后台返回的url地址作為參數,傳遞給qrcode方法,生成二維碼即可,后台方法如下:
當然,二維碼生成類庫,需要自行下載第三方,或者時候微信SDK中的demo中的二維碼生成類即可,此處使用的為微信SDK中自帶的二維碼類;
OK,當這些都完成以后,就會發現,支付也完成了,訂單信息也更新了,但是,頁面還是停留在二維碼頁面,這時候,就需要我們手動去跳轉這個頁面了,我這里是去本地數據庫查詢訂單信息來判斷訂單是否完成來跳轉頁面,沒有使用微信本身的訂單接口來查詢支付情況,因為只有訂單完成支付才會去更新本地訂單數據,所以效果是一樣的,當然,實現就行,暫時沒有考慮效率等等問題,>_<:
這里使用js去跳轉,在二維碼頁面寫上這個js,會定時請求后台query_state方法,只要返回成功就跳轉,沒有結果不做任何操作,后台方法如下:
簡易跳轉就完成了,到此,微信掃碼支付就算是完成了。
