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

Implementierung der WeChat-Zahlungsinitiierung und -Abfrage in PHP

WBOY
WBOYOriginal
2023-05-13 22:31:341226Durchsuche

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);
  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);
  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>';
  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 '支付失败';
  }

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!

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