Leitfaden zur Online-Zahlungs- und Rückerstattungsabwicklung mit PHP und Miniprogrammen

王林
Freigeben: 2023-07-04 13:20:01
Original
1165 Leute haben es durchsucht

Leitfaden zur Online-Zahlungs- und Rückerstattungsabwicklung mit PHP und Miniprogrammen

Mit der kontinuierlichen Entwicklung des E-Commerce beginnen immer mehr Unternehmen, Online-Zahlungs- und Rückerstattungsfunktionen zu nutzen, um Verbrauchern bequeme und schnelle Zahlungsmethoden anzubieten. Als häufig verwendete serverseitige Programmiersprache kann PHP mit kleinen Programmen kombiniert werden, um Online-Zahlungs- und Rückerstattungsfunktionen zu realisieren. In diesem Artikel wird die Verwendung von PHP und Miniprogrammen zur Entwicklung von Online-Zahlungs- und Rückerstattungsfunktionen vorgestellt und Codebeispiele als Referenz für die Leser bereitgestellt.

1. Online-Zahlungsfunktion

  1. Vorbereitung

Zuerst müssen wir ein Händlerkonto und einen Schlüssel sowie die WeChat-Zahlungs-API-Schnittstelle vorbereiten. Im Miniprogramm können wir die Zahlungsschnittstelle des Miniprogramms von WeChat Pay verwenden, um die Zahlungsfunktion abzuschließen. Einzelheiten finden Sie in der Entwicklungsdokumentation von WeChat Payment.

  1. Kundenentwicklung

Auf der Front-End-Seite des Miniprogramms können wir die Methode wx.requestPayment() von WeChat Pay verwenden, um die Zahlungsfunktion zu aktivieren. Der spezifische Code lautet wie folgt:

wx.requestPayment({
  'timeStamp': '',
  'nonceStr': '',
  'package': '',
  'signType': 'MD5',
  'paySign': '',
  'success': function(res){
     // 支付成功的回调函数
  },
  'fail': function(res){
     // 支付失败的回调函数
  }
})
Nach dem Login kopieren

Bei dieser Methode müssen wir einige Zahlungsparameter wie Zeitstempel, Zufallszeichenfolge, Bestellinformationen usw. übergeben. Diese Parameter können serverseitig abgerufen werden. Weitere Informationen finden Sie in der Entwicklungsdokumentation von WeChat Payment.

  1. Serverseitige Entwicklung

Auf der Serverseite müssen wir PHP verwenden, um Zahlungsanforderungen zu verarbeiten. Der spezifische Code lautet wie folgt:

<?php
  $appid = 'your_appid'; // 小程序的appid
  $mch_id = 'your_mch_id'; // 商户号
  $key = 'your_key'; // 商户密钥
  $body = '商品描述';
  $out_trade_no = '订单号';
  $total_fee = '总金额';

  $params = array(
    'appid' => $appid,
    'mch_id' => $mch_id,
    'nonce_str' => md5(rand()),
    'body' => $body,
    'out_trade_no' => $out_trade_no,
    'total_fee' => $total_fee,
    'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
    'trade_type' => 'JSAPI',
    'openid' => '用户openid'
  );

  ksort($params);
  $string = http_build_query($params);
  $string = urldecode($string).'&key='.$key;
  $sign = strtoupper(md5($string));

  $params['sign'] = $sign;

  $xml = '<xml>';
  foreach ($params as $key => $value) {
    $xml .= '<'.$key.'>'.$value.'</'.$key.'>';
  }
  $xml .= '</xml>';

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/pay/unifiedorder');
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
  curl_close($ch);

  $result = simplexml_load_string($result);
  $prepay_id = $result->prepay_id; // 预支付id

  $params = array(
    'appId' => $appid,
    'timeStamp' => time(),
    'nonceStr' => md5(rand()),
    'package' => 'prepay_id='.$prepay_id,
    'signType' => 'MD5'
  );

  ksort($params);
  $string = http_build_query($params);
  $string = urldecode($string).'&key='.$key;
  $sign = strtoupper(md5($string));

  $params['paySign'] = $sign;

  echo json_encode($params);
?>
Nach dem Login kopieren

In diesem Code müssen wir zunächst eine Signatur basierend auf dem Händler generieren Konto und Schlüssel hinzufügen und die relevanten Parameter hinzufügen. Die Parameter werden in eine XML-Formatzeichenfolge gespleißt und die Zahlungsanforderung wird über cURL an die WeChat-Zahlungsschnittstelle gesendet. Nachdem wir das Rückgabeergebnis erhalten haben, fügen wir die Vorauszahlungs-ID im Ergebnis in eine andere Signatur ein und geben dann die relevanten Parameter an das Applet zurück.

2. Rückerstattungsfunktion

  1. Kundenentwicklung

Auf der Front-End-Seite des Miniprogramms können wir die Methode wx.request() verwenden, um eine Rückerstattungsanforderung zu initiieren. Der spezifische Code lautet wie folgt:

wx.request({
  url: 'https://your_domain.com/refund.php',
  method: 'POST',
  data: {
    'out_trade_no': '订单号',
    'refund_fee': '退款金额'
  },
  success: function(res){
     // 退款成功的回调函数
  },
  fail: function(res){
     // 退款失败的回调函数
  }
})
Nach dem Login kopieren
  1. Serverseitige Entwicklung

Auf der Serverseite müssen wir PHP verwenden, um Rückerstattungsanfragen zu bearbeiten:

<?php
  $appid = 'your_appid'; // 小程序的appid
  $mch_id = 'your_mch_id'; // 商户号
  $key = 'your_key'; // 商户密钥
  $out_trade_no = '订单号';
  $refund_fee = '退款金额';

  $params = array(
    'appid' => $appid,
    'mch_id' => $mch_id,
    'nonce_str' => md5(rand()),
    'out_trade_no' => $out_trade_no,
    'out_refund_no' => $out_trade_no,
    'total_fee' => $refund_fee,
    'refund_fee' => $refund_fee
  );

  ksort($params);
  $string = http_build_query($params);
  $string = urldecode($string).'&key='.$key;
  $sign = strtoupper(md5($string));

  $params['sign'] = $sign;

  $xml = '<xml>';
  foreach ($params as $key => $value) {
    $xml .= '<'.$key.'>'.$value.'</'.$key.'>';
  }
  $xml .= '</xml>';

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/secapi/pay/refund');
  curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
  curl_setopt($ch, CURLOPT_SSLCERT, 'cert.pem');
  curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
  curl_setopt($ch, CURLOPT_SSLKEY, 'key.pem');
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
  curl_close($ch);

  $result = simplexml_load_string($result);

  if ($result->return_code == 'SUCCESS' && $result->result_code == 'SUCCESS') {
    // 退款成功的处理逻辑
  }
?>
Nach dem Login kopieren

Diesen Code benötigen wir zuerst Um das Händlerkonto und den Schlüssel zu verwenden, generieren Sie eine Signatur, verketten Sie die relevanten Parameter in einer XML-Formatzeichenfolge und senden Sie die Rückerstattungsanforderung über cURL an die WeChat-Zahlungsschnittstelle. Nachdem wir das Rückgabeergebnis erhalten haben, können wir anhand des Rückgabecodes und des Ergebniscodes im Ergebnis feststellen, ob die Rückerstattung erfolgreich war.

3. Zusammenfassung

Durch die oben genannten Schritte können wir PHP und Miniprogramme verwenden, um Online-Zahlungs- und Rückerstattungsfunktionen zu entwickeln. In praktischen Anwendungen können Funktionen auch je nach Bedarf erweitert werden, beispielsweise um Bestellanfragen, Rückerstattungsanfragen und andere Funktionen. Ich hoffe, dieser Artikel wird Ihnen bei der Verwendung von PHP und Miniprogrammen zur Entwicklung von Online-Zahlungs- und Rückerstattungsfunktionen hilfreich sein.

Das obige ist der detaillierte Inhalt vonLeitfaden zur Online-Zahlungs- und Rückerstattungsabwicklung mit PHP und Miniprogrammen. 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