Teilen Sie ein Beispiel-Tutorial zur Entwicklung eines öffentlichen WeChat-Kontos für Kreditkartenzahlungen

零下一度
Freigeben: 2017-05-19 16:02:46
Original
2798 Leute haben es durchsucht

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

Händlerseitiger Prozess


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.

Passwortregeln für die Zahlungsüberprüfung

  • 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.WeixinPayControllermicropay()

in
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);
 }
Nach dem Login kopieren

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)

Test

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=111im 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>
Nach dem Login kopieren

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

ü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 noch USERPAYING 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

Geben Sie das richtige

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>
Nach dem Login kopieren
Beschreibung des Nutzungsszenarios

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 xml

Wenn

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

Teilen Sie ein Beispiel-Tutorial zur Entwicklung eines öffentlichen WeChat-Kontos für Kreditkartenzahlungen

Swipe Card Payment.png

Die Codierung ist abgeschlossen. Das Obige ist die detaillierte Einführung der WeChat-Karte Zahlung.

[Verwandte Empfehlungen]

1.

Quellcode der WeChat-Plattform herunterladen

2. Betriebsversion des PigCms-Mikro-E-Commerce-Systems (unabhängiges WeChat-Einkaufszentrum + dreistufiges Vertriebssystem)

3.

WeChat-Abstimmungsquellcode

Das 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage