この記事では、参照のためのWeChat支払い注文のクエリインターフェイスを共有しています。特定のコンテンツは次のとおりです
1。インターフェイスの紹介
2。コード実装
パッケージcom.zhrd.bussinss.platform.controller.shop; import java.io.file; import java.io.fileinputStream; Import java.security.keyStore; Import.simpledateformat; Import Java.util.date; Import.net.net.net.net.sl.slcontext; javax.servlet.http.httpservletrequest; Import javax.servlet.http.httpservletResponse; Import net.sf.json.jsonobject; Import org.apache.http.httpentity; Import org.apache.http.client.method.closeaieabules; org.apache.http.client.methods.htppost; Import org.apache.http.conn.ssl.sslconnectionsocketfactory; Import org.apache.http.conn.ssl.sslcontexts; Import org.apache.http.entity; 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.sax.sax.annot.Annt. org.springframework.stereotype.controller; Import org.springframework.web.bind.annotation.requestmapping; Import org.springframework.web.bind.annotation.requestmethod; Import org.springframework.web.bind.notation.requestparam; org.springframework.web.bind.annotation.responsebody; Import com.zhrd.bussinss.platform.service.weixinpayservice; Import com.zhrd.bussins.platform.utils.customizedpropertyplaceplaceplaceplaceplaceholderconfigure; com.zhrd.bussinss.platform.weixinpayutils.clientcustomssl;@controller@requestmapping( "/shop/weixinpayordersearch")public class 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 getWeixinPayorder(httpservletRequest(httpservletrequestリクエスト、httpservletresponesponseponse)string = string parim(fore transactionId、@requestparam(必須= false)文字列outtradeno){try {keystore keystore = keystore.getInstance( "pkcs12"); fileInputStream entream = new FileInputStream(new File(customizedPropertyPlaceHolderConfigurer.getContextProperty( "wx.cert")。toString())); try {keystore.load(instream、 "email" .tochararray()); }最後に{enterstream.close(); } //信頼しているCAおよびすべての自己署名証明書SSLCONTEXT SSLCONTEXT = SSLCONTEXTS.CUSTOM()。loadKeymaterial(keystore、 "10061401" .tochararray())。build(); // TLSV1プロトコルのみを許可するSSLConnectionSocketFactory SSLSF = new SSLConnectionSocketFactory(SSLContext、new String [] {"Tlsv1"}、null、sslConnectionSocketSocketFactory.Allow_all_hostname_verifier); closeablehttpclient httpclient = httpclient.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.qc.com/pay/orderquery");日付dt = new date(); SimpleDateFormat sdf = new SimpledateFormat( "yyyymmddhhmmss"); string noncestr = sdf.format(dt).tostring(); <pre name = "code"> string xml = clientcustomssl.searchnativePackage(transactionid.trim()、 ""、noncestr); httppost.setentity(se); system.out.println( "requestの実行" + httppost.getRequestline()); CLOSEABLEHTTPRESPONSE RESPONSENENTRY = HTTPCLIENT.EXECUTE(HTTPPOST); try {httpentity entity = responsentry.getEntity(); System.out.println("----------------------------------------"); system.out.println(ResponseTentry.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(); document document = saxreader.read(entity.getContent());要素rootelt = document.getRootelement(); System.out.println( "root node:" + rootelt.getName()); System.out.println( "==="+rootelt.ElementText( "result_code")); system.out.println( "==="+rootelt.ElementText( "return_msg")); string 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( "cordestate"、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( "status"、 "success"); result.put( "msg"、 "success"); } else if(returnCode.equals( "success")){result.put( "errorcheck"、 "errcode"); result.put( "status"、 "false"); result.put( "errormsg"、rootelt.elementText( "err_code_des")); } else {result.put( "errorcheck"、 "errmsg"); result.put( "status"、 "false"); result.put( "errormsg"、rootelt.elementText( "return_msg")); } return result; } // entityutils.consume(entity); }最後に{ResponseTentry.Close(); }}最後に{httpclient.close(); }} catch(例外e){e.printstacktrace(); jsonObject result = new jsonobject(); result.put( "status"、 "error"); result.put( "msg"、e.getmessage());返品結果; } 戻る ""; }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。