laravel+php+支付功能,laravel+微信支付源码
業務流程時序圖
?image
仔細閱讀并看懂 (不是看過,是看明白+看完 ) 微信官方文檔 微信開放平臺文檔;
1.下載微信支付php demo 放在自己的線上服務器上,配置好ngixn(或者apache)網站根目錄到php_sdk_v3.0.9/ 下面,將APPID等填入WxPay.Config.php 文件 配置好微信支付需要的信息。
2.商戶號微信支付回調地址配成 www.xxx.com/;公眾號配置好回調url (方便或者openid)。
3.demo已經準備就緒,瀏覽器訪問www.xxx.com/jsapi.php 出現支付頁面,點擊支付,彈出輸入密碼界面,完美!demo已經運行成功,說明微信平臺配置沒有問題,有問題的請返回去看一下微信的官方文檔。
4.接下來進入主題,準備好laravel(我用的是5.4),將php_sdk_v3.0.9/ 復制到app/下改名Wecaht/
?image
5.這幾個文件都要改一下require的路徑,改為絕對路徑 例如:
require_once DIR."/../lib/WxPay.Config.Interface.php";
?image
6.復制jsapi.php 到resources/views/ 改名jsapi.blade.php
?image
7.jsapi.blade.php 源碼如下<?php ?require_once?__DIR__.'/../../../app/Wecaht/lib/WxPay.Api.php';require_once?__DIR__.'/../../../app/Wecaht/example/WxPay.JsApiPay.php';//?require_once?__DIR__.'/../../../app/Wecaht/example/log.php';//?$logHandler=?new?CLogFileHandler(storage_path('logs').'wechat'.date('Y-m-d').'.log');//?$log?=?Log::Init($logHandler,?15);//①、獲取用戶openid$tools?=?new?JsApiPay();?$openId?=?$tools->GetOpenid("/pay/wechat?sn=".$orderInfo['sn']);?//傳參要這樣傳,還要改一下example/WxPay.JsApiPay.php文件//②、統一下單$input?=?new?WxPayUnifiedOrder();$input->SetBody("微信支付");$input->SetAttach("微信支付");//?$input->SetOut_trade_no('xxx'.date("YmdHis").rand(1,100));$input->SetOut_trade_no($orderInfo['sn']);$input->SetTotal_fee($orderInfo['payment']*100);$input->SetTime_start(date("YmdHis"));$input->SetTime_expire(date("YmdHis",?time()?+?600));$input->SetGoods_tag("一袋鹽");$input->SetNotify_url("http://www.xxx.xyz/pay/notify");//這里填你的回調路徑,是絕對路徑,例如http://aaa.com/wechat/notify$input->SetTrade_type("JSAPI");$input->SetOpenid($openId);$config?=?new?WxPayConfig();//?$logHandler->write(json_encode($input));//?print_r($input);die;$order?=?WxPayApi::unifiedOrder($config,$input);//?echo?'**統一下單支付單信息**?';$jsApiParameters?=?$tools->GetJsApiParameters($order);?//獲取共享收貨地址js函數參數//?$editAddress?=?$tools->GetEditAddressParameters();?//③、在支持成功回調通知中處理成功之后的事宜,見?notify.php/**?*?注意:?*?1、當你的回調地址不可訪問的時候,回調通知會失敗,可以通過查詢訂單來確認支付是否成功?*?2、jsapi支付時需要填入用戶openid,WxPay.JsApiPay.php中有獲取openid流程?(文檔可以參考微信公眾平臺“網頁授權接口”,?*?參考http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html)?*/???>?**該筆訂單支付金額為{{$sum}}元**?立即支付
WxPay.JsApiPay.php 還要改個東西public?function?GetOpenid($addUrl="")?{?//通過code獲得openid?if?(!isset($_GET['code'])){?//觸發微信返回code碼?$baseUrl?=?urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$addUrl);?$url?=?$this->_CreateOauthUrlForCode($baseUrl);?Header("Location:?$url");?exit();?}?else?{?//獲取code碼,以獲取openid?????????$code?=?$_GET['code'];?$openid?=?$this->getOpenidFromMp($code);?return?$openid;?}?}
8.新建AppControllerpublic?function?wechat(Request?$request)?????{?????????log::info("AppController?wechat?input",$request->all());?????????if(!$request->input('sn')){?????????????return?redirect()->back();?????????}?????????$orderInfo?=?object2array2(OMD::where('sn',$request->input('sn'))->first());?????????if(!$orderInfo){?????????????return?redirect()->back();?????????}?????????return?view("jsapi")?????????????->with(['orderInfo'=>$orderInfo]);//把參數帶到jsapi.blade.php?????}?public?function?notify(Request?$request){?????????$all?=?$request->all();?????????Log::info('AppController?notify?input:',?$all);?????//你的回調業務邏輯?????}
創建路由Route::group(['prefix'?=>?'pay'?,'namespace'?=>?'App'],?function?()?{?//微信支付?????Route::any('wechat','AppController@wechat');??????Route::any('notify','AppController@notify');?});
9.到此大功告成,下次更新一個基于EasyWacht的教程。
作者:刀魚要到島上掉
鏈接:https://www.jianshu.com/p/a25de96e9405
總結
以上是生活随笔為你收集整理的laravel+php+支付功能,laravel+微信支付源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冻干甜酒怎么吃好吃?
- 下一篇: docker中lnmp访问php页面,D