"Portefeuille" > "Swipe Card". Étape 2 : Le caissier opère dans le système du commerçant pour générer un paiement. commande, et l'utilisateur confirme le montant du paiement. Étape 3 : Le caissier du commerçant scanne le code-barres de l'utilisateur avec un appareil de numérisation. / Code QR, le système de caisse du commerçant soumet le paiement. Étape 4 : Après le paiement WeChat..."/> "Portefeuille" > "Swipe Card". Étape 2 : Le caissier opère dans le système du commerçant pour générer un paiement. commande, et l'utilisateur confirme le montant du paiement. Étape 3 : Le caissier du commerçant scanne le code-barres de l'utilisateur avec un appareil de numérisation. / Code QR, le système de caisse du commerçant soumet le paiement. Étape 4 : Après le paiement WeChat...">
Maison >Applet WeChat >Développement WeChat >Partagez un exemple de tutoriel sur le développement d'un compte public WeChat pour le paiement par carte de crédit
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
. 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) ; 区别就是支付结果多分发一次
La différence entre le mode sans mot de passe et le mode de vérification du mot de passe sera discutée plus tardParlons 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
com.javen.weixin.controller.WeixinPayController
micropay()
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); }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
<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>Si vous glissez la carte pour payer plus de 5 fois, vous serez invité à saisir le mot de passeLe retour
est err_code
USERPAYING
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 viaEntrez leSi le résultat est toujours
查询订单
, alors toutes les 5 secondesUSERPAYING
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
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>Description du scénario d'utilisation
Si l'accèsle 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
Sixml
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
Téléchargement du code source de la plateforme de compte public WeChat
2Version de fonctionnement du système de micro-commerce PigCms. (magasin WeChat indépendant + système de distribution à trois niveaux)
3Ce 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!