Este artículo comparte la interfaz de consulta para las órdenes de pago de WeChat para su referencia. El contenido específico es el siguiente
1. Introducción a la interfaz
2. Implementación del código
paquete 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.ssl.sslcontext; javax.servlet.http.httpServletRequest; import javax.servlet.http.httpServletResponse; import net.sf.json.jsonObject; import org.apache.http.httpentity; import org.apache.http.client.methods.closeable 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; import; org.apache.http.impl.client.ClosEableHttpClient; import org.apache.http.impl.client.httpclients; import og.dom4j.document; importar org.dom4j.element; import og.dom4j.io.saxreader; org.springframework.beanss.beans.factory; importar org.dom4j.io.saxreader; org.springframework.beanss.beans.factory; importar org.dom4j.io.saxreader; org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestMapping; import org.springframework.web.bind.annotation.requestmethod; import org.springfframework.web.bind.annotation.requestparam; importación; importación; org.springframework.web.bind.annotation.ResponseBody; import com.zhrd.bussinss.platform.service.weixinpayservice; import com.zhrd.bussinss.platform.weixinpayutils.clientcustomssl;@controler@requestmapping ("/shop/weixinpayorderSearch") clase pública weixinpayordersearchController {@aUtoWired weixInpayService WeixInpayPayService; /** * Consulta de estado de pedido de gastos de WeChat * @param request * @param request * @return */@RequestMapping (valor = "/init", método = requestmethod.get) public string init (httpservletrequest, respuesta httpservletreponse) {return "weixinpayorDersearch"; }/** * Consulta de estado de pedido de gastos de WeChat * @param Solicitud * @param Respuesta * @return */@RequestMapping (valor = "/getWeixInpayorder", método = requestmethod.post) @ResponseBody Public Public Object GetWeixInpayorder (HttpServletRequest Solicitue transaccionId,@requestParam (requerido = false) string ourTradeno) {try {KeyStore KeyStore = KeyStore.GetInstance ("PKCS12"); FileInputStream Insteam = new FileInputStream (nuevo archivo (CustomizedPropertyPlaceHolderConfigurer.getContextProperty ("wx.cert"). ToString ())); intente {KeyStore.Load (INSTAÑO, "Ver correo electrónico" .toCarArray ()); } finalmente {enterTream.close (); } // Confía en su propio CA y todos los certificados autofirmados sslContext sslContext = sslContexts.custom (). LoadKeMaterial (KeyStore, "10061401" .toCarArray ()). Build (); // Permitir el protocolo tlsv1 solo sslconnectionsocketFactory sslsf = new sslConnectionsocketFactory (sslContext, new String [] {"tlsv1"}, null, sslconnectionsocketfactory.how_all_hostname_verifier); ClosableHttpClient 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"); Fecha dt = nueva fecha (); SimpleDateFormat sdf = new SimpleDateFormat ("yyyymmddhhmmss"); String noncestr = sdf.format (dt) .ToString (); <preame = "código"> string xml = clientCustomssl.SearchNativePackage (transaccionId.trim (), "", Non -Cestr); // Esta es la ID del lado Wechat (ID local y el ID del lado del servidor se pueden considerar) intent {StringEntity SE = New StringEntity (xml); httppost.setEntity (SE); System.out.println ("Ejecución de solicitud" + httppost.getRequestline ()); ClosableHttPResponse ResponseEntry = httpclient.execute (httppost); intente {httpentity entity = ResponseEntry.getEntity (); System.out.println ("----------------------------------------"); System.out.println (ResponseEntry.getStatusLine ()); if (entity! = null) {System.out.println ("Longitud de contenido de respuesta:" + entity.getContentLength ()); /*BufferedReader BufferedReader = new BufferedReader (new InputStreamReader (entity.getContent ())); Texto de cadena; while ((text = bufferedReader.Readline ())! = NULL) {System.out.println ("================="+Text); }*/ Saxreader saxreader = new saxreader (); Documento documento = saxreader.read (entity.getContent ()); Elemento rootelt = document.getRootElement (); System.out.println ("nodo raíz:" + rootelt.getName ()); System.out.println ("==="+rootelt.elementText ("result_code")); System.out.println ("==="+rootelt.elementText ("return_msg")); Cadena resultCode = rootElt.ElementText ("result_code"); Cadena returncode = rootelt.elementText ("return_code"); JsonObject resultado = new JsonObject (); System.out.println ("resultCode ======"+resultCode); System.out.println ("returncode ========"+returncode); System.out.println ("Trade_State ======="+RootelT.ElementText ("Trade_state")); System.out.println ("transaccion_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 ("éxito") && returncode.equals ("éxito")) {result.put ("TradeState", rootelt.elementText ("trade_state"); resultado.put ("transaccionId", rootelt.elementText ("transaccion_id")); result.put ("outtradeno", rootelt.elementText ("out_trade_no")); resultado.put ("TotalFee", RootElt.ElementText ("Total_fee")); resultado.put ("estado", "éxito"); resultado.put ("msg", "éxito"); } else if (returncode.equals ("éxito")) {result.put ("ErrorCheck", "errcode"); resultado.put ("estado", "falso"); resultado.put ("errorMsg", rootelt.elementText ("err_code_des")); } else {result.put ("ErrgeCheck", "errmsg"); resultado.put ("estado", "falso"); resultado.put ("errorMsg", rootelt.elementText ("return_msg")); } resultado de retorno; } // entityUtils.consume (entidad); } Finalmente {ResponseEntry.Close (); }} finalmente {httpclient.close (); }} catch (Exception e) {E.PrintStackTrace (); JsonObject resultado = new JsonObject (); resultado.put ("estado", "error"); resultado.put ("msg", e.getMessage ()); resultado de retorno; } devolver ""; }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.