Maison > Applet WeChat > Développement WeChat > le corps du texte

Partagez un exemple de tutoriel sur le développement d'un compte public WeChat pour le paiement par carte de crédit

零下一度
Libérer: 2017-05-19 16:02:46
original
2782 Les gens l'ont consulté

Bienvenue pour laisser un message et transférer

Cet article parlera spécifiquement du paiement par carte WeChat

Introduction à la scène

  • Étape 1 : L'utilisateur choisit de payer avec une carte et ouvre WeChat, saisit "Moi" -> "Wallet" -> "Swipe Card" dans l'interface de code à barres

  • Étape 2 : Le caissier exploite le système du commerçant pour générer un ordre de paiement, et l'utilisateur confirme le montant du paiement

  • Étape 3 : Le caissier du commerçant scanne le code-barres de l'utilisateur /QR code avec un appareil de numérisation, et le commerçant collecte l'argent Le système soumet le paiement

  • Étape 4 : Le système backend de paiement WeChat reçoit la demande de paiement et détermine s'il doit vérifier le paiement de l'utilisateur mot de passe basé sur les règles de vérification du mot de passe. Pour les transactions qui ne nécessitent pas de vérification du mot de passe, les déductions sont initiées directement. Pour les transactions qui nécessitent une vérification du mot de passe, une boîte de saisie du mot de passe apparaîtra. Une fois le paiement réussi, une page de réussite apparaîtra sur WeChat. Si le paiement échoue, un message d'erreur apparaîtra

Processus côté marchand


. Pour une introduction détaillée du document, il vous suffit de comprendre brièvement le processus. Cliquez ici


Les modes d'accès au paiement par carte peuvent être divisés en : accès au backend du commerçant (fourni à d'autres pour une utilisation par des tiers similaires) et magasin. accès (pour votre propre usage) ; 区别就是支付结果多分发一次

Selon que l'utilisateur doit saisir ou non le mot de passe de paiement, il peut être divisé en : mode sans mot de passe et mode de vérification du mot de passe.

Règles du mot de passe de vérification du paiement

  • Les transactions dont le montant du paiement est supérieur à 500 yuans nécessitent une vérification du mot de passe de paiement de l'utilisateur

  • Compte utilisateur tous les jour Jusqu'à 5 transactions peuvent être sans mot de passe, après quoi une vérification du mot de passe est requise

  • Les antécédents de paiement de WeChat déterminent qu'il existe des anomalies dans le comportement de paiement des utilisateurs et que les transactions sont conformes au sans mot de passe les règles nécessiteront également une vérification du mot de passe

La différence entre le mode sans mot de passe et le mode de vérification du mot de passe sera discutée plus tard

Parlons du spécifique mise en œuvre

L'interface de paiement utilisée dans le paiement par carte de crédit est la suivante : La soumission du paiement par carte de crédit

API utilise la demande un certificat de paiement WeChat n'est pas requis ; https

Ce qui suit est le code d'implémentation spécifique :


com.javen.weixin.controller.WeixinPayControllermicropay() dans

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);
 }
Copier après la connexion
L'adresse d'accès au test dans le projet open source weixin-guide est

. , http://域名[/项目名称]/pay/micropay?auth_code=xxxxx C'est le numéro affiché sur le code-barres de l'interface de balayage de carte du client WeChat. 授权码auth_code

(Remarque : règles du code-barres de balayage de la carte utilisateur : 18 chiffres purs, commençant par 10, 11, 12, 13, 14, 15)

Test

Vous pouvez tester sans utiliser de scanner de code, mais il est un peu gênant de saisir le code d'autorisation manuellement (il s'actualise une fois toutes les minutes) et vous devez saisir le code d'autorisation rapidement. Le scanner de code lit uniquement le code d'autorisation et ne fait rien d'autre.

L'adresse de mon test de mappage de port local est la suivante :

où la valeur

est écrite par quiconque auth_code
accède dans le navigateur http://域名/pay/micropay?auth_code=111

Le résultat du retour est le suivant :

<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>
Copier après la connexion
Si vous glissez la carte pour payer plus de 5 fois, vous serez invité à saisir le mot de passe

Le retour

est err_codeUSERPAYING

Le résultat du paiement à ce moment-là. Vous devez obtenir

via l'interface de commande de requête. C'est la différence entre avoir un mot de passe et ne pas avoir de mot de passe. vous avez un mot de passe, vous devez obtenir le résultat du paiement via

Si le résultat est toujours 查询订单, alors toutes les 5 secondes USERPAYING boucle et appelle pour déterminer le résultat réel du paiement Si. l'utilisateur annule le paiement ou l'utilisateur n'a pas payé depuis 30 secondes, le caissier du commerçant 查询订单API quitte le processus de requête et continue d'appeler Annulation de la transaction de paiement. 撤销订单API

Entrez le

correct et le résultat renvoyé est le suivant : 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>
Copier après la connexion
Description du scénario d'utilisation

Si l'accès

le mode est le marchand Accès backend Si le paiement réussit, le système de paiement WeChat renverra les données ci-dessus au commerçant, et le commerçant rappellera le résultat du paiement au caissier du magasin, et le caissier continuera à traiter la logique métier xml

Si

Mode d'accès - accès au magasin Si le paiement réussit, le système de paiement WeChat renverra les données ci-dessus au caissier, et le caissier continuera à traiter la logique métier xml

Partagez un exemple de tutoriel sur le développement d'un compte public WeChat pour le paiement par carte de crédit

Swipe card payment.png

Le codage est terminé Ce qui précède est l'introduction détaillée de la carte WeChat. paiement.

[Recommandations associées]

1.

Téléchargement du code source de la plateforme de compte public WeChat

2

Version de fonctionnement du système de micro-commerce PigCms. (magasin WeChat indépendant + système de distribution à trois niveaux)

3

Code source de vote WeChat.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!