微信支付java版本之关闭订单

来源:互联网 发布:数据下载网站 编辑:程序博客网 时间:2024/05/22 09:44

1.代码实现

根据支付后的订单编号来关闭对应订单
[java] view plain copy
 print?
  1. package com.zhrd.bussinss.platform.utils;  
  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.   
  11. import net.sf.json.JSONObject;  
  12.   
  13. import org.apache.http.HttpEntity;  
  14. import org.apache.http.client.methods.CloseableHttpResponse;  
  15. import org.apache.http.client.methods.HttpPost;  
  16. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;  
  17. import org.apache.http.conn.ssl.SSLContexts;  
  18. import org.apache.http.entity.StringEntity;  
  19. import org.apache.http.impl.client.CloseableHttpClient;  
  20. import org.apache.http.impl.client.HttpClients;  
  21. import org.apache.http.util.EntityUtils;  
  22. import org.dom4j.Document;  
  23. import org.dom4j.Element;  
  24. import org.dom4j.io.SAXReader;  
  25. import org.springframework.transaction.annotation.Transactional;  
  26.   
  27. import com.zhrd.bussinss.platform.weixinPayUtils.ClientCustomSSL;  
  28.   
  29. @Transactional  
  30. public class CloseWeiXinOrderUtils {  
  31.       
  32.     public static Object closeWeiXinOrder(String outTradeNo) {  
  33.         try{  
  34.               
  35.             KeyStore keyStore = KeyStore.getInstance("PKCS12");  
  36.             FileInputStream instream = new FileInputStream(new File(  
  37.                     CustomizedPropertyPlaceholderConfigurer.getContextProperty("wx.cert").toString()));  
  38.             try {  
  39.                 keyStore.load(instream, "10061401".toCharArray());  
  40.             }finally {  
  41.                 instream.close();  
  42.             }  
  43.   
  44.             // Trust own CA and all self-signed certs  
  45.             SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore,  
  46.                     "见邮件".toCharArray()).build();  
  47.             // Allow TLSv1 protocol only  
  48.             SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(  
  49.                     sslcontext, new String[] { "TLSv1" }, null,  
  50.                     SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  
  51.             CloseableHttpClient httpclient = HttpClients.custom()  
  52.                     .setSSLSocketFactory(sslsf).build();  
  53.             // HttpGet httpget = new  
  54.             // HttpGet("https://api.mch.weixin.qq.com/secapi/pay/refund");  
  55.             HttpPost httppost = new HttpPost(  
  56.                     "https://api.mch.weixin.qq.com/pay/closeorder");  
  57.               
  58.             Date dt = new Date();  
  59.             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");  
  60.             String nonceStr = sdf.format(dt).toString();  
  61.               
  62.             String xml = ClientCustomSSL.CreateCloseOrder(outTradeNo,nonceStr);  
  63.             try {  
  64.                   
  65.                 StringEntity se = new StringEntity(xml);  
  66.                   
  67.                 httppost.setEntity(se);  
  68.   
  69.                 System.out.println("executing request" + httppost.getRequestLine());  
  70.   
  71.                 CloseableHttpResponse responseEntry = httpclient.execute(httppost);  
  72.                 try {  
  73.                     HttpEntity entity = responseEntry.getEntity();  
  74.   
  75.                     System.out.println("----------------------------------------");  
  76.                     System.out.println(responseEntry.getStatusLine());  
  77.                     if (entity != null) {  
  78.                         System.out.println("Response content length: "  
  79.                                 + entity.getContentLength());  
  80.                           
  81.                         SAXReader saxReader = new SAXReader();  
  82.                         Document document = saxReader.read(entity.getContent());  
  83.                         Element rootElt = document.getRootElement();  
  84.                           
  85.                         String resultCode = rootElt.elementText("result_code");  
  86.                         String returnCode = rootElt.elementText("return_code");  
  87.                         System.out.println("resultCode----"+resultCode);  
  88.                         System.out.println("returnCode---"+returnCode);  
  89.                         JSONObject result = new JSONObject();  
  90.                         if(returnCode.equals("SUCCESS")){  
  91.                             if(resultCode.equals("SUCCESS")){  
  92.                                 result.put("status","success");  
  93.                                 result.put("msg","success");  
  94.                             }else{  
  95.                                 result.put("status","false");  
  96.                                 result.put("msg",rootElt.elementText("err_code_des"));  
  97.                             }  
  98.                         }else{  
  99.                             result.put("status","false");  
  100.                             result.put("msg",rootElt.elementText("return_msg"));  
  101.                         }  
  102.                         return result;  
  103.   
  104.                     }  
  105.                     EntityUtils.consume(entity);  
  106.                 }  
  107.                 finally {  
  108.                     responseEntry.close();  
  109.                 }  
  110.             }  
  111.             finally {  
  112.                 httpclient.close();  
  113.             }  
  114.             return null;  
  115.               
  116.               
  117.         }catch(Exception e){  
  118.             e.printStackTrace();  
  119.             JSONObject result = new JSONObject();  
  120.             result.put("status","error");  
  121.             result.put("msg",e.getMessage());  
  122.             return result;  
  123.         }  
  124.     }  
  125. }  


0 0
原创粉丝点击