더 이상 고민하지 않고 코드를보십시오.
requestHandler requestHandler = new requestHandler (super.getRequest (), super.getResponse ()); // 2 시간 이내에 유효하고 2 시간 후에 토큰을 다시 얻습니다. // TOKEN을 응용 프로그램 requestHandler.getTokenReal ()로 업데이트합니다. System.out.println ( "wechat pay get token ========================= :" +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"); // 은행 통화 packageparams.put ( "input_charset", "utf-8"); // 문자 세트 packageParams.put ( "notify_url", "http://xxxx.com/xxxx/wxcallback"); // 여기서 알림 주소는 외부 네트워크 주소를 사용하여 테스트되며 포트 80이 열려 있는지 여부에주의를 기울입니다. packageparams.put ( "out_trade_no", no); // 판매자 주문 번호 PackageParams.put ( "파트너", 파트너 리드); // 판매자 번호 packageparams.put 세트 ( "spbill_create_ip", super.getRequest (). getRemoteHost ()); // 순서로 생성 된 시스템 IP는 사용자의 브라우저 IP PackageParams.put ( "Total_Fee", String.Valueof (rstotal))를 나타냅니다. // 제품의 총량은 단위로 나뉩니다. // 지불 매개 변수 설정 SortedMap <String, String> signparams = new Treemap <String, String> (); signparams.put ( "appid", appid); SIGNPARAMS.PUT ( "비정부", 비 시세); signparams.put ( "traceid", propertiesutils.getorderno ()); signparams.put ( "타임 스탬프", 타임 스탬프); signparams.put ( "패키지", PackageValue); signparams.put ( "appkey", this.appkey); // 결제 서명을 생성하려면 SHA1 알고리즘에 Urlencoder의 원래 값을 사용해야합니다! 문자열 부호 = ""; try {sign = sha1util.createsha1sign (signparams); } catch (예외 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 ( "비 신석", 비 시스트); PayParams.put ( "package", "sign = wxpay"); PayParams.put ( "파트너", 파트너 리드); PayParams.put ( "propayId", 준비); PayParams.put ( "Appkey", this.appkey); // 매개 변수 길이 제한으로 인해 여기의 차이는 1000입니다. int time = (int) (System.CurrentTimeMillis () / 1000); PayParams.put ( "Timestamp", String.Valueof (Time)); System.out.println ( "타임 스탬프 :" + 시간); // 서명 문자열 paySign = ""; try {paysign = sha1util.createsha1sign (payparams); } catch (예외 e) {e.printstacktrace (); } payParams.put ( "부호", PaySign); // 스푸핑 JSON 데이터는 클라이언트로 반환됩니다. BASICDBOBJECT BACKOBJECT = NEW BASICDBOBJECT (); backobject.put ( "appid", appid); backobject.put ( "noncest", payparams.get ( "noncest")); backobject.put ( "package", "sign = wxpay"); backobject.put ( "파트너", payparams.get ( "partnerid")); backobject.put ( "propayid", payparams.get ( "propayid")); backobject.put ( "appkey", this.appkey); backobject.put ( "timestamp", payparams.get ( "timestamp")); backobject.put ( "부호", payparams.get ( "sign")); String backstr = dataObject.toString (); System.out.println ( "백스트 :" + 백스트); 반환 백스트; 지금까지 선불 순서가 생성되어 클라이언트에게 반환되어 WeChat 서버가 알릴 때까지 기다렸습니다. 알림의 주소는 선불 순서를 생성하는 Notify_url입니다.
ResponseHandler Reshandler = New Responshandler (요청, 응답); reshandler.setkey (파트너 키); // 요청 객체 생성 // requestHandler QueryReq = new requestHandler (요청, 응답); //QueryReq.init (); if (reshandler.istenpaysign () == true) {// Merchant 주문 번호 문자열 out_trade_no = reshandler.getParameter ( "out_trade_no"); System.out.println ( "out_trade_no :" + out_trade_no); // tenpay 주문 번호 문자열 transaction_id = reshandler.getParameter ( "transaction_id"); System.out.println ( "transaction_id :" + transaction_id); // 부서 문자열 단위의 금액 Total_fee = reshandler.getParameter ( "total_fee"); // 할인 쿠폰을 사용하는 경우 할인 값이 값, Total_Fee+할인 = 원래 요청 된 Total_Fee 문자열 할인 = reshandler.getParameter ( "할인"); // 지불 결과 String arver_state = reshandler.getParameter ( "trade_state"); // 서명 및 결과 if ( "0".Equals (trade_state)) {{ //------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // TenPay 시스템에 성공적인 메시지를 보냅니다. TenPay 시스템은이 결과 Reshandler.sendTocft ( "Success")를 수신 한 후에 더 이상 후속 알림을 제공하지 않습니다. // WeChat 서버로 성공을 반환하지 않으면 8 분 안에 알림이 30 분 안에 "성공"을 반환합니다. } else {system.out.println ( "서명 확인 실패 알림"); reshandler.sendtocft ( "실패"); 응답 .SetchAracterEncoding ( "UTF-8"); }} else {system.out.println ( "실패 -md5 실패"); }위는 Java가 WeChat Payment Server를 구현하는 코드입니다. 모든 사람이 WeChat 지불을 실현하기 위해 신중하게 공부하기를 바랍니다.