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!