이 기사에서는 참조에 대한 WeChat 결제 주문에 대한 쿼리 인터페이스를 공유합니다. 특정 내용은 다음과 같습니다
1. 인터페이스 소개
2. 코드 구현
package com.zhrd.bussinss.platform.controller.shop; import java.io.file; import java.io.fileinputstream; import java.security.keystore; import java.text.simpledateformat; import java.util.date; import javax.net.ssl.sslcontext; javax.servlet.http.httpervletrequest; import javax.servlet.http.htttp.httpervletresponse; import net.sf.json.jsonobject; import org.apache.http.httpentity; import org.apache.http.client.method.s.closablehtppescone; org.apache.http.client.methods.httppost; import org.apache.http.conn.ssl.sslconnectionsocketfactory; import org.apache.http.conn.ssl.sslcontexts; import org.apache.http.entity.stringentity; org.apache.http.impl.client.closeablehttpclient; import org.apache.http.impl.client.httpclients; import org.dom4j.document; import org.dom4j.element; import org.dom4j.io.saxreader; import org.spring org.springframework.stereotyp.controller; import org.springframework.web.bind.annotation.requestmapping; import org.spramframework.bind.annotation.requestmethod; import org.springframework.beb.bind.annotation.requestparam; import org.springframework.web.bind.annotation.responsebody; import com.zhrd.bussinss.platform.service.weixinpayservice; import com.zhrd.bussinss.platform.utils.CustomizedPropertyPlaceHolderConfigurer; import com.zhrd.bussinss.platform.weixinpayutils.clientCustomssl;@controller@requestMapping ( "/shop/weixinPayorderSearch") 공개 클래스 weixinPayordersearchController {@autowired weixinPayService weixinPayService; /** * WeChat 지출 주문 상태 쿼리 * @param request * @param request * @return */@requestmapping (value = "/init", method = requestmethod.get) public String init (httpservletrequest request, httpservletResponse 응답) {return "weixinPayordErsearch"; }/** * wechat 지출 주문 상태 쿼리 * @param request * @param response * @return */@requestmapping (value = "/getweixinPayorder", method = requestmethod.post) @ResponseBody public object getWeixInpayOrder (httpervletRequest request, httpervletResponse, @requestparam) transactionId,@requestParam (필수 = 거짓) 문자열 outtradeno) {try {keystore keystore = keystore.getInstance ( "pkcs12"); fileInputStream instream = new FileInputStream (새 파일 (customizedPropertyPlaceHolderConfigurer.GetContextProperty ( "wx.cert"). toString ()); try {keystore.load (Instream, "이메일 참조".tocharray ()); } 마침내 {enterstream.close (); } // 자신의 CA 및 모든 자체 서명 된 CERTS SSLCONTEXT SSLCONTEXT = SSLCONTEXTS.CUSTOM (). LOADKEYMATERIAL (KEYSTORE, "10061401".TOCHARRAY ()). 빌드 (); // tlsv1 프로토콜 허용 SSLConnectionSocketFactory sslsf = new sslConnectionSocketFactory (sslcontext, new String [] { "tlsv1"}, null, sslconnectionsocketfactory.allow_all_all_hostname_verifier); Closeblehttpclient httpclient = httpclients.custom () .setsslsocketfactory (sslsf) .build (); // httpget httpget = new // httpget ( "https://api.mch.weixin.qq.com/secapi/pay/refund"); httppost httppost = new httppost ( "https://api.mch.weixin.qq.com/pay/orderquery"); 날짜 dt = 새 날짜 (); simpledateformat sdf = 새로운 simpledateformat ( "yyyymmddhhmmss"); String noncest = sdf.format (dt) .toString (); <pre name = "code"> string xml = clientCustomsSl.searchNativePackage (transactionId.trim (), ", noncestring); // 이것은 wechat 측 ID (로컬 ID와 서버 측 ID 모두 queried) 시도 {xml); httppost.setentity (se); System.out.println ( "실행 요청" + httppost.getRequestline ()); closeblehtttpresponse responseentry = httpclient.execute (httppost); {httpentity entity = responsentry.getentity (); System.out.println ( "-------------------------------------------------------- System.out.println (ResponseEntry.getStatusline ()); if (entity! = null) {system.out.println ( "응답 내용 길이 :" + entity.getContentLength ()); /*bufferedReader bufferedReader = new bufferedReader (new inputStreamReader (entity.getContent ()); 문자열 텍스트; while ((text = bufferedReader.Readline ())! = null) {system.out.println ( "==================="+text); }*/ saxReader saxReader = new SaxReader (); 문서 문서 = saxReader.Read (entity.getContent ()); 요소 rootelt = document.getRootElement (); System.out.println ( "루트 노드 :" + rootelt.getName ()); System.out.println ( "==="+rootelt.elementText ( "result_code")); System.out.println ( "==="+rootelt.elementText ( "return_msg")); 문자열 resultCode = rootelt.elementText ( "result_code"); String returnCode = rootelt.elementText ( "return_Code"); jsonobject result = new jsonobject (); System.out.println ( "resultCode ======"+resultCode); System.out.println ( "returnCode ======="+returnCode); System.out.println ( "trade_state ======="+rootelt.elementText ( "trade_state")); System.out.println ( "transaction_id ======"+rootelt.elementText ( "transaction_id")); System.out.println ( "out_trade_no ========="+ rootelt.elementText ( "out_trade_no")); System.out.println ( "total_fee =========="+rootelt.elementText ( "Total_Fee")); if (resultCode! = null && resultCode.equals ( "success") && returnCode.equals ( "success")) {result.put ( "tradestate", rootelt.elementText ( "trade_state")); result.put ( "transactionId", rootelt.elementText ( "transaction_id")); result.put ( "outtradeno", rootelt.elementText ( "out_trade_no")); result.put ( "totalfee", rootelt.elementText ( "total_fee")); result.put ( "상태", "성공"); result.put ( "msg", "success"); } else if (returnCode.equals ( "success")) {result.put ( "errorcheck", "errcode"); result.put ( "상태", "false"); result.put ( "errormsg", rootelt.elementtext ( "err_code_des")); } else {result.put ( "errorcheck", "errmsg"); result.put ( "상태", "false"); result.put ( "errormsg", rootelt.elementtext ( "return_msg")); } 반환 결과; } // entityutils.consume (엔티티); } 마침내 {responseentry.close (); }} 마침내 {httpclient.close (); }} catch (예외 e) {e.printstacktrace (); jsonobject result = new jsonobject (); result.put ( "상태", "오류"); result.put ( "msg", e.getMessage ()); 반환 결과; } 반품 ""; }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.