Willkommen, eine Nachricht zu hinterlassen und weiterzuleiten
In diesem Artikel geht es speziell um die WeChat-Kartenzahlung
Szeneneinführung
Schritt 1: Der Benutzer entscheidet sich für die Zahlung mit Karte, öffnet WeChat und gibt die Barcode-Schnittstelle „Me“->“Wallet“->„Swipe Card“ ein
Schritt 2: Der Kassierer bedient das Händlersystem, um einen Zahlungsauftrag zu generieren, und der Benutzer bestätigt den Zahlungsbetrag
Schritt 3: Der Kassierer des Händlers scannt den Barcode des Benutzers /QR-Code mit einem Scangerät, und der Händler sammelt Bargeld ein. Das System sendet die Zahlung
Schritt 4: Das WeChat-Zahlungs-Backend-System empfängt die Zahlungsanforderung und bestimmt, ob die Zahlung des Benutzers überprüft werden soll Bei Transaktionen, für die keine Passwortüberprüfung erforderlich ist, wird ein Passwort-Eingabefeld angezeigt. Nachdem die Zahlung erfolgreich war, wird auf WeChat eine Erfolgsseite angezeigt. Wenn die Zahlung fehlschlägt, wird eine Fehlermeldung angezeigt
Für eine detaillierte Einführung in das Dokument müssen Sie den Prozess nur kurz verstehen. Klicken Sie hier
Die Zugriffsmodi für Kartenzahlungen können unterteilt werden in: Händler-Backend-Zugriff (bereitgestellt für andere zur Nutzung durch ähnliche Dritte) und Store Zugang (zur eigenen Nutzung); 区别就是支付结果多分发一次
.
Je nachdem, ob der Benutzer das Zahlungspasswort eingeben muss, kann es in den passwortfreien Modus und den Passwortbestätigungsmodus unterteilt werden.
Transaktionen mit einem Zahlungsbetrag >500 Yuan erfordern eine Überprüfung des Benutzer-Zahlungspassworts
Benutzerkonto alle Tag Bis zu 5 Transaktionen können passwortfrei sein, danach ist eine Passwortverifizierung erforderlich
Der WeChat-Zahlungshintergrund stellt fest, dass es Anomalien im Zahlungsverhalten des Benutzers gibt, und führt Transaktionen aus, die passwortfrei sind Regeln erfordern auch eine Passwortüberprüfung
Der Unterschied zwischen dem passwortfreien Modus und dem Passwortüberprüfungsmodus wird später besprochen
Lassen Sie uns über das Spezifische sprechen Implementierung
Die bei der Kreditkartenzahlung verwendete Zahlungsschnittstelle ist: Für die Übermittlung der Kreditkartenzahlung API wird die https
-Anfrage verwendet; ein WeChat-Zahlungszertifikat ist nicht erforderlich.
Das Folgende ist der spezifische Implementierungscode: com.javen.weixin.controller.WeixinPayController
micropay()
public void micropay(){ String url="https://api.mch.weixin.qq.com/pay/micropay"; String total_fee="1"; //授权码 String auth_code = getPara("auth_code"); Map<String, String> params = new HashMap<String, String>(); params.put("appid", appid); params.put("mch_id", partner); params.put("device_info", "javen205");//终端设备号 params.put("nonce_str", System.currentTimeMillis() / 1000 + ""); params.put("body", "刷卡支付测试"); // params.put("detail", "json字符串");//非必须 params.put("attach", "javen205");//附加参数非必须 String out_trade_no=System.currentTimeMillis()+""; params.put("out_trade_no", out_trade_no); params.put("total_fee", total_fee); String ip = IpKit.getRealIp(getRequest()); if (StrKit.isBlank(ip)) { ip = "127.0.0.1"; } params.put("spbill_create_ip", ip); params.put("auth_code", auth_code); String sign = PaymentKit.createSign(params, paternerKey); params.put("sign", sign); String xmlResult = HttpUtils.post(url, PaymentKit.toXml(params)); //同步返回结果 System.out.println("xmlResult:"+xmlResult); Map<String, String> result = PaymentKit.xmlToMap(xmlResult); String return_code = result.get("return_code"); if (StrKit.isBlank(return_code) || !"SUCCESS".equals(return_code)) { //通讯失败 String err_code = result.get("err_code"); //用户支付中,需要输入密码 if (err_code.equals("USERPAYING")) { //等待5秒后调用【查询订单API】https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_2 } renderText("通讯失败>>"+xmlResult); return; } String result_code = result.get("result_code"); if (StrKit.isBlank(result_code) || !"SUCCESS".equals(result_code)) { //支付失败 renderText("支付失败>>"+xmlResult); return; } //支付成功 renderText(xmlResult); }
Die Testzugriffsadresse im Open-Source-Projekt Weixin-Guide lautet http://域名[/项目名称]/pay/micropay?auth_code=xxxxx
, 授权码auth_code
Dies ist die Nummer, die auf dem Barcode auf der Kartenleseschnittstelle des WeChat-Clients angezeigt wird.
(Hinweis: Barcode-Regeln für das Durchziehen der Benutzerkarte: 18 reine Ziffern, beginnend mit 10, 11, 12, 13, 14, 15)
Sie können den Test durchführen, ohne einen Code-Scanner zu verwenden, aber die manuelle Eingabe des Autorisierungscodes ist etwas mühsam (er wird alle 1 Minute aktualisiert) und Sie müssen den Autorisierungscode schnell eingeben. Der Codescanner liest nur den Autorisierungscode und macht sonst nichts.
Die Adresse für meinen lokalen Port-Mapping-Test lautet wie folgt:
wobei der auth_code
-Wert von jedem geschrieben wird, der http://域名/pay/micropay?auth_code=111
im Browser darauf zugreift
Das Rückgabeergebnis lautet wie folgt:
<xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[您公众号的appid]]></appid> <mch_id><![CDATA[您微信商户号]]></mch_id> <device_info><![CDATA[javen205]]></device_info> <nonce_str><![CDATA[eXgczazQq54pqcyH]]></nonce_str> <sign><![CDATA[FF03DA0E58845CCE1FCC2166EC03FBE5]]></sign> <result_code><![CDATA[FAIL]]></result_code> <err_code><![CDATA[AUTH_CODE_INVALID]]></err_code> <err_code_des><![CDATA[请扫描微信支付被扫条码/二维码]]></err_code_des> </xml>
Wenn Sie die Karte mehr als fünf Mal durchziehen, um zu bezahlen, werden Sie aufgefordert, das Passwort einzugeben
Das zurückgegebene err_code
ist USERPAYING
Das Zahlungsergebnis zu diesem Zeitpunkt. Sie müssen
Geben Sie das richtigeüber die Abfrageauftragsschnittstelle abrufen. Dies ist der Unterschied zwischen einem Passwort und einem Nicht-Passwort Wenn Sie ein Passwort haben, müssen Sie das Zahlungsergebnis über
查询订单
erhalten. Wenn das Ergebnis immer nochUSERPAYING
lautet, wird alle 5 Sekunden eine Schleife ausgeführt und aufgerufen, um das tatsächliche Zahlungsergebnis zu ermitteln Bricht der Benutzer die Zahlung ab oder hat der Benutzer 30 Sekunden lang nicht bezahlt, verlässt der Kassierer des Händlers查询订单API
den Abfragevorgang und ruft weiterhin Rückabwicklung des Zahlungsvorgangs auf.撤销订单API
ein und das zurückgegebene Ergebnis lautet wie folgt: auth_code
<xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[您公众号的appid]]></appid> <mch_id><![CDATA[您微信商户号]]></mch_id> <device_info><![CDATA[javen205]]></device_info> <nonce_str><![CDATA[Z9p14VPJ822ZTPXP]]></nonce_str> <sign><![CDATA[03BD421A33A5079A1BE6030E2EBA8291]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <openid><![CDATA[o_pncsidC-pRRfCP4zj98h6slREw]]></openid> <is_subscribe><![CDATA[Y]]></is_subscribe> <trade_type><![CDATA[MICROPAY]]></trade_type> <bank_type><![CDATA[CFT]]></bank_type> <total_fee>1</total_fee> <fee_type><![CDATA[CNY]]></fee_type> <transaction_id><![CDATA[4009682001201610156761057959]]></transaction_id> <out_trade_no><![CDATA[1476523316727]]></out_trade_no> <attach><![CDATA[javen205]]></attach> <time_end><![CDATA[20161015172058]]></time_end> <cash_fee>1</cash_fee> </xml>
Wenn der-Zugriff Modus ist Händler-Backend-Zugriff Wenn die Zahlung erfolgreich ist, gibt das WeChat-Zahlungssystem die oben genannten Daten an den Händler zurück, und der Händler ruft das Zahlungsergebnis an den Kassierer des Geschäfts zurück, und der Kassierer fährt fort Verarbeiten Sie die Geschäftslogik
Wennxml
Zugriffsmodus - Ladenzugriff Wenn die Zahlung erfolgreich ist, gibt das WeChat-Zahlungssystem die oben genannten Daten an den Kassierer zurück und der Kassierer fährt fort Verarbeiten Sie die Geschäftslogik
xml
Quellcode der WeChat-Plattform herunterladen
2. Betriebsversion des PigCms-Mikro-E-Commerce-Systems (unabhängiges WeChat-Einkaufszentrum + dreistufiges Vertriebssystem) WeChat-AbstimmungsquellcodeDas obige ist der detaillierte Inhalt vonTeilen Sie ein Beispiel-Tutorial zur Entwicklung eines öffentlichen WeChat-Kontos für Kreditkartenzahlungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!