Heim  >  Artikel  >  Backend-Entwicklung  >  Dynamischer Link Native Zahlung, entwickelt von WeChat

Dynamischer Link Native Zahlung, entwickelt von WeChat

*文
*文Original
2017-12-29 18:22:041766Durchsuche

In diesem Artikel wird hauptsächlich der native Zahlungsimplementierungsprozess basierend auf einem dynamischen Link-QR-Code unter WeChat-Zahlung vorgestellt, in der Hoffnung, Partnern, die WeChat-Zahlungen entwickeln, Hilfe zu bieten.

Hinweis:

Die WeChat-Zahlung ist jetzt in Version 2 und Version 3 unterteilt. Diejenigen, die sich vor dem 10. September 2014 beworben haben, erhalten die Version 2 Danach wird es die Version 3 geben. Die V3-Version von WeChat Pay verfügt nicht über den Parameter paySignKey. Eine relevante Einführung in Version 2 finden Sie in anderen Artikeln von Fangbei Studio. In diesem Artikel wird WeChat Pay v3 vorgestellt.

1. Produktinformationen generieren

Während des dynamischen Link-Zahlungsprozesses wird zuerst die Produkttransaktion generiert und dann die Zahlungstransaktion durchgeführt.

1. Vorbereitung der Produktinformationen

Definieren Sie hauptsächlich den Namen und den Preis des Produkts sowie die Transaktionsnummer. Der Code lautet wie folgt.

include_once("../WxPayPubHelper/WxPayPubHelper.php");

  //使用统一支付接口
  $unifiedOrder = new UnifiedOrder_pub();
  
  //设置统一支付接口参数
  //设置必填参数
  //appid已填,商户无需重复填写
  //mch_id已填,商户无需重复填写
  //noncestr已填,商户无需重复填写
  //spbill_create_ip已填,商户无需重复填写
  //sign已填,商户无需重复填写
  $unifiedOrder->setParameter("body","贡献一分钱");//商品描述
  $timeStamp = time();
  $out_trade_no = WxPayConf_pub::APPID."$timeStamp";
  $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商户订单号 
  $unifiedOrder->setParameter("total_fee","1");//总金额
  $unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 
  $unifiedOrder->setParameter("trade_type","NATIVE");//交易类型
  //非必填参数,商户可根据实际情况选填
  $unifiedOrder->setParameter("device_info","100001");//设备号

Die oben genannten Parameter werden schließlich in XML-Parameter ähnlich den folgenden gekapselt

<xml>
 <body><![CDATA[贡献一分钱]]></body>
 <out_trade_no><![CDATA[100001_1433009089]]></out_trade_no>
 <total_fee>1</total_fee>
 <notify_url><![CDATA[http://www.doucube.com/weixin/demo/notify_url.php]]></notify_url>
 <trade_type><![CDATA[NATIVE]]></trade_type>
 <device_info>100001</device_info>
 <appid><![CDATA[wx1d065b0628e21103]]></appid>
 <mch_id>1237905502</mch_id>
 <spbill_create_ip><![CDATA[61.129.47.79]]></spbill_create_ip>
 <nonce_str><![CDATA[gwpdlnn0zlfih21gipjj5z53i7vea8e8]]></nonce_str>
 <sign><![CDATA[C5A1E210F9B4402D8254F731882F41AC]]></sign>
</xml>

2. Rufen Sie die einheitliche Zahlungsanforderung auf

um das obige XML an die einheitliche Zahlungsschnittstelle zu senden

https://api.mch.weixin.qq.com/pay/unifiedorder

Holen Sie sich die folgenden XML-Daten

<xml>
 <return_code><![CDATA[SUCCESS]]></return_code> 
 <return_msg><![CDATA[OK]]></return_msg> 
 <appid><![CDATA[wx1d065b0628e21103]]></appid> 
 <mch_id><![CDATA[1237905502]]></mch_id> 
 <device_info><![CDATA[100001]]></device_info> 
 <nonce_str><![CDATA[6u8ovTtFupTagsiY]]></nonce_str> 
 <sign><![CDATA[E84D8BC2331766DD685591F908367FF1]]></sign> 
 <result_code><![CDATA[SUCCESS]]></result_code> 
 <prepay_id><![CDATA[wx20150531020450bb586eb2f70717331240]]></prepay_id> 
 <trade_type><![CDATA[NATIVE]]></trade_type> 
 <code_url><![CDATA[weixin://wxpay/bizpayurl?pr=dNp7omD]]></code_url> 
</xml>

Auf diese Weise erhalten Sie eine Code-URL

Das Programm generiert einen QR-Code aus der Code-URL und stellt ihn dann dem Benutzer zum Scannen zur Verfügung

Benutzerzahlung

1. Benutzerzahlung

Nachdem die Zahlung des Benutzers erfolgreich war, sendet WeChat eine XML-Benachrichtigung mit folgendem Inhalt an notify_url

<xml>
 <appid><![CDATA[wx1d065b0628e21103]]></appid> 
 <bank_type><![CDATA[CFT]]></bank_type> 
 <cash_fee><![CDATA[1]]></cash_fee> 
 <device_info><![CDATA[100001]]></device_info> 
 <fee_type><![CDATA[CNY]]></fee_type> 
 <is_subscribe><![CDATA[N]]></is_subscribe> 
 <mch_id><![CDATA[1237905502]]></mch_id> 
 <nonce_str><![CDATA[gwpdlnn0zlfih21gipjj5z53i7vea8e8]]></nonce_str> 
 <openid><![CDATA[oMNKHuBTW4YWgNGAVQW00tWK6auM]]></openid> 
 <out_trade_no><![CDATA[100001_1433009089]]></out_trade_no> 
 <result_code><![CDATA[SUCCESS]]></result_code> 
 <return_code><![CDATA[SUCCESS]]></return_code> 
 <sign><![CDATA[03EEDE7ADE2ABB7916795F37F19A3D13]]></sign> 
 <time_end><![CDATA[20150531020838]]></time_end> 
 <total_fee>1</total_fee> 
 <trade_type><![CDATA[NATIVE]]></trade_type> 
 <transaction_id><![CDATA[1002750205201505310187709542]]></transaction_id> 
</xml>

Nach Erhalt von notification_url erfolgt eine Bestätigung Die Erfolgsmeldung wird an den WeChat-Server zurückgegeben

<xml>
 <return_code><![CDATA[SUCCESS]]></return_code>
</xml>

Auf diese Weise wird ein dynamischer Native-Link abgeschlossen.

Verwandte Empfehlungen:

Beispiel für die WeChat-Rückerstattungsfunktion der PHP-WeChat-Zahlungsentwicklung

Beispiel für die WeChat-Zahlungsentwicklung von Laravel

5-minütiges Tutorial zur Implementierung des WeChat-Zahlungszugriffs

Das obige ist der detaillierte Inhalt vonDynamischer Link Native Zahlung, entwickelt von WeChat. 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