@RequestMapping(値= "/ toPay4App"、メソッド= {RequestMethod.POST、RequestMethod.GET}) @ApiOperation(値「賃金へ。のためのアプリケーション」= ) @ApiImplicitParams({ @ApiImplicitParam(名前 = "お金"、値= "金额"、必要= falseを、paramType = "クエリ"、DataTypeが"文字列" )、 @ApiImplicitParam(名 = "タイプ"、値= "类型6 =一年会员"、必要= 真、paramType = "クエリ"、DataTypeが"INT" )、 @ApiImplicitParam(名 = "MEMBERID"、値= "用户ID"、必須= 真、paramType = "クエリ"を、DataTypeが"文字列" )、 }) 公共BasicMapDataRet toPay4App( HttpServletRequestのリクエスト、 @RequestParam(必須 = 偽)のBigDecimalお金、整数型、@ RequestParam(必要= 偽)整数NUM、整数MEMBERID )スローRestMainException { 試み{ BasicMapDataRet RET = 新しいBasicMapDataRet(); //ビジネスロジックと検証 地図マップ = doUnifiedOrder(要求、貿易、hrRechargeOrder)。 ret.setResult(BasicRet.SUCCESS)。 ret.getData()(置く。 "結果"のマップ、); リターンRET; } キャッチ(例外e){ スロー 新しいRestMainException(E); } }
/ ** *アプリのマイクロチャンネル専用の単一決済端末 * @return * @throws 例外 * / 公共の地図doUnifiedOrder(HttpServletRequestのリクエスト、貿易取引、HrRechargeOrder hrRechargeOrder)がスロー例外{ 試み{ // WXConfigUtil設定=新しいWXConfigUtil(); // するSystem.out.println( "wxPayAppConfigtoString:" + wxPayAppConfig.toString()+ "字符串" + wxPayAppConfig.getKey()+ "APPID" + wxPayAppConfig.getAppID()); WXPay wxpay = 新しいWXPay(wxPayAppConfig)。 地図 <文字列、文字列>データ= 新しい HashMapの<> (); data.put( "APPID" 、wxPayAppConfig.getAppID()); // するSystem.out.println( "打印APPID")+ data.get( "APPID"); data.put( "mch_id" 、wxPayAppConfig.getMchID()); // するSystem.out.println( "打印mch_id" + data.get( "mch_id")); data.put( "nonce_str" 、WXPayUtil.generateNonceStr()); // するSystem.out.println( "打印nonce_str" + data.get( "nonce_str")); data.put( "ボディ" 、trade.getBody()); // するSystem.out.println( "打印体" + data.get( "身体")); data.put( "out_trade_no" 、trade.getOutTradeNo())。 //System.out.println( "out_trade_no印刷" + data.get( "out_trade_no")); data.put( "total_fee"、hrRechargeOrder.getMoney()乗算は(New新しい BigDecimalを(100 ))toString()を。); / / data.put( "total_fee"、hrRechargeOrder.getMoney()のtoString()); // するSystem.out.println( "印刷total_feeとマネー" + data.get( "total_fee")); // 独自のサーバーIPアドレス data.put( "spbill_create_ip" 、request.getRemoteAddr()); // するSystem.out.println( "印刷spbill_create_ip" + data.get( "spbill_create_ip")); // あなたがしなければならないことを非同期通知アドレス(注エクストラネット) data.put( "notify_url」、webConfBean.getProjectDomain()+ "/休憩/ wxpay /通知"); // するSystem.out.println( "印刷notify_url" + data.get( "notify_url")); // トランザクションタイプの data.put( "trade_type"、 "APP" ); // System.out.printlnは( + data.get(「trade_type印刷」「trade_typeを「)); // 追加データがクエリAPIと支払通知として返され、このフィールドは主に、データをカスタマイズするために使用されている加盟店の注文によって運ば // data.put(」添付"" "); // するSystem.out.println("記号を入力する前に"+ data.toString()+" wxPayAppConfig.getKey() "+" 0ba2e528d876e0ef66ca5344debb3eac "); // するSystem.out.printlnは("記号を入力してください"; + data.toString())、再びデータを印刷する前に、 (data.put "記号」 、WXPayUtil.generateSignature(データ、wxPayAppConfig.getKey()、 WXPayConstants.SignType.MD5)); // するSystem.out.println(「リクエスト最終印刷前のデータ」+ data.toString()); // 公式のAPIリクエストプリペイドオーダーを使用 地図<文字列、文字列>レスポンス= wxpay.unifiedOrder(データ); // システム。 out.printlnを( "印刷response.get(\" RETURN_CODE \ ")" + response.get( "RETURN_CODE")); // するSystem.out.printlnは( "レスポンスを印刷" + response.toString()); IF( "SUCCESS" .equals(response.get( "RETURN_CODE"))){ // メイン復帰以下の5つのパラメータ // するSystem.out.println( "成功を入力してください"); 地図<文字列、文字列>のparam = 新しい新しいのHashMap < > (); param.put( "APPID" 、wxPayAppConfig.getAppID()); param.put( "PARTNERID"、response.get( "mch_id" )); param.put( "prepayid"、response.get( "prepay_id" )); param.put( "パッケージ"、 "サイン= WXPay" ); param.put( "noncestr" 、WXPayUtil.generateNonceStr()); param.put( "タイムスタンプ"、にSystem.currentTimeMillis()/ 1000 + "" ); param.put( "記号" 、WXPayUtil.generateSignature(パラメータ、wxPayAppConfig.getKey()、 WXPayConstants.SignType.MD5)); // するSystem.out.println(+ param.get( "サイン") "第二・サインへの"); リターンのparam; } } キャッチ(例外e){ e.printStackTrace(); スロー 新しい新 MyException(「単一故障」)。 } スロー 新しい新 MyException(「単一故障」)。 }
なし導入と最大ピット位置プラス赤、@value
@Component
@ConfigurationProperties(「mod.wechat.pay」)
ヌルポインタこぶサポートしない①理由
②PCアプリの支払いとH5と、それは二次検査署名を必要JSAPI NATIVE、およびH5とPCとは異なる別のピットあなたは直接要求し、結果をすることができます