php微信支付(僅pc端掃碼支付模式二)詳細步驟.----僅適合第一次做微信開發的程序員


本人最近做了微信支付開發,是第一次接觸.其中走了很多彎路,遇到的問題也很多.為了讓和我一樣的新人不再遇到類似的問題,我把我的開發步驟和問題寫出來,以供參考.

開發時間是2016/8/10,所以微信支付的版本也是對應此時的版本.

一.前期准備:

首先你們公司開通微信支付功能后,會收到一份郵件,里面有賬戶相關信息,一般有:微信支付商戶號,商戶平台登錄帳號,商戶平台登錄密碼,申請對應的公眾號,公眾號APPID。

1.下載demo:用上面信息登陸“微信商戶平台”,>>>(右上角開發文檔)>>>公眾號支付>>>sdk下載>>>選php

2.下載證書:賬戶中心>>>api安全

將下載的證書中的所有文件解壓到demo的cert文件夾中(demo原先自帶的要刪掉),然后修改demo中lib/WxPay.Config.php中的以下配置
const APPID = '郵件中有,`公眾號APPID`';
const MCHID = '郵件中有,`微信支付商戶號`';
const KEY = 'wxpay.config.php中注釋有相關鏈接';
const APPSECRET = '公眾平台開發者中心設置,同樣注釋中有鏈接';

3.配置好后去微信公眾平台,里面有微信支付功能如下圖.在開發配置中設置支付目錄和測試目錄.這里主要是配置測試目錄,支付目錄可以先不管(我的域名是www.test.com),然后將自己的微信號加入測試白名單. 

4.再去微信公眾平台>>>開發>>>接口權限>>>網頁服務的第一項`網頁賬號`,修改它的值為你自己的域名(僅僅是域名).如圖:

 

 

二.修改demo中錯誤代碼和不必要代碼(僅僅針對當前的版本)

  1. 修改文件WxPay.Api.php

將curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//嚴格校驗
改為:

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//嚴格校驗2

2.(針對jsapi支付)如果訪問jsapi.php時你要用get方式傳遞參數,那么你要去修改WxPay.JsapiPay.php中的

$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']);

改為:

$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']);

或者在寫鏈接時寫兩個??傳參,例如:http://www.test.com/demo/example/jsapi.php??id=xxx&..

3.刪去wxpay.notify.php中的ReplyNotify函數中$this->GetReturn_code(‘參數’) == "SUCCESS"里面的’參數’.
4.在native.php中添加$notify=new NativePay();如圖:

5.注釋掉native.php中模式一相關的代碼.
 

三.開始開發,按大概流程講述.

1.首先點擊支付后,會到native.php文件中去,他會設置一大堆參數,然后處理完畢能得到一個url鏈接,如圖:

將里面的setNotify_url設置為你的native_notify.php文件所在的位置.

其中的setOut_trade_no和setTotal_fee和setProduct_id這三個參數是你可以隨便填寫的(其他參數默認就可以).在支付成功后微信服務器會將這兩個參數的值返回給你.我是直接將商品訂單號碼放到setOut_trade_no中,將商品的id放到setProduct_id中傳遞過去.

以上都設置好后再請求native.php時,應該可以得到一個二維碼了.

2.掃碼支付完成后,微信服務器會自動請求你的native_notify.php文件.請求進入后直接通過最后一句$notify->Handle(true);跳到了WxPay.Notify.php中,然后還調用了很多其他函數,
后面的邏輯和jsapi支付一樣的(我先做的jsapi支付),這里就不提了.
 
四.支付后跳轉
支付完成后,手機提示支付成功,並會顯示支付信息,但是pc端的二維碼頁面卻不會跳轉.這需要我們自己在native.php頁面設置一個定時器,我直接設置為跳轉到百度.你設置為自己想要跳轉到的頁面路徑即可.大致代碼如圖:

其中的$order_id是get傳過來的訂單號.通過查詢訂單號對應商品的支付狀態判斷是否成功,然后跳轉.

至此,一個掃碼支付流程大致走完了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM