In diesem Artikel wird der H5-Zahlungsprozess für die WeChat-Zahlung vorgestellt.
Die H5-Zahlung ist eine Nicht-WeChat-Browser-Zahlungsmethode, die auf der Grundlage öffentlicher Konten entwickelt wurde (Sie müssen die Zahlungserlaubnis separat beantragen) und die mobile H5-Seite außerhalb von WeChat bedienen kann Voraussetzungen für die WeChat-Zahlung. .
Testadresse
http://wxpay.weixin.qq.com/pub_v2/pay/wap.v2.php
http://wxpay.weixin.qq .com/mch/pay/h5.v2.php
Rendering
Flussdiagramm
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","H5支付测试");//商品描述 $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","WAP");//交易类型 //非必填参数,商户可根据实际情况选填 $unifiedOrder->setParameter("device_info","100001");//设备号
Die oben genannten Parameter werden schließlich in XML-Parameter gekapselt, die den folgenden ähneln:
<xml> <out_trade_no></out_trade_no> <total_fee>1</total_fee> //<notify_url></notify_url> <trade_type></trade_type> <device_info>100001</device_info> <appid></appid> <mch_id>1237905502</mch_id> <spbill_create_ip></spbill_create_ip> <nonce_str></nonce_str> <sign></sign></xml>
auf und senden Sie das obige XML an die einheitliche Zahlungsschnittstelle
https://api.mch.weixin.qq.com/pay/unifiedorder
Holen Sie sich die folgenden XML-Daten
<xml> <return_code></return_code> <return_msg></return_msg> <appid></appid> <mch_id></mch_id> <device_info></device_info> <nonce_str></nonce_str> <sign></sign> <result_code></result_code> <prepay_id></prepay_id> <trade_type></trade_type> </xml>
Auf diese Weise erhalten Sie eine Prepaid-ID
Der Händlerserver ruft die einheitliche Bestellschnittstelle auf. Um eine Bestellung anzufordern, wenden Sie sich bitte an die öffentliche API [Unified Order] (der Trade_Type in der Schnittstelle muss als WAP definiert sein, um die Prepaid-ID an die Schnittstelle zurückzugeben). Händler generiert einen Deeplink in einem festen Format und der Benutzer klickt auf den Deeplink, um die WeChat-Zahlung zu aktivieren.
Deeplink-Format:
weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3D123%26prepayid%3Dwx20141203201153d7bac0d2e10889028866%26sign%3D6AF4B69CCC30926F85770F900D098D64%26timestamp%3D1417511263
Die Schritte zum Generieren eines Deeplinks sind wie folgt:
Schritt 1: Stellen Sie Parameter entsprechend dem URL-Format zusammen, $ Wertteil für URL-Kodierung, String1 generieren:
String1: key1=Urlencode($value1)&key2=Urlencode($value2, &...
Schritt 2: Gesamt-Urlencode für String1 durchführen, String2 generieren:
String2=Urlencode (string1);
Schritt 3: Präfixe zusammenfügen, um den endgültigen Deeplink zu generieren
Zum Beispiel:
String1:
appid=wxf5b5e87a6a0fde94&noncestr=123&package=WAP&prepayid=wx201412101630480281750c890475924233&sign=53D411FB74FE0B0C79CC94F2AB0E2333×tamp=1417511263
Reconcile Do URLEncode
string2 einmal für den gesamten string1:
appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263
plus den Protokollheader weixin://wap/pay ? um das Endergebnis zu erhalten, Deeplink
weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263
Feldname | Variablenname | Erforderlich | Typ | Beispielwert | Beschreibung | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Öffentliche Konto-ID | appid | Ja | String(32) | wx8888888888888888 | Die von WeChat zugewiesene öffentliche Konto-ID | ||||||||||||||||||||||||||||||||||||||||||
Zufällige Zeichenzeichenfolge | noncestr | is | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | A Zufallszeichenfolge, nicht länger als 32 Bit. Empfohlener Algorithmus zur Zufallszahlengenerierung | ||||||||||||||||||||||||||||||||||||||||||
Bestelldetails-Erweiterungszeichenfolge | Paket | Ja td> | String (32) | WAP | Erweiterungsfeld, WAP fest ausfüllen | ||||||||||||||||||||||||||||||||||||||||||
Vorauszahlungstransaktionssitzungs-ID | prepayid | is | String(64) | wx201410272009395522657a690389285100 | Die von WeChat Unified zurückgegebene Vorauszahlungsantwort-ID Bestellschnittstelle für spätere Verwendung. Wird in Schnittstellenaufrufen verwendet. Dieser Wert ist 2 Stunden lang gültig. | ||||||||||||||||||||||||||||||||||||||||||
Signatur | Sign | Ja td> | String (32) | C380BEC2BFD727A4B6845133519F3AD6 | Signatur, siehe Signaturgenerierungsalgorithmus für Details | ||||||||||||||||||||||||||||||||||||||||||
Zeitstempel | timestamp | is | String(32) | 1414561699 |
|
Entwicklungsdokumentation: https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1
1 Der Benutzer schließt die Bestellung auf der Händlerseite ab und nutzt WeChat Pay zum Bezahlen
2. Das Backend des Händlers initiiert eine Bestellung an WeChat Pay. Anfrage (rufen Sie die einheitliche Bestellschnittstelle auf) Hinweis: Transaktionstyp trade_type=MWEB
3. Die einheitliche Bestellschnittstelle gibt zahlungsbezogene Parameter zurück das Händler-Backend, z. B. Zahlungssprung-URL (Parametername „mweb_url“, die Adresse der WeChat-Übertragungsseite im Flussdiagramm)
5. Das Händler-Backend empfängt die Rückgabeparameter von der einheitlichen Bestellschnittstelle und sendet sie zurück mweb_url zum Frontend
6. Der Händler greift über die Frontend-Seite auf die WeChat-Übertragungsseite mweb_url zu (in diesem Schritt überprüft WeChat Pay den Verweis, um festzustellen, ob die Anfragequelle legal ist)
7. Die Überweisungsseite mweb_url aktiviert den WeChat-Zahlungskassierer aktiv
8 Die WeChat Pay-Kasse wird gleichzeitig aktiviert
9 schließt die Zahlung an der WeChat Pay-Kasse ab
Weitere Artikel zur WeChat Pay-Entwicklung H5-Zahlung finden Sie auf der chinesischen PHP-Website!