PHP微信支付--接入支付SDK,生成訂單二維碼進行掃碼支付
阿新 • • 發佈:2019-01-12
在PHP開發微信支付中接入支付SDK,生成訂單二維碼進行掃碼支付,實際運用中做出一些整理,以便後期查閱。整體流程如下圖;
微信支付官方流程:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5
1、當我們選擇使用掃碼支付,首先會出現下載微信sdk包,選擇PHPsdk包進行下載,下載到本地後會發現是一個tp5框架,只是少了一個Common資料夾,把下載好的sdk包放進去。等待呼叫......
2、設定支付授權目錄,掃碼成功後的回撥地址
3、支付模式二
4、實現程式碼:
<?php namespace app\index\controller; class Index { public function index() { require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php'; $input = new \WxPayUnifiedOrder(); // 設定商品描述 $input->SetBody('測試商品'); // 設定訂單號 ---這裡使用的時間,其實是自己生成的 $input->SetOut_trade_no(date('YmdHis')); // 設定訂單金額(單位:分) $input->SetTotal_fee('1'); // 設定非同步通知地址 $input->SetNotify_url('http://www.php.wx/index.php/index/Notify/index'); // 設定交易型別 $input->SetTrade_type('NATIVE'); // 設定商品ID $input->SetProduct_id('123456780'); // 呼叫統一下單API $result = \WxPayAPI::unifiedOrder($input); // 生成二維碼圖片,在這裡因為我們自己除錯的需要修改配置common/lib/WxPay.Api.php的嚴格效驗true修改為false $code_url = $result['code_url']; $img = '<img src=http://paysdk.weixin.qq.com/example/qrcode.php?data='.urlencode($code_url).' />'; echo $img; } } ?>
5、需要注意在微信支付非同步處理中的回撥地址,一定不是你的授權地址,處理微信支付非同步請求的程式碼,Notify/index.php:
<?php namespace app\index\controller; class Notify { public function index() { require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php'; $msg = ''; \WxPayApi::notify(function($result){ // 簽名校驗通過 // 查詢訂單號,如果不存在,return; // 如果訂單已存在,且訂單已經被處理過,return; // 如果訂單沒有被處理,處理訂單 },$msg); } } ?>
注意:如果非同步驗證的時候使用WxPay.Api.php對indx.php進行簽名驗證,是無法訪問到這個方法的。
(github克隆地址:https://github.com/mruserfeng/weiixn.git);