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:
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
InstanzEasyWeChatFoundationApplication
<?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); }
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 = [ '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);
7. Zahlungs-JS-Konfiguration generieren
$result = $payment->prepare($order); if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS'){ $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('done',['order'=>$ordersn,'json'=>$json]);
<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>
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!