Laravel WeChat決済開発例

小云云
小云云オリジナル
2018-05-26 14:08:484399ブラウズ

この記事では、主に Laravel WeChat 決済の開発例を紹介します。WeChat 決済は現在、特に携帯電話で非常に人気があります。簡単な操作だけで決済を完了できます。

1. 依存関係パッケージをインストールします

プロジェクトのルート ディレクトリで次のコマンドを実行して依存関係をインストールします:

composer require overtrue/laravel-wechat 2.1.*

インストールが完了したら、config/app.php:

OvertrueLaravelWechatServiceProvider::class にサービス プロバイダーを登録します。
コードに追加したい場合は、WeChat ファサードを通じて、config/app.php:

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

のエイリアス配列に追加できます。 2. WeChat パブリック アカウント設定を構成します
上記の操作を完了したら、次のコマンドを実行します。設定ファイルを 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;) // 只有加密模式需要
  ];

WeChat パブリック アカウントの関連情報を対応する設定に入力します。 WeChat の支払い機能を使用したい場合は、認定されたパブリック アカウントが必要です。また、現在の WeChat パブリック プラットフォームのテスト アカウントは支払いインターフェイスをサポートしていません。

WeChat 支払いを使用する前に、WeChat パブリック プラットフォームに移動して、認証ディレクトリ、テスト アカウント、その他の情報を設定する必要があります。 WeChat 決済開発ドキュメントについては、https://pay.weixin.qq.com/wiki/doc/api/index.html を参照してください。

3. 使用例

注: Laravel 5 では、デフォルトで CSRF ミドルウェアが有効になっています。 WeChat のメッセージは POST されるため、CSRF チェックがトリガーされ、メッセージに正しく応答できなくなるため、指定された URL が CSRF 検証から除外される可能性があります。詳細については、「Laravel で指定した URL を CSRF から除外する方法」を参照してください。
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(OvertrueLaravelWechatServiceProvider::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また、より多くの WeChat SDK サポートも提供します。

関連する推奨事項:

PHP Alipay インターフェイスのサンプル チュートリアル

PHP は、Alipay を例として使用して RSA 署名生成順序関数を実装します

PHP 初心者が WeChat 支払いと Alipay 支払いの実装を学ぶ方法に関する関連チュートリアル

以上がLaravel WeChat決済開発例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。