首頁 >後端開發 >php教程 >Laravel 進行微信支付開發實例

Laravel 進行微信支付開發實例

小云云
小云云原創
2018-05-26 14:08:484437瀏覽

本文我們主要和大家分享Laravel 進行微信支付開發實例,微信支付在現在是非常的流行了特別是在手機中我們只需要簡單的操作即可完成支付了,希望我們能幫助到大家。

1、安裝依賴套件

在專案根目錄下執行以下指令安裝依賴:

composer require overtrue/laravel-wechat 2.1.*

安裝完成後在config/app.php中註冊服務提供者:

Overtrue\LaravelWechat\ServiceProvider::class
 如果你想在程式碼中通過WeChat門面,可以將其加入config/app.php的aliases數組中:

'Wechat' => Overtrue\LaravelWechat\Facade::class

2 、設定微信公眾號設定
 完成上述操作後,執行下列指令發布設定檔到config目錄:

php artisan vendor:publish

執行成功後編輯config/wechat.php檔案:

<?php
  return [
      &#39;use_alias&#39; => env(&#39;WECHAT_USE_ALIAS&#39;, false),
      &#39;app_id&#39; => env(&#39;WECHAT_APPID&#39;, &#39;Your AppId&#39;), // 必填
      &#39;secret&#39; => env(&#39;WECHAT_SECRET&#39;, &#39;Your Secret&#39;), // 必填
      &#39;token&#39; => env(&#39;WECHAT_TOKEN&#39;, &#39;Your Token&#39;), // 必填
      &#39;encoding_key&#39; => env(&#39;WECHAT_ENCODING_KEY&#39;, &#39;Your Encoding AES Key&#39;) // 只有加密模式需要
  ];

將你的微信公眾號的相關資訊填寫到對應配置,需要注意的是如果要使用微信支付功能,需要經過認證的公眾號,且目前微信公眾平台測試帳號不支援支付介面。

使用微信付款前,需要先到微信公眾平台配置好授權目錄、測試帳號等資訊。 微信支付開發文件可參考:https://pay.weixin.qq.com/wiki/doc/api/index.html

3、使用範例

##註:Laravel 5 預設啟用了CSRF 中間件,因為微信的訊息是POST 過來,所以會觸發CSRF 檢查導致無法正確回應訊息,所以可以在CSRF驗證中排除指定URL。具體可參考:Laravel中如何從CSRF中排除指定URL。

 PHP

<?php
use Overtrue\Wechat\Payment;  
use Overtrue\Wechat\Payment\Order;  
use Overtrue\Wechat\Payment\Business;  
use Overtrue\Wechat\Payment\UnifiedOrder;
/**   * 第 1 步:定义商户   */  
$business = new Business(      APP_ID,      APP_KEY,      MCH_ID,      MCH_KEY  );
/**   * 第 2 步:定义订单   */  
$order = new Order();  
$order->body = &#39;test body&#39;;  
$order->out_trade_no = md5(uniqid().microtime());  
$order->total_fee = &#39;1&#39;; // 单位为 “分”, 字符串类型  
$order->openid = OPEN_ID;  
$order->notify_url = &#39;http://xxx.com/wechat/payment/notify&#39;;
/**   * 第 3 步:统一下单   */  
$unifiedOrder = new UnifiedOrder($business, $order);
/**   * 第 4 步:生成支付配置文件   */  
$payment = new Payment($unifiedOrder);  
Javascript
var WXPayment = function() {      
if( typeof WeixinJSBridge === &#39;undefined&#39; ) {          
alert(&#39;请在微信在打开页面!&#39;);          
return false;      
}      
WeixinJSBridge.invoke(          &#39;getBrandWCPayRequest&#39;, <?php echo $payment->getConfig(); 
?>, 
function(res) {              
switch(res.err_msg) {                  
case &#39;get_brand_wcpay_request:cancel&#39;:                      
alert(&#39;用户取消支付!&#39;);                      
break;                  
case &#39;get_brand_wcpay_request:fail&#39;:                      
alert(&#39;支付失败!(&#39; res.err_desc &#39;)&#39;);                      
break;                  
case &#39;get_brand_wcpay_request:ok&#39;:                      
alert(&#39;支付成功!&#39;);                      
break;                  
default:                      
alert(JSON.stringify(res));                      
break;              
}          
}      
);  }  
HTML
<button type="button" onclick="WXPayment()">      
支付 ¥<?php 
echo ($order->total_fee / 100); 
?> 元  </button>

支付通知

<?php
use Overtrue\Wechat\Payment\Notify;
$notify = new Notify(      APP_ID,      APP_KEY,      MCH_ID,      MCH_KEY  );
$transaction = $notify->verify();
if (!$transaction) {      $notify->reply(&#39;FAIL&#39;, &#39;verify transaction error&#39;);  }
// var_dump($transaction);
echo $notify->reply();

4、在Lumen中使用

#此外,laravel-wechat也支援Lumen。使用Composer安裝完laravel-wechat後需要在bootstrap/app.php中82行左右加入這一行程式碼:

$app->register(Overtrue\LaravelWechat\ServiceProvider::class);

同時在ENV中設定以下選項:

WECHAT_USE_ALIAS=false
  WECHAT_APPID=xxx
  WECHAT_SECRET=xxx
  WECHAT_TOKEN=xxx
  WECHAT_ENCODING_KEY=xxx

 如果你習慣使用config/wechat.php 來設定的話,請記得在bootstrap/app.php 中19行以後加入:


$app->configure(&#39;wechat&#39;);

 當然,除此之外,laravel-wechat也提供了更多微信SDK支援。


相關推薦:

PHP支付寶介面實例精講

PHP實作以支付寶為例的RSA簽章產生訂單功能

php初學者如何學習實作微信支付和支付寶支付的相關教學

以上是Laravel 進行微信支付開發實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn