微信支付java版本之查询订单

1.接口简介




2.代码实现

[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.zhrd.bussinss.platform.controller.shop;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.security.KeyStore;  
  6. import java.text.SimpleDateFormat;  
  7. import java.util.Date;  
  8.   
  9. import javax.net.ssl.SSLContext;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.   
  13. import net.sf.json.JSONObject;  
  14.   
  15. import org.apache.http.HttpEntity;  
  16. import org.apache.http.client.methods.CloseableHttpResponse;  
  17. import org.apache.http.client.methods.HttpPost;  
  18. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;  
  19. import org.apache.http.conn.ssl.SSLContexts;  
  20. import org.apache.http.entity.StringEntity;  
  21. import org.apache.http.impl.client.CloseableHttpClient;  
  22. import org.apache.http.impl.client.HttpClients;  
  23. import org.dom4j.Document;  
  24. import org.dom4j.Element;  
  25. import org.dom4j.io.SAXReader;  
  26. import org.springframework.beans.factory.annotation.Autowired;  
  27. import org.springframework.stereotype.Controller;  
  28. import org.springframework.web.bind.annotation.RequestMapping;  
  29. import org.springframework.web.bind.annotation.RequestMethod;  
  30. import org.springframework.web.bind.annotation.RequestParam;  
  31. import org.springframework.web.bind.annotation.ResponseBody;  
  32.   
  33. import com.zhrd.bussinss.platform.service.WeiXinPayService;  
  34. import com.zhrd.bussinss.platform.utils.CustomizedPropertyPlaceholderConfigurer;  
  35. import com.zhrd.bussinss.platform.weixinPayUtils.ClientCustomSSL;  
  36.   
  37. @Controller  
  38. @RequestMapping("/shop/weiXinPayOrderSearch")  
  39. public class WeiXinPayOrderSearchController {  
  40.       
  41.       
  42.     @Autowired  
  43.     WeiXinPayService weiXinPayService;  
  44.       
  45.       
  46.       
  47.     /** 
  48.      * 微信支出订单状态查询 
  49.      * @param request 
  50.      * @param response 
  51.      * @return 
  52.      */  
  53.     @RequestMapping(value="/init",method=RequestMethod.GET )  
  54.     public String init(HttpServletRequest request,HttpServletResponse response){  
  55.           
  56.         return "weixinPayOrderSearch";  
  57.           
  58.     }  
  59.   
  60.       
  61.     /** 
  62.      * 微信支出订单状态查询 
  63.      * @param request 
  64.      * @param response 
  65.      * @return 
  66.      */  
  67.     @RequestMapping(value="/getWeiXinPayOrder",method=RequestMethod.POST )  
  68.     @ResponseBody  
  69.     public Object getWeiXinPayOrder(HttpServletRequest request,HttpServletResponse response,@RequestParam(required=false) String transactionId,@RequestParam(required=false) String outTradeNo){  
  70.         try{  
  71.               
  72.             KeyStore keyStore = KeyStore.getInstance("PKCS12");  
  73.             FileInputStream instream = new FileInputStream(new File(  
  74.                     CustomizedPropertyPlaceholderConfigurer.getContextProperty("wx.cert").toString()));  
  75.             try {  
  76.                 keyStore.load(instream, "见邮件".toCharArray());  
  77.             }finally {  
  78.                 instream.close();  
  79.             }  
  80.   
  81.             // Trust own CA and all self-signed certs  
  82.             SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore,  
  83.                     "10061401".toCharArray()).build();  
  84.             // Allow TLSv1 protocol only  
  85.             SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(  
  86.                     sslcontext, new String[] { "TLSv1" }, null,  
  87.                     SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  
  88.             CloseableHttpClient httpclient = HttpClients.custom()  
  89.                     .setSSLSocketFactory(sslsf).build();  
  90.             // HttpGet httpget = new  
  91.             // HttpGet("https://api.mch.weixin.qq.com/secapi/pay/refund");  
  92.             HttpPost httppost = new HttpPost(  
  93.                     "https://api.mch.weixin.qq.com/pay/orderquery");  
  94.             Date dt = new Date();  
  95.             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");  
  96.             String nonceStr = sdf.format(dt).toString();  
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <pre name="code" class="java">  

 
 
 
 
[java]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1.             String xml = ClientCustomSSL.SearchNativePackage(transactionId.trim(),"", nonceStr);//此处为微信端id(本地id和服务器端id均可查询)  
  2.             try {  
  3.                   
  4.                 StringEntity se = new StringEntity(xml);  
  5.                   
  6.                 httppost.setEntity(se);  
  7.   
  8.                 System.out.println("executing request" + httppost.getRequestLine());  
  9.   
  10.                 CloseableHttpResponse responseEntry = httpclient.execute(httppost);  
  11.                 try {  
  12.                     HttpEntity entity = responseEntry.getEntity();  
  13.   
  14.                     System.out.println("----------------------------------------");  
  15.                     System.out.println(responseEntry.getStatusLine());  
  16.                     if (entity != null) {  
  17.                         System.out.println("Response content length: "  
  18.                                 + entity.getContentLength());  
  19.                     /*BufferedReader bufferedReader = new BufferedReader( 
  20.                                 new InputStreamReader(entity.getContent())); 
  21.                         String text; 
  22.                         while ((text = bufferedReader.readLine()) != null) { 
  23.                             System.out.println("======="+text); 
  24.                         }*/  
  25.                           
  26.                           
  27.                         SAXReader saxReader = new SAXReader();  
  28.                         Document document = saxReader.read(entity.getContent());  
  29.                         Element rootElt = document.getRootElement();  
  30.                         System.out.println("根节点:" + rootElt.getName());  
  31.                         System.out.println("==="+rootElt.elementText("result_code"));  
  32.                         System.out.println("==="+rootElt.elementText("return_msg"));  
  33.                         String resultCode = rootElt.elementText("result_code");  
  34.                         String returnCode = rootElt.elementText("return_code");  
  35.                         JSONObject result = new JSONObject();  
  36.                         System.out.println("resultCode====="+resultCode);  
  37.                         System.out.println("returnCode====="+returnCode);  
  38.                         System.out.println("trade_state====="+rootElt.elementText("trade_state"));  
  39.                         System.out.println("transaction_id====="+rootElt.elementText("transaction_id"));  
  40.                         System.out.println("out_trade_no====="+ rootElt.elementText("out_trade_no"));  
  41.                         System.out.println("total_fee====="+rootElt.elementText("total_fee"));  
  42.                           
  43.                           
  44.                         if(resultCode != null && resultCode.equals("SUCCESS") && returnCode.equals("SUCCESS")){  
  45.                             result.put("tradeState",  rootElt.elementText("trade_state"));  
  46.                             result.put("transactionId",  rootElt.elementText("transaction_id"));  
  47.                             result.put("outTradeNo",  rootElt.elementText("out_trade_no"));  
  48.                             result.put("totalFee",  rootElt.elementText("total_fee"));  
  49.                             result.put("status","success");  
  50.                             result.put("msg","success");  
  51.                         }else if(returnCode.equals("SUCCESS")){  
  52.                             result.put("errorCheck""errCode");  
  53.                             result.put("status","false");  
  54.                             result.put("errorMsg",rootElt.elementText("err_code_des"));  
  55.                         }else{  
  56.                             result.put("errorCheck""errMsg");  
  57.                             result.put("status","false");  
  58.                             result.put("errorMsg", rootElt.elementText("return_msg"));  
  59.                         }  
  60.                         return result;  
  61.   
  62.                     }  
  63. //                  EntityUtils.consume(entity);  
  64.                 }  
  65.                 finally {  
  66.                     responseEntry.close();  
  67.                 }  
  68.             }  
  69.             finally {  
  70.                 httpclient.close();  
  71.             }  
  72.               
  73.               
  74.         }catch(Exception e){  
  75.             e.printStackTrace();  
  76.             JSONObject result = new JSONObject();  
  77.             result.put("status","error");  
  78.             result.put("msg",e.getMessage());  
  79.             return result;  
  80.         }  
  81.         return "";  
  82.       
  83.           
  84.     }  
  85.   
  86. }  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值