Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für die WeChat-Zahlungsentwicklung von Laravel

Beispiel für die WeChat-Zahlungsentwicklung von Laravel

小云云
小云云Original
2018-05-26 14:08:484385Durchsuche

In diesem Artikel teilen wir Ihnen hauptsächlich die Entwicklungsbeispiele für die WeChat-Zahlung mit, die derzeit sehr beliebt ist, insbesondere auf Mobiltelefonen. Ich hoffe, wir können allen helfen.

1. Abhängigkeitspakete installieren

Führen Sie den folgenden Befehl im Projektstammverzeichnis aus, um die Abhängigkeiten zu installieren:

composer require overtrue/laravel-wechat 2.1.*

Registrieren Sie nach Abschluss der Installation den Dienstanbieter in config/app.php Autor:

OvertrueLaravelWechatServiceProvider::class
Wenn Sie die WeChat-Fassade im Code übergeben möchten, können Sie sie dem Aliases-Array in config/app.php hinzufügen:

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

2, Konfigurieren Sie die Einstellungen des öffentlichen WeChat-Kontos
Führen Sie nach Abschluss der oben genannten Vorgänge den folgenden Befehl aus, um die Konfigurationsdatei im Konfigurationsverzeichnis zu veröffentlichen:

php artisan vendor:publish

Nach erfolgreichem Vorgang bearbeiten die Datei 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;) // 只有加密模式需要
  ];

Geben Sie die relevanten Informationen Ihres öffentlichen WeChat-Kontos in die entsprechende Konfiguration ein. Beachten Sie, dass Sie eine benötigen, wenn Sie die WeChat-Zahlungsfunktion nutzen möchten zertifiziertes öffentliches Konto, und das aktuelle Testkonto der öffentlichen WeChat-Plattform unterstützt die Zahlungsschnittstelle nicht.

Bevor Sie die WeChat-Zahlung verwenden, müssen Sie zur öffentlichen WeChat-Plattform gehen, um das Autorisierungsverzeichnis, das Testkonto und andere Informationen zu konfigurieren. Dokumente zur WeChat-Zahlungsentwicklung finden Sie unter: https://pay.weixin.qq.com/wiki/doc/api/index.html

3 Verwendungsbeispiele

Hinweis: Laravel 5 ist standardmäßig aktiviert. Ohne die CSRF-Middleware löst die WeChat-Nachricht, da sie gepostet wird, die CSRF-Prüfung aus und führt dazu, dass nicht korrekt auf die Nachricht reagiert werden kann, sodass die angegebene URL von der CSRF-Überprüfung ausgeschlossen werden kann. Einzelheiten finden Sie unter: So schließen Sie bestimmte URLs von CSRF in Laravel aus.
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>

Zahlungsbenachrichtigung

<?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. Verwendung in Lumen

Darüber hinaus unterstützt laravel-wechat auch Lumen. Nachdem Sie Laravel-Wechat mit Composer installiert haben, müssen Sie diese Codezeile um Zeile 82 in bootstrap/app.php hinzufügen:

$app->register(OvertrueLaravelWechatServiceProvider::class);

Konfigurieren Sie gleichzeitig die folgenden Optionen in ENV:

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

Wenn Sie es gewohnt sind, config/wechat.php zum Konfigurieren zu verwenden, denken Sie bitte daran, nach Zeile 19 bootstrap/app.php hinzuzufügen:

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

Darüber hinaus bietet laravel-wechat natürlich auch mehr WeChat SDK-Unterstützung.

Verwandte Empfehlungen:

Beispiel für eine PHP-Alipay-Schnittstelle, ausführlicher Vortrag

PHP implementiert die Reihenfolge der RSA-Signaturgenerierung mit Alipay als eine Beispielfunktion

Verwandte Tutorials, wie PHP-Anfänger lernen können, WeChat-Zahlungen und Alipay-Zahlungen zu implementieren

Das obige ist der detaillierte Inhalt vonBeispiel für die WeChat-Zahlungsentwicklung von Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn