Cet article partage l'interface de requête pour les commandes de paiement WeChat pour votre référence. Le contenu spécifique est le suivant
1. Introduction à l'interface
2. Implémentation du code
package com.zhrd.bussins.platform.controller.shop; import java.io.file; import java.io.fileinputStream; import java.security.keystore; import java.text.simpledateFormat; import java.util.date; importer javax.net.ssl.ssslcontext; import; 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.closablehttprarsonse; org.apache.http.client.methods.httppost; import org.apache.http.conn.ssl.sslconnectionSocketFactory; import org.apache.http.contity.stringentity; import; 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.springframework.beans.factory.annotation.autowired; import org.springframework.sterreotype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestMethod; Import org.springframework.web.bind.annotation.requestParam; import org.springframework.web.bind.annotation.responsebody; import com.zhrd.bussins.platform.service.weixinpayservice; import com.zhrn.bussins.platform.utils.CustomatedPropertyplaceholde com.zhrd.bussins.platform.weixinpayutils.clientcustomssl; @ contrôleur @ requestmapping ("/ shop / weixinpayordersearch") class public weixinpayordersearchController {@Autowired WeixinPayService weixinpayService; / ** * WECHAT STATUS DE STATION DE L'ORDRE DE DÉCHAT * @PARAM Request * @param demande * @return * / @requestmapping (value = "/ init", méthode = requestMethod.get) public String init (httpservletRequest request "; } / ** * WECHAT STATION DE L'ORDRE DE DÉCENSION COMMANDE * @PARAM DEMAND * @PARAM Response * @return * / @requestmapping (value = "/ getweixinpayOrder", méthode = requestMethod.Post) @ResponseBody Object GetweixinPayOrder (httpservletRequest request, httpserreresponse réponse, @ requestParam (requis = false). transactionId, @ requestParam (required = false) String OuttraDeno) {try {keystore keystore = keystore.getInstance ("pkcs12"); FileInputStream InsideRam = new FileInputStream (nouveau fichier (personnaliséPropertyPlaceHolderConfigurer.getContextProperty ("wx.cert"). ToString ())); essayez {keystore.load (instream, "voir email" .tocharArray ()); } enfin {enterStream.close (); } // Trust Own CA et tous les certificats auto-signés sslcontext sslContext = sslcontex.custom (). LoadKeyMaterial (keystore, "10061401" .tocharArray ()). Build (); // Autoriser le protocole TLSV1 uniquement SSLConnectionSocketFactory SSLSF = new SSLConnectionSocketFactory (sslContext, new String [] {"tlsv1"}, null, sslconnections bancarfactory.allow_all_all_hostname_verifier); CloseableHttpClient 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"); Date dt = new Date (); SimpledateFormat sdf = new SimpledateFormat ("yyyymmddhhmmss"); String nonCestr = sdf.format (dt) .toString (); <pré-nom = "code"> String xml = clientCustomSSL.SearchNativePackage (TransactionId.trim (), "", noncestr); // Ceci est le wechat Side Id (à la fois ID local et id côté serveur httppost.SetEntity (SE); System.out.println ("Exécution de la demande" + httppost.getRequestline ()); CloseableHttpResponse Responsentry = httpClient.Execute (httppost); try {httpentity entity = réponseTry.getEntity (); System.out.println ("----------------------------------------"); System.out.println (réponsentry.getStatusline ()); if (entité! = null) {System.out.println ("Longueur du contenu de la réponse:" + entité.getContentLength ()); / * BufferedReader BufferedReader = new BufferedReader (new inputStreamReader (entity.getContent ())); Texte de chaîne; while ((text = buttereDreader.readline ()))! = null) {System.out.println ("==============" + texte); } * / SaxReader saxReader = new saxReader (); Document document = saxReader.read (entity.getContent ()); Element rootElt = document.getRootelement (); System.out.println ("Node racine:" + 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 ("Tradestate", rootElt.ElementText ("Trade_State")); result.put ("TransactionId", rootElt.ElementText ("Transaction_id")); result.put ("undtradeno", rootElt.ElementText ("out_trade_no")); result.put ("totalfee", rootElt.ElementText ("total_fee")); result.put ("statut", "succès"); result.put ("msg", "succès"); } else if (returnCode.equals ("Success")) {result.put ("errorCheck", "errcode"); result.put ("statut", "false"); result.put ("errormsg", rootelt.elementText ("err_code_des")); } else {result.put ("errorcheck", "errmsg"); result.put ("statut", "false"); result.put ("errormsg", rootelt.elementText ("return_msg")); } Retour Résultat; } // entityUtils.consume (entité); } enfin {réponsentry.close (); }} enfin {httpclient.close (); }} catch (exception e) {e.printStackTrace (); JsonObject result = new JSONObject (); result.put ("statut", "erreur"); result.put ("msg", e.getMessage ()); Résultat de retour; } retour ""; }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.