微信支払いの概要:砂箱環境テストの使用方法


本文は【微信支払いを浅く分析する】シリーズの文章の第10編で、主に砂箱環境を使って微信支払いをテストする方法を説明します.
微信支付シリーズはすでに10編更新されていますよ~、見たことのない方はご覧ください.
微信の支払いを分析する:請求書と資金請求書をダウンロードする
微信支払いの浅い分析:返金申請、返金コールバックインタフェース、返金照会
微信支払いの概要:注文の照会とクローズ
微信支払い:支払い結果通知
実際の開発では、通常、私たちは開発環境で開発しています.ローカル環境にも多くの制限があります.例えば、微信決済が起動できない、H 5リンクには認証が必要、支払い結果通知には外部ネットワークが必要などです.
以上の問題に直面して、微信の公式は解決の方法を提供して、どのようにこの文章の 、つまり微信が支払う公式のテスト環境で、この環境は何をすることができますか?最も重要なのは、公式の例に基づいてリアルタイムで対応するインタフェースを呼び出すことができ、インタフェースはすぐに結果を返すことができ、微信支払い前払書インタフェースでは、呼び出し後にリアルタイムで私たちの支払いに関する情報を返すことができ、開発時に戻り結果を知らずに悩むことを免れると思います.
シミュレーションテストシステム
ビジネスユーザーのテストの敷居を下げるために、微信支払いチームは独立したシミュレーションテストシステムを開発した.このシステムは検収用例金額の違いに基づいて異なる応答メッセージを返し、商店の正常機能テスト、安全/異常テスト及び性能テストの需要を満たす.
図1は、微信支払シミュレーション試験システム(後にシミュレーションシステムと略称する)の簡略化原理図である.シミュレーションシステムのAPIプロトコルは、正式なAPIと全く同じである(APIインタフェースドキュメント).ビジネス開発者は、正式なAPIの呼び出しURLをsandboxnewパスに追加するだけで、シミュレーションシステムに接続できます.
例えば、カード決済URL:https://api.mch.weixin.qq.com...次のように変更します.https://api.mch.weixin.qq.com....
シミュレーションシステムは、ストレージ・レイヤを含む本番環境とは完全に独立しています.ユーザーがシミュレーションシステムで行ったすべての取引(以下のリスト、支払い、照会)は、ユーザーが実際に控除する必要がなく、ユーザーが入金する資金もないという資金フローのない偽データです.金券も同じで、砂箱環境では商店の実際の制券と発券を必要とせず、実際の割引状況も現れない.検収シミュレーションテストシステムのAPIチェック鍵はAPIから取得する必要がある:
ソース&インタラクティブプロセス
以下は微信公式の 文書です.
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1

具体的なインタラクションプロセスと関連するシミュレーションテストシステムのAPI検証署名について説明したが、なぜこの署名インタフェースが必要なのか.これは、 を使用する場合に実際の / APP_IDが使用されるためであるが、API というパラメータは、主にこのパラメータを取得する sandbox_signkeyを使用しなければならない.
注意:シミュレーションテスト環境の商家番号(親子商家番号)は、実際の商家番号を使用する必要があります.
次に、sandbox_signkeyを取得する例を示す.
/**
 *      sandbox_signkey
 *
 * @author yclimb
 * @date 2018/9/18
 */
private void doGetSandboxSignKey() throws Exception {
    WXPayConfigImpl config = WXPayConfigImpl.getInstance();
    HashMap data = new HashMap();
    //    
    data.put("mch_id", config.getMchID());
    //        
    data.put("nonce_str", WXPayUtil.generateNonceStr());
    //     
    String sign = WXPayUtil.generateSignature(data, config.getKey());
    data.put("sign", sign);
    
    //    sandbox_signkey
    WXPay wxPay = new WXPay(config);
    String result = wxPay.requestWithoutCert("/sandboxnew/pay/getsignkey", data, 10000, 10000);
    System.out.println(result);
}

パートナは、resultに従って特定の戻りデータを取得し、解析した後、sandbox_signkeyパラメータを取得することができる.
ユーザーアクセスシミュレーションシステムのインタラクティブプロセスの例:
  • 商戸はカード決済要求を開始し、POST方式で呼び出すhttps://api.mch.weixin.qq.com...
  • sandboxnew付きhttpsリクエストはnginxによってシミュレーションシステムにルーティングされます.シミュレーションシステムは、支払い金額(total_feeフィールド)に基づいて、予想されるメッセージを業者に返す.同時に、このペンにデータを要求する.
  • 商戸が調査票を発起し、呼び出すhttps://api.mch.weixin.qq.com...、微信注文番号(transaction_id)または商家内部単号(out_trade_no)を持参する.
  • シミュレーションシステムは、請求書の要求を受信した後、請求書番号と金額に基づいて予想された請求書の結果を商家に返す.
  • 商戸は対の請求書をダウンロードして、呼び出しますhttps://api.mch.weixin.qq.com... 、シミュレーションシステムは、固定された請求書フォーマットを業者に返します.注意:請求書の内容は、シミュレーションシステムで発生した取引と必ずしも同じではありません.

  • 砂箱説明:sandbox/sandboxnew微信支払砂箱環境は、微信支払業者に提供される開発者であり、支払およびコールバック通知をシミュレートするために使用される.コールバック通知、請求書フォーマット、および異常に対して正しい処理が行われているかどうかを確認します.◆どのように砂箱環境をドッキングしますか?1、修正商戸自有プログラム或いは配置中、微信支払いapiのリンク、例えば:支払い公式サイトをスキャンされたurlは:https://api.mch.weixin.qq.com... sandboxnewパスを追加し、https://api.mch.weixin.qq.com... 砂箱の検収環境に接続でき、その他のインタフェースは類似している.2、微信支払開発デバッグサイト(サイトリンク:http://mch.weixin.qq.com/wiki... )、インタフェースドキュメントに従って正しい支払いパラメータを記入し、微信支払い要求を開始し、支払いを完了する.3、検収完了後、プログラムまたは構成中のapiリンク(重要!)を変更し、sandboxnewパスを削除します.ネットワーク環境をドッキングします.
    説明アドレス:https://pay.weixin.qq.com/wik...https://pay.weixin.qq.com/wik...
    締めくくり
    実は は主に開発時に直ちにインタフェースの戻り値を獲得して の使用を行うことを便利にするためで、本文はどのようにsandbox_signkeyのパラメータを取得して、それからどのようにシミュレーションのドッキングを行って、実際のインタフェースのURLの後でsandboxnewを増加して、インタフェースはリアルタイムに結果のパラメータを返して、この点は正式な環境と異なっています(本環境の支払い後は非同期呼び出しであり、砂箱環境はリアルタイムで返される).
    注意:一部のインタフェース砂箱環境のインタフェースはリンクにsandboxnewを追加するだけでなく、リンク全体が変更されます.実際の操作では、返金インタフェースのような公式文書を参照する必要があります.公式線インタフェースは:/secapi/pay/refundで、砂箱環境インタフェースは:/sandboxnew/pay/refundで、砂箱環境ではsecapiというパスを削除しました.注意しなければならない.
    予告:微信の支払いの安全性をよりよく検証するために、私たちは微信の にアクセスする必要があります.次の文章 で説明します.楽しみにしてください.
    事前にソースコードを一覧表示したい方は、まず私のgithubを見てください.住所は以下の通りです.`https://github.com/YClimb/wxp...​ `
    作者の个人の微信をプラスして、作者の微信は以下のyclimbで、 を明示して微信の支払いの讨论グループに引き込んで小さい仲间と一绪に探求することができて、きっと を明示します
    これで本文は終わりです.公衆番号に注目してもっとプッシュしてください!!