Maison  >  Article  >  développement back-end  >  Exemple de développement de paiement Laravel WeChat

Exemple de développement de paiement Laravel WeChat

小云云
小云云original
2018-05-26 14:08:484335parcourir

Dans cet article, nous partageons principalement avec vous des exemples de développement Laravel de paiement WeChat. Le paiement WeChat est très populaire maintenant, en particulier sur les téléphones mobiles. Nous n'avons besoin que d'opérations simples pour effectuer le paiement.

1. Installez les packages de dépendances

Exécutez la commande suivante dans le répertoire racine du projet pour installer les dépendances :

composer require overtrue/laravel-wechat 2.1.*

Une fois l'installation terminée, enregistrez le fournisseur de services. dans config/app.php Auteur :

OvertrueLaravelWechatServiceProvider::class
Si vous souhaitez transmettre la façade WeChat dans le code, vous pouvez l'ajouter au tableau d'alias dans config/app.php :

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

2, Configurer les paramètres du compte public WeChat
Après avoir terminé les opérations ci-dessus, exécutez la commande suivante pour publier le fichier de configuration dans le répertoire de configuration :

php artisan vendor:publish

Après l'opération réussie, modifiez le fichier 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;) // 只有加密模式需要
  ];

Remplissez les informations pertinentes de votre compte public WeChat dans la configuration correspondante. A noter que si vous souhaitez utiliser la fonction de paiement WeChat, vous avez besoin d'un. compte public certifié, et le compte de test actuel de la plateforme publique WeChat ne prend pas en charge l'interface de paiement.

Avant d'utiliser le paiement WeChat, vous devez vous rendre sur la plateforme publique WeChat pour configurer le répertoire d'autorisation, le compte test et d'autres informations. Pour les documents de développement des paiements WeChat, veuillez vous référer à : https://pay.weixin.qq.com/wiki/doc/api/index.html

Exemples d'utilisation

Remarque : Laravel. 5 est activé par défaut Sans le middleware CSRF, étant donné que le message WeChat est POSTé, il déclenchera la vérification CSRF et empêchera une réponse correcte au message. Par conséquent, l'URL spécifiée peut être exclue de la vérification CSRF. Pour plus de détails, veuillez vous référer à : Comment exclure les URL spécifiées du CSRF dans Laravel.
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>

Notification de paiement

<?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. Utilisation dans Lumen

De plus, laravel-wechat prend également en charge Lumen. Après avoir utilisé Composer pour installer laravel-wechat, vous devez ajouter cette ligne de code autour de la ligne 82 dans bootstrap/app.php :

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

En même temps, configurez les options suivantes dans ENV :

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

Si vous avez l'habitude d'utiliser config/wechat.php pour configurer, n'oubliez pas d'ajouter bootstrap/app.php après la ligne 19 :

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

Bien sûr, en plus, laravel-wechat fournit également davantage de support pour le SDK WeChat.

Recommandations associées :

Exemple d'interface PHP Alipay cours approfondi

PHP implémente l'ordre de génération de signature RSA en utilisant Alipay comme un exemple de fonctions

Tutoriels associés sur la façon dont les débutants PHP peuvent apprendre à implémenter le paiement WeChat et le paiement Alipay

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn