メッセージを残して転送することを歓迎します
この記事では、特に WeChat クレジット カード支払いについて説明します
シナリオの紹介
ステップ 1: ユーザーはクレジット カード支払いを選択し、WeChat を開き、「私」と入力します->「ウォレット」->「スワイプ カード」バーコード インターフェイス
ステップ 2: レジ担当者が販売者システムで操作して支払い注文を生成し、ユーザーが支払い金額を確認します
販売者のレジ担当者がスキャン デバイス/QR コードを使用してユーザーのバーコードをスキャンし、販売者のレジ担当者システムが支払いを送信します
ステップ 4: WeChat 支払いバックエンド システムが支払いリクエストを受信し、パスワード検証ルールに基づいてユーザーの支払いパスワードを検証するかどうかを決定します。パスワード検証を必要としないトランザクションは直接控除を開始し、検証が必要です。 パスワードトランザクションの場合、パスワード入力ボックスがポップアップ表示されます。支払いが成功すると、WeChat に成功ページが表示されます。支払いが失敗した場合は、エラー メッセージが表示されます
販売者側のプロセス
詳細なドキュメントの紹介については、プロセスを簡単に理解するだけで済みます。ここをクリックしてください
カード支払いアクセス モードは、マーチャント バックエンド アクセス (同様のサードパーティによる使用のために他者に提供される) とストア アクセス (自身の使用のため) に分類できます。 の違いは、支払い結果が一度配布されることです。詳細
。 区别就是支付结果多分发一次
。
根据用户是否需要输入支付密码可分为:免密模式和验密模式。
支付验证密码规则
支付金额>500元的交易需要验证用户支付密码
用户账号每天最多有5笔交易可以免密,超过后需要验证密码
微信支付后台判断用户支付行为有异常情况,符合免密规则的交易也会要求验证密码
免密模式和验密模式两者的区别会在后面讲到
下面来讲讲具体实现
刷卡支付当中使用的支付接口为: 提交刷卡支付API 使用的是https
请求;不需要微信支付证书。
以下是具体实现代码: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); }
在开源项目weixin-guide中 测试访问地址为http://域名[/项目名称]/pay/micropay?auth_code=xxxxx
, 授权码auth_code
为微信客户端刷卡界面条形码上显示的数字。
(注:用户刷卡条形码规则:18位纯数字,以10、11、12、13、14、15开头)
测试
不用扫码枪也可以测试,只是测试手动输入授权码麻烦一点(1分钟刷新一次),需要你快速输入授权码。扫码枪只是读取授权码并没有多做其他的事情。
我本地做端口映射测试的地址如下:
其中auth_code
值是谁便写的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>
刷卡支付超过5次就会提示输入密码
返回的err_code
为USERPAYING
此时支付结果就需要通过 查询订单接口来获取
这就是有密码与无密码的区别,有密码必须通过
查询订单
来获取支付结果,如果结果任然为USERPAYING
,则每隔5秒循环调用查询订单API
判断实际支付结果,如果用户取消支付或累计30秒用户都未支付,商户收银台退出查询流程后继续调用撤销订单API
撤销支付交易。
输入正确的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>
使用场景描述
如果接入模式为商户后台接入 支付成功了微信支付系统就会将上面的
xml
数据返回给商户,商户再将支付结果回调给门店收银台,收银台继续处理业务逻辑如果接入模式-门店接入 支付成功了微信支付系统就会将上面的
ユーザーが支払いパスワードを入力する必要があるかどうかに応じて、パスワード不要モードとパスワード検証モードに分けることができます。xml
支払い確認パスワードのルール
支払い金額が500元を超える取引では、ユーザーの支払いパスワードを確認する必要があります
ユーザーアカウントはパスワードなしで1日あたり最大5回の取引を行うことができ、その後はパスワードの確認が必要になります
WeChat決済バックエンドがユーザーの決済動作に異常があると判断し、パスワードフリールールに準拠した取引にもパスワード認証が必要となります
パスワードフリーモードとパスワード認証モードの違いは後で説明します
カード支払いで使用される支払いインターフェイスは次のとおりです: カード支払いを送信するAPI🎜 使用リクエストはhttps
であり、WeChat 支払い証明書は必要ありません。 🎜🎜以下は具体的な実装コードです: 🎜com.javen.weixin.controller.WeixinPayController
のmicropay()
🎜rrreee🎜 オープンソースでアクセスアドレスをテストしますproject weixin-guide は http://domain name[/project name]/pay/micropay?auth_code=xxxxx
で、authorization code auth_code
はバーコードに表示される番号です。 WeChat クライアント カード スワイプ インターフェイス上で。 🎜🎜 (注: ユーザー カード スワイプ バーコード ルール: 10、11、12、13、14、15 で始まる 18 桁の純粋な数字) 🎜🎜テスト
🎜 スキャンする必要はありませんthe code Gun を使ってテストすることもできますが、認証コードを手動で入力するのが少し面倒(1分に1回更新される)し、素早く認証コードを入力する必要があります。コード スキャナは認証コードを読み取るだけで、他には何も行いません。 🎜🎜🎜ポート マッピング テスト用のローカル アドレスは次のとおりです: 🎜🎜auth_code
値は誰によっても書き込まれます🎜http://domain name/pay/micropay?auth_code=111
ブラウザで 🎜🎜 にアクセスすると、返される結果は次のようになります: 🎜rrreee🎜 カードを 5 回以上スワイプして支払うと、パスワードの入力を求められます 🎜🎜 返されたerr_code code> は <code>USERPAYING
です🎜🎜この時点では、クエリ注文インターフェイスを通じて支払い結果を取得する必要があります🎜🎜これは、パスワードがある場合とない場合の違いです。query order
を通じて支払い結果を取得する必要があります。結果がUSERPAYING
である場合は、5 秒ごとに ループ 🎜クエリ注文 API code> を呼び出し、実際の支払い結果を決定します。ユーザーが支払いをキャンセルするか、ユーザーが 30 秒間支払いを怠った場合、販売者のレジ<a href="http://www.php.cn/code/6835.html" target="_blank"> クエリ プロセスを終了した後、引き続き <code>Cancel Order API
を呼び出してキャンセルします。支払いトランザクション。 🎜🎜🎜正しいauth_code
を入力すると、返される結果は次のとおりです: 🎜rrreee🎜使用シナリオの説明🎜🎜 🎜アクセス モードがマーチャント バックエンド アクセス🎜で、支払いが成功した場合、 WeChat 支払いシステムは、上記のxml
データが販売者に返され、販売者は支払い結果を店舗のレジ担当者にコールバックし、レジ担当者はビジネス ロジックの処理を続行します🎜🎜If🎜 アクセス モード -店舗へのアクセス🎜 支払いが成功しました WeChat 支払いシステム 上記のxml
データがレジ担当者に返され、レジ担当者はビジネス ロジックの処理を続行します🎜🎜🎜🎜🎜🎜🎜 スワイプ カード支払い.png 🎜🎜 以上でWeChatカード決済の詳細が完了しました。 🎜🎜【関連推奨事項】🎜🎜1. 🎜WeChatパブリックアカウントプラットフォームのソースコードダウンロード🎜🎜🎜2. 🎜PigCmsマイクロ電子商取引システム運用バージョン(独立したマイクロストアモール+3レベルの流通システム)🎜🎜🎜3 🎜WeChat投票ソースコード🎜🎜
以上がクレジット カード支払い用の WeChat パブリック アカウントの開発に関するサンプル チュートリアルを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール
