1。WECHAT公式文書WECHAT支払い開発プロセス(パブリックアカウントの支払い)
まず、WeChat Payの公式ドキュメントの開発手順セクションにアクセスして、必要な設定を確認しましょう。
[画像アップロードに失敗した...(Image-5EB825-1531014079742)]
WeChatの支払いには高い権限が必要なため、認定されたサービスアカウントのみがWeChat Paymentインターフェイスを使用する許可を得ることができます。個人的に申請することは難しいので、他の友人からアカウントを借りる必要があります。
ドキュメントのビジネスプロセスの一部に来て、WeChatの支払いプロセスを確認してください(これには、非常に慎重な理解と表示が必要であると思います。これにより、WeChat開発プロセスを理解するのに役立ちます)。
次に、WeChat Payment Interfaceにアクセスするには、多くのパラメーターを渡す必要があります。統一されたシングルを参照してください
[画像アップロードに失敗した...(Image-DF7051-1531014079742)]
上記の公式のWeChatの支払い文書をチェックした後、これらを確実に理解する必要があると思いますが、WeChatの支払いの開発は非常に面倒だと思いますので、サードパーティのSDKを使用して開発します。
2。WeChatPay Shird-Party SDK開発(パブリックアカウントの支払い)
これは公式アカウントの支払いです。 Best-Pay-SDKを使用しています。このSDKは、PayRequestとPayResponseを使用して、リクエストインターフェイスと対応する結果をカプセル化します。動的に渡す必要がある主なパラメーターは、OpenID(ユーザー一意の識別子)とOrderIDです。次に、開発方法を見てみましょう。
1。構成
// wechatパブリックアカウント支払い構成wxpayh5config wxpayh5config = new wxpayh5config(); wxpayh5config.setAppid( "xxxxx"); wxpayh5config.setappsecret( "xxxxxxx"); wxpayh5config.setmchid( "xxxxxx"); wxpayh5config.setmchkey( "xxxxxxx"); wxpayh5config.setnotifyurl( "http:// xxxxx"); //有料クラス、すべての方法はこのクラスにありますBestPayserviceImpl BestPayservice = new BestPayserviceImpl(); bestpayservice.setwxpayh5config(wxpayh5config);
2。支払いを開始します
PayRequest PayRequest = new PayRequest(); PayRequest.setPayTypeenum(bestPayTypeenum.wxpay_h5); PayRequest.setOrderId( "123456"); PayRequest.setOrderName( "Wechat Publicアカウント支払い注文"); PayRequest.setOrderAmount(0.01); PayRequest.setopenid( "OpenID_XXXXXX"); bestpayservice.pay(payrequest);
3。非同期コールバック
bestPayService.asyncNotify();
これは、このSDKがWeChatの支払いを解決するために10行のコードを言っていることです。
支払いが完了した後、WeChatは支払い結果を支払いXMLデータとして返します。このデータを非同期通知URL(notify_url)に渡して、支払い結果の検証を完了する必要があります(署名の確認、支払いステータスの確認)。 SDKの両方のステップは私たちのために行われます。 bestpayservice.asyncnotify(notifydata);、確認を完了したら、データを返す必要があります。
<xml> <return_code> <![cdata [success]]> </return_code> <return_msg> <![cdata [ok]]> </return_msg> </xml>
検証が完了したことをWeChatに伝え、非同期通知のリクエストを送信しないでください。
プロジェクトに統合する方法はまだ明確ではありませんか?それは問題ではありません、デモの例もありますが、それはより明確にすることができます。
3。デモラン
デモURLは:https://github.com/pay-group/best-pay-demoです
私たちのメインコントローラーはここにあります:
@controller @slf4jpublic class paycontroller {@autowired private bestpayserviceimpl bestpayservice; /***支払いを開始*/@getMapping(value = "/pay")public modelandview pay(@requestparam( "openid")string openid、map <string、object> map){payrequest request = new PayRequest(); RANDOM RANDOM = new Random(); // pay request parameter request.setpaytypeenum(bestpaytypeenum.wxpay_h5); request.setorderid(string.valueof(random.nextint(1000000000))); request.setOrderAmount(0.01); request.setOrderName( "Best Payment SDK"); request.setopenid(openID); log.info( "【cainiate支払いを開始する】request = {}"、jsonutil.tojson(request)); payResponse payResponse = bestpayservice.pay(request); log.info( "【cainiate支払いを開始】Response = {}"、jsonutil.tojson(payResponse)); map.put( "payResponse"、payResponse); new ModelandView( "Pay/Create"、Map)を返します。 }/*** ASYNCHRONOUS CALLBACK*/@POSTMAPPING(value = "/notify")public ModelandView Notify(@RequestBody String notifyData)スロー{log.info( "【async callback = {}"、NotifyData); PayResponse Response = BestPayservice.AsyncNotify(NotifyData); log.info( "【async callback】response = {}"、jsonutil.tojson(response)); new ModelandViewを返します( "Pay/success"); }}これを自分でダウンロードできます。それがどのように機能するか見てみましょう
プロジェクトの説明
JDKバージョン> 1.8で実行する必要があります
このプロジェクトは、Springboot 1.5.1を使用して開発されました
プロジェクト構造
Src/main/java/com/github/lly835├──paydemoapplication.java
実行例
実行する前にキーを構成する必要があります。PayConfig.javaを参照してください
コマンドを実行します
git clone https://github.com/pay-group/best-pay-democd best-pay-demomvn clean packagejava -jarターゲット/*。戦争
ブラウザアクセスhttp://127.0.0.1:8080/pay
要約します
上記は、編集者が紹介したWechatパブリックアカウントのJavaバージョンの支払いプロセス全体です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します!