Maison Applet WeChat Développement WeChat Utilisez EasyWechat pour développer rapidement le paiement par compte public WeChat

Utilisez EasyWechat pour développer rapidement le paiement par compte public WeChat

Sep 14, 2017 am 09:58 AM
easywechat 开发

Préparation anticipée :

Après avoir demandé le paiement WeChat, vous recevrez 2 paramètres, l'identifiant du commerçant et la clé du commerçant
Remarque. , ces deux paramètres ne doivent pas être confondus avec les paramètres WeChat
Paramètres WeChat : appid, appkey, token
Paramètres de paiement : Merchant_id (numéro du commerçant), clé (Paiement). clé)
Comment obtenir la clé de paiement ?
Allez sur https://pay.weixin.qq.com -->Centre de comptes--> Sécurité API-->Définir la clé API
Définissez vous-même une clé de 32 bits

Processus de paiement WeChat :

1. Composer installe le package EasyWechat

Exigences en matière d'environnement :

  • PHP >= 5.5. 9

  • Extension PHP cURL

  • Extension PHP OpenSSL

Installation :

composer require overtrue/wechat:~3.1 -vvv

2. Public Configuration du numéro

2.1, Configurer l'annuaire de paiement et le nom de domaine autorisé

2.2. Configurer l'autorisation de la page Web

3. Initialisez le SDK et créez une EasyWeChatFoundationApplication instance

<?php
use EasyWeChat\Foundation\Application;protected $app=null;public function construct(){   
$options = [   /**
     * Debug 模式,bool 值:true/false
     *
     * 当值为 false 时,所有的日志都不会记录     */
    'debug'  => true,    /**
     * 账号基本信息,请从微信公众平台/开放平台获取     */
    'app_id'  => 'your-app-id',         // AppID
    'secret'  => 'your-app-secret',     // AppSecret
    'token'   => 'your-token',          // Token
    'aes_key' => '',                    // EncodingAESKey,安全模式下请一定要填写!!!

    /**
     * 日志配置
     *
     * level: 日志级别, 可选为:
     *         debug/info/notice/warning/error/critical/alert/emergency
     * permission:日志文件权限(可选),默认为null(若为null值,monolog会取0644)
     * file:日志文件位置(绝对路径!!!),要求可写权限     */
    'log' => [        'level'      => 'debug',
        'permission' => 0777,
        'file'       => '/tmp/easywechat.log',
    ],    /**
     * OAuth 配置
     *
     * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
     * callback:OAuth授权完成后的回调页地址     */
    'oauth' => [        
            'scopes'   => ['snsapi_userinfo'],
        'callback' => '/examples/oauth_callback.php',
    ],    /**
     * 微信支付     */
    'payment' => [        'merchant_id'        => 'your-mch-id',
        'key'                => 'key-for-signature',
        'cert_path'          => 'path/to/your/cert.pem', // XXX: 绝对路径!!!!
        'key_path'           => 'path/to/your/key',      // XXX: 绝对路径!!!!
        'notify_url'         => '默认的订单回调地址',       // 你也可以在下单时单独设置来想覆盖它
        // 'device_info'     => '013467007045764',
        // 'sub_app_id'      => '',
        // 'sub_merchant_id' => '',
        // ...
    ],];$this->$app = new Application($options);
}
Copier après la connexion

4. Récupérez l'objet de paiement payment

$payment =$this->$app->payment;
Copier après la connexion

5. Passez la commande de l'objet de commande (numéro de commande, montant, openid) comme paramètres dans

<?phpuse EasyWeChat\Foundation\Application;use EasyWeChat\Payment\Order; 

$attributes = [ 'trade_type' => 'JSAPI', // JSAPI,NATIVE,APP... 'body' => 'iPad mini 16G 白色', 'detail' => 'iPad mini 16G 白色',
'out_trade_no' => '1217752501201407033233368018',//订单号 'total_fee' => 5388, // 单位:分 'notify_url' => 'http://xxx.com/order-notify', // 支付结果通知网址,如果不设置则会使用配置里的默认地址 'openid' => '当前用户的 openid', // trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识, // ... ]; $order = new Order($attributes);
Copier après la connexion

6. Prétraitez et obtenez un identifiant de pré-traitement, paiement->préparer(commande);

$result = $payment->prepare($order);
if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS'){    
$prepayId = $result->prepay_id;
}
Copier après la connexion

7. Générer la configuration JS du paiement

$json = $payment->configForPayment($prepayId); // 返回 json 字符串,如果想返回数组,传第二个参数 false
Copier après la connexion

8. Le numéro de commande et le json seront écrits dans le modèle pour la confirmation du paiement par l'utilisateur, déclencheront le js et appelleront le paiement

return view('done',['order'=>$ordersn,'json'=>$json]);
Copier après la connexion
<script>$('form').submit (function() {
WeixinJSBridge.invoke('getBrandWCPayRequest', {!!$json!!},function(res){if(res.err_msg == "get_brand_wcpay_request:ok" ) {// 使用以上方式判断前端返回,微信团队郑重提示:
// res.err_msg将在用户支付成功后返回
// ok,但并不保证它绝对可靠。          }
      }
);return false;
});</script>
Copier après la connexion

9. Rappel réussi

Une fois que l'utilisateur a payé avec succès, le serveur WeChat lancera une requête POST vers l'URL de rappel définie dans la commande, et le contenu de la requête est un XML.

Configurez d'abord la méthode payante dans le middleware VerifyCsrfToken sans vérification CSRF

   public function paid(){$response =$this->$app->payment->handleNotify(function($notify, $successful){    // 使用通知里的 "微信支付订单号" 或者 "商户订单号" 去自己的数据库找到订单
    $order = 查询订单($notify->out_trade_no); 
    if (!$order) { // 如果订单不存在
        return 'Order not exist.'; // 告诉微信,我已经处理完了,订单没找到,别再通知我了    }    // 如果订单存在
    // 检查订单是否已经更新过支付状态
    if ($order->paid_at) { // 假设订单字段“支付时间”不为空代表已经支付
        return true; // 已经支付成功了就不再更新了    }    // 用户是否支付成功
    if ($successful) {        // 不是已经支付状态则修改为已经支付状态
        $order->paid_at = time(); // 更新支付时间为当前时间
        $order->status = 'paid';
    } else { // 用户支付失败
        $order->status = 'paid_fail';
    }    $order->save(); // 保存订单
    return true; // 返回处理完成});
    return $response;
}
Copier après la connexion

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 de ce site Web
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

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quatre outils de programmation assistés par IA recommandés Quatre outils de programmation assistés par IA recommandés Apr 22, 2024 pm 05:34 PM

Quatre outils de programmation assistés par IA recommandés

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Apr 07, 2024 am 09:10 AM

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE

Apprenez à développer des applications mobiles en utilisant le langage Go Apprenez à développer des applications mobiles en utilisant le langage Go Mar 28, 2024 pm 10:00 PM

Apprenez à développer des applications mobiles en utilisant le langage Go

Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Feb 22, 2024 pm 02:33 PM

Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement

Comprendre VSCode : à quoi sert cet outil ? Comprendre VSCode : à quoi sert cet outil ? Mar 25, 2024 pm 03:06 PM

Comprendre VSCode : à quoi sert cet outil ?

Guide complet : processus détaillé d'installation de la machine virtuelle Java Guide complet : processus détaillé d'installation de la machine virtuelle Java Jan 24, 2024 am 09:02 AM

Guide complet : processus détaillé d'installation de la machine virtuelle Java

PHP est-il front-end ou back-end dans le développement Web ? PHP est-il front-end ou back-end dans le développement Web ? Mar 24, 2024 pm 02:18 PM

PHP est-il front-end ou back-end dans le développement Web ?

Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Mar 28, 2024 pm 01:06 PM

Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end

See all articles