これ以上苦労せずに、コードを見てください。
requesthandler requesthandler = new requesthandler(super.getRequest()、super.getResponse()); // token //有効な2時間以内に有効になり、2時間後にトークンを再= requesthandler.getToken(); // tokenをアプリケーションに更新してくださいRequestHandler.getTokenReal(); system.out.println( "wechat pay get token ======================================================================== // requesthandler requesthandler.init(); requesthandler.init(appid、appsecret、appkey、partnerkey、key);
コード:ローカルシステムは注文を生成します
//パッケージ注文パラメーターsortedmap <string、string> packageparams = new Treemap <string、string>(); packageParams.put( "bank_type"、 "wx"); //支払いタイプpackageParams.put( "body"、 "xxxx"); //製品説明packageparams.put( "fee_type"、 "1"); // Bank Currency PackageParams.put( "input_charset"、 "utf-8"); //文字セットPackageParams.put( "notify_url"、 "http://xxxx.com/xxxx/wxcallback"); //ここの通知アドレスは、外部ネットワークアドレスを使用してテストされ、ポート80が開いているかどうかに注意してください。 packageParams.put( "out_trade_no"、no); //マーチャントオーダー番号PackageParams.put( "partner"、partnerRid); // merchant number packageparams.put( "spbill_create_ip"、super.getRequest()。getRemoteHost()); //注文によって生成されたマシンIPは、ユーザーのブラウザIP PackageParams.put( "Total_fee"、string.valueof(rstotal))を指します。 //製品の合計量はユニットに分割されますSignParams.put( "appid"、appid); SignParams.put( "noncestr"、noncestr); SignParams.put( "traceid"、propertiesutils.getorderno()); SignParams.put( "Timestamp"、Timestamp); SignParams.put( "package"、packagevalue); SignParams.put( "appkey"、this.appkey); //支払い署名を生成するには、urlencoderの元の値をSHA1アルゴリズムに使用する必要があります!文字列sign = ""; try {sign = sha1util.createsha1sign(signparams); } catch(Exception e){e.printstacktrace(); } // signparams.put( "sign_method"、 "sha1")に、参加していない署名のパラメーターを追加します。 SignParams.put( "app_signature"、sign); // Api payment package ends --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- :" + prepayid);コード:プリペイド高速注文完了を生成します
//完了するためにプリペイド高速注文を生成し、Androidに戻り、iOSに戻り、WeChatに必要なパラメーターをドロップします。 sortedmap <string、string> payparams = new Treemap <string、string>(); PayParams.put( "appid"、appid); PayParams.put( "noncestr"、noncestr); PayParams.put( "package"、 "sign = wxpay"); PayParams.put( "partnerid"、partnerrid); PayParams.put( "prepayid"、prepare); PayParams.put( "appkey"、this.appkey); //ここでの差は、パラメーターの長さの制限があるため1000です。 int time =(int)(system.currenttimemillis() / 1000); PayParams.put( "Timestamp"、String.ValueOf(Time)); System.out.println( "Timestamp:" + time); //署名文字列paysign = ""; try {paysign = sha1util.createsha1sign(payparams); } catch(Exception e){e.printstacktrace(); } payparams.put( "sign"、paysign); // SPOOF JSONデータがクライアントに返されますBasicDBoBject backObject = new BasicDBoBject(); backobject.put( "appid"、appid); backObject.put( "noncestr"、payparams.get( "noncestr")); backObject.put( "package"、 "sign = wxpay"); backObject.put( "partnerId"、payparams.get( "perternid")); backObject.put( "prepayid"、payparams.get( "prepayid")); backobject.put( "appkey"、this.appkey); BackObject.put( "Timestamp"、PayParams.get( "Timestamp")); backobject.put( "sign"、payparams.get( "sign")); string backstr = dataObject.toString(); System.out.println( "Backstr:" + Backstr);バックストールを返す;これまでのところ、前払い注文が生成され、クライアントに返され、WeChatサーバーが通知するのを待っています。通知のアドレスは、前払い命令を生成するNotify_urlです。
ResponseHandler reshandler = new ResponseHandler(リクエスト、応答); reshandler.setkey(partnerkey); //リクエストオブジェクトの作成//queryreq.init(); if(reshandler.istenpaysign()== true){// merchant order number string out_trade_no = reshandler.getParameter( "out_trade_no"); System.out.println( "out_trade_no:" + out_trade_no); // TenPay Order番号文字列トランザクション_ID = reshandler.getParameter( "transaction_id"); System.out.println( "transaction_id:" + transaction_id); //金額、部門文字列の単位at total_fee = reshandler.getParameter( "total_fee"); //割引クーポンが使用されている場合、割引には値があり、Total_fee+割引=元の要求されたtotal_fee文字列= reshandler.getParameter( "割引"); //支払い結果string trade_state = reshandler.getParameter( "trade_state"); //署名と結果を判断するif( "0" .equals(trade_state)){ //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //成功したメッセージをTenPayシステムに送信します。 TenPayシステムは、この結果を受信した後、後続の通知を提供しなくなります。 // 30分間の8つの通知を返す8つの通知「成功」に成功を返す。 } else {system.out.println( "署名検証が失敗した"); reshandler.sendtocft( "fail"); Response.setcharacterencoding( "utf-8"); }} else {system.out.println( "fail -md5 failed"); }上記は、JavaがWeChat Payment Serverを実装するコードです。 WeChatの支払いを実現するために、誰もが慎重に勉強することを願っています。