(값 = "/ toPay4App"방법 @RequestMapping = {RequestMethod.POST, RequestMethod.GET}) @ApiOperation (값 = "去支付.用于앱" ) @ApiImplicitParams ({ @ApiImplicitParam (이름 = "돈"값 = "金额"필요 = 거짓 , 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 () (넣어. "결과를" 지도,); 반환권리; } 캐치 (예외 전자) { 던져 새로운 RestMainException (전자); } }
/ ** *微信응용 프로그램端支付专用的下单 * @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 ( '신체'));// 에서 System.out.println (+ data.get ( "out_trade_no") "out_trade_no 인쇄"); data.put을 ( . "Total_fee", hrRechargeOrder.getMoney () 곱하기를 ( 새로운 새로운 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 () + "/ REST는 / wxpay / 알림" ); // 에서 System.out.println (+ data.get ( "notify_url") "notify_url 인쇄"); // 거래 입력 data.put ( "trade_type", "APP" ) // 에서 System.out.println ( "인쇄 trade_type"+ data.get ( "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 (데이터); // 에서 System.out.println을 ( "인쇄 response.get (\"return_code \ ") "+ response.get ( "return_code") ); // 에서 System.out.println ( "응답 인쇄"+ response.toString ()); IF ( "성공".equals (response.get (이하 "return_code"))) { // 메인 반환 다섯 개 개의 매개 변수를 다음 / / 에서 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 (PARAM, 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와 다른 또 다른 구덩이를 직접 요청하고 그 결과 수