Heim  >  Artikel  >  WeChat-Applet  >  Verwenden Sie EasyWechat, um die Zahlung für öffentliche WeChat-Konten schnell zu entwickeln

Verwenden Sie EasyWechat, um die Zahlung für öffentliche WeChat-Konten schnell zu entwickeln

一个新手
一个新手Original
2017-09-14 09:58:215310Durchsuche

Frühe Vorbereitung:

Nachdem Sie die WeChat-Zahlung beantragt haben, erhalten Sie 2 Parameter, Händler-ID und Händlerschlüssel
Hinweis , diese beiden Parameter sollten nicht mit WeChat-Parametern verwechselt werden: appid, appkey, token
Zahlungsparameter: Merchant_ID (Händlernummer), Schlüssel( Zahlung Schlüssel)
Wie erhalte ich den Zahlungsschlüssel?
Gehen Sie zu https://pay.weixin.qq.com -->Account Center--> API-Sicherheit –>API-Schlüssel festlegen
Legen Sie selbst einen 32-Bit-Schlüssel fest
WeChat-Zahlungsprozess:

1. Composer installiert das EasyWechat-Paket

Umgebungsanforderungen:

    PHP >= 5.5. 9
  • PHP cURL-Erweiterung
  • PHP OpenSSL-Erweiterung
  • Installation:

Komponist benötigt overtrue/wechat:~3.1 -vvv

2. Öffentlich Nummernkonfiguration

2.1,

Zahlungsverzeichnis und autorisierten Domainnamen konfigurieren 2.2. Webseitenautorisierung konfigurieren

3. Initialisieren Sie das SDK und erstellen Sie eine

Instanz

EasyWeChatFoundationApplication

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

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

5. Übergeben Sie die Bestellung des Bestellobjekts (Bestellnummer, Menge, OpenID) als Parameter in
$payment =$this->$app->payment;

6. Vorverarbeitung zum Abrufen eine Vorprozess-ID, Zahlung->vorbereiten(Bestellung);
<?phpuse EasyWeChat\Foundation\Application;use EasyWeChat\Payment\Order; 

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

7. Zahlungs-JS-Konfiguration generieren
$result = $payment->prepare($order);
if ($result->return_code == &#39;SUCCESS&#39; && $result->result_code == &#39;SUCCESS&#39;){    
$prepayId = $result->prepay_id;
}

8. Die Bestellnummer und JSON werden in die Vorlage für die Benutzerbestätigung der Zahlung geschrieben, js auslösen und die Zahlung aufrufen
$json = $payment->configForPayment($prepayId); // 返回 json 字符串,如果想返回数组,传第二个参数 false

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

Nachdem der Benutzer erfolgreich bezahlt hat, initiiert der WeChat-Server eine POST-Anfrage an die in der Bestellung festgelegte Rückruf-URL, und der Inhalt der Anfrage ist ein XML.

Konfigurieren Sie zunächst die kostenpflichtige Methode in der Middleware VerifyCsrfToken ohne CSRF-Überprüfung

Das obige ist der detaillierte Inhalt vonVerwenden Sie EasyWechat, um die Zahlung für öffentliche WeChat-Konten schnell zu entwickeln. 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