Heim  >  Artikel  >  WeChat-Applet  >  WeChat Pay entwickelt H5-Zahlung

WeChat Pay entwickelt H5-Zahlung

高洛峰
高洛峰Original
2017-03-01 09:55:055448Durchsuche

In diesem Artikel wird der H5-Zahlungsprozess für die WeChat-Zahlung vorgestellt.

1. Einleitung

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

WeChat Pay entwickelt H5-Zahlung WeChat Pay entwickelt H5-Zahlung

Flussdiagramm

WeChat Pay entwickelt H5-Zahlung

2. 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","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>

2. Rufen Sie die einheitliche Zahlungsanforderung

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

2. DeepLink

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&timestamp=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
字段名 变量名 必填 类型 示例值 描述
公众账号ID appid String(32) wx8888888888888888 微信分配的公众账号ID
随机字符串 noncestr String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串,不长于32位。推荐随机数生成算法
订单详情扩展字符串 package String(32) WAP 扩展字段,固定填写WAP
预支付交易会话标识 prepayid String(64) wx201410272009395522657a690389285100 微信统一下单接口返回的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时
签名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 签名,详见签名生成算法
时间戳 timestamp String(32) 1414561699

当前的时间,其他详见时间戳规则

Die aktuelle Uhrzeit, für weitere Details, Bitte beachten Sie die Zeitstempelregeln

Entwicklungsdokumentation: https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1

Drei , Neuer Versionsprozess

WeChat Pay entwickelt H5-Zahlung

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!

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