検索
ホームページWeChat アプレットWeChatの開発クレジット カード支払い用の WeChat パブリック アカウントの開発に関するサンプル チュートリアルを共有する

メッセージを残して転送することを歓迎します

この記事では、特に 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_codeUSERPAYING

此时支付结果就需要通过 查询订单接口来获取

这就是有密码与无密码的区别,有密码必须通过查询订单来获取支付结果,如果结果任然为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

ユーザーが支払いパスワードを入力する必要があるかどうかに応じて、パスワード不要モードとパスワード検証モードに分けることができます。

支払い確認パスワードのルールクレジット カード支払い用の WeChat パブリック アカウントの開発に関するサンプル チュートリアルを共有する

支払い金額が500元を超える取引では、ユーザーの支払いパスワードを確認する必要があります

ユーザーアカウントはパスワードなしで1日あたり最大5回の取引を行うことができ、その後はパスワードの確認が必要になります

WeChat決済バックエンドがユーザーの決済動作に異常があると判断し、パスワードフリールールに準拠した取引にもパスワード認証が必要となります

パスワードフリーモードとパスワード認証モードの違いは後で説明します

具体的な実装については以下で説明します

カード支払いで使用される支払いインターフェイスは次のとおりです: カード支払いを送信するAPI🎜 使用リクエストは https であり、WeChat 支払い証明書は必要ありません。 🎜🎜以下は具体的な実装コードです: 🎜com.javen.weixin.controller.WeixinPayControllermicropay() 🎜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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

DVWA

DVWA

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール