Heim > Backend-Entwicklung > PHP-Tutorial > Implementierung der WeChat-Zahlungsinitiierung und -Abfrage in PHP

Implementierung der WeChat-Zahlungsinitiierung und -Abfrage in PHP

WBOY
Freigeben: 2023-05-13 22:32:01
Original
1267 Leute haben es durchsucht

Angesichts der Beliebtheit der WeChat-Zahlung müssen immer mehr Websites die WeChat-Zahlungsfunktion integrieren. In diesem Artikel besprechen wir, wie man die WeChat-Zahlungsinitiierung und -Abfrage in PHP implementiert.

  1. Rufen Sie die einheitliche Bestell-API auf.

Um die WeChat-Zahlung in PHP zu initiieren, besteht der erste Schritt darin, die einheitliche Bestell-API der WeChat-Zahlung aufzurufen, um einen Vorauszahlungsauftrag zu generieren. Die API muss einige notwendige Parameter übergeben, darunter Händler-ID, Zahlungsbetrag, Bestellnummer, Rückruf-URL usw. Das Folgende ist ein Beispielcode:

<?php
  require_once('WxPayApi.php');
  require_once('WxPayUnifiedOrder.php');
  
  $order = new WxPayUnifiedOrder();
  $order->SetBody('商品描述');
  $order->SetOut_trade_no('订单号');
  $order->SetTotal_fee('支付金额');
  $order->SetNotify_url('回调URL');
  $order->SetTrade_type('JSAPI');
  $order->SetOpenid('用户OpenID');
  
  $result = WxPayApi::unifiedOrder($order);
Nach dem Login kopieren
  1. Informationen zur Vorauszahlungsbestellung abrufen

Nach dem Aufruf der einheitlichen Bestell-API müssen wir die Informationen zur Vorauszahlungsbestellung abrufen, einschließlich der Sitzungs-ID der Vorauszahlungstransaktion (prepay_id) und anderer notwendiger Parameter. Das Folgende ist ein Beispielcode:

<?php
  require_once('WxPayApi.php');
  require_once('WxPayData.php');
  
  $input = new WxPayData();
  $input->SetBody('商品描述');
  $input->SetOut_trade_no('订单号');
  $input->SetTotal_fee('支付金额');
  $input->SetNotify_url('回调URL');
  $input->SetTrade_type('JSAPI');
  $input->SetOpenid('用户OpenID');
  
  $result = WxPayApi::unifiedOrder($input);
  $prepay_id = $result['prepay_id'];
  $params = [
    'appId' => $result['appid'],
    'timeStamp' => time(),
    'nonceStr' => $result['nonce_str'],
    'package' => "prepay_id={$prepay_id}",
    'signType' => 'MD5'
  ];
  $params['paySign'] = WxPayApi::getSign($params);
Nach dem Login kopieren
  1. Zur Zahlungsseite springen

Nachdem wir die Prepaid-Bestellinformationen erhalten haben, können wir die erhaltenen Parameter an das Frontend übergeben, damit der Benutzer die Zahlung im WeChat-Client veranlassen kann. Das Folgende ist ein Beispielcode:

<?php
  echo '<script language="javascript">';
  echo 'WeixinJSBridge.invoke("getBrandWCPayRequest", {
    "appId":"'.$params['appId'].'",
    "timeStamp":"'.$params['timeStamp'].'",
    "nonceStr":"'.$params['nonceStr'].'",
    "package":"'.$params['package'].'",
    "signType":"'.$params['signType'].'",
    "paySign":"'.$params['paySign'].'"
  }, function(res){
    if(res.err_msg == "get_brand_wcpay_request:ok" ){
      alert("支付成功");
    }else{
      alert("支付失败");
    }
  });';
  echo '</script>';
Nach dem Login kopieren
  1. Zahlungsergebnisse abfragen

Nach Abschluss der Zahlung müssen wir die Zahlungsergebnisse abfragen, um sicherzustellen, dass die Transaktion erfolgreich abgeschlossen wurde. Das Folgende ist ein Beispielcode:

<?php
  require_once('WxPayApi.php');
  
  $input = new WxPayOrderQuery();
  $input->SetOut_trade_no('订单号');
  
  $result = WxpayApi::orderQuery($input);
  if ($result['trade_state'] == 'SUCCESS') {
    echo '支付成功';
  } else {
    echo '支付失败';
  }
Nach dem Login kopieren

Zusammenfassung:

Das Obige ist der gesamte Prozess der Initiierung und Abfrage der WeChat-Zahlung in PHP. Wenn wir die WeChat-Zahlung auf der Website integrieren müssen, können wir die oben genannten Schritte ausführen. Es wird empfohlen, für die Entwicklung das offiziell bereitgestellte SDK zu verwenden, was viel Zeit und Energie sparen kann.

Das obige ist der detaillierte Inhalt vonImplementierung der WeChat-Zahlungsinitiierung und -Abfrage in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage