微信支付java版本之查询订单
程序员文章站
2024-03-13 10:56:51
本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下
1.接口简介
2.代码实现
packag...
本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下
1.接口简介
2.代码实现
package 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.sslcontext; 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.closeablehttpresponse; import 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 org.dom4j.document; import org.dom4j.element; import org.dom4j.io.saxreader; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.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.bussinss.platform.service.weixinpayservice; import com.zhrd.bussinss.platform.utils.customizedpropertyplaceholderconfigurer; import com.zhrd.bussinss.platform.weixinpayutils.clientcustomssl; @controller @requestmapping("/shop/weixinpayordersearch") public class weixinpayordersearchcontroller { @autowired weixinpayservice weixinpayservice; /** * 微信支出订单状态查询 * @param request * @param response * @return */ @requestmapping(value="/init",method=requestmethod.get ) public string init(httpservletrequest request,httpservletresponse response){ return "weixinpayordersearch"; } /** * 微信支出订单状态查询 * @param request * @param response * @return */ @requestmapping(value="/getweixinpayorder",method=requestmethod.post ) @responsebody public object getweixinpayorder(httpservletrequest request,httpservletresponse response,@requestparam(required=false) string transactionid,@requestparam(required=false) string outtradeno){ try{ keystore keystore = keystore.getinstance("pkcs12"); fileinputstream instream = new fileinputstream(new file( customizedpropertyplaceholderconfigurer.getcontextproperty("wx.cert").tostring())); try { keystore.load(instream, "见邮件".tochararray()); }finally { instream.close(); } // trust own ca and all self-signed certs sslcontext sslcontext = sslcontexts.custom().loadkeymaterial(keystore, "10061401".tochararray()).build(); // allow tlsv1 protocol only sslconnectionsocketfactory sslsf = new sslconnectionsocketfactory( sslcontext, new string[] { "tlsv1" }, null, sslconnectionsocketfactory.allow_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();<pre name="code" class="java"> string xml = clientcustomssl.searchnativepackage(transactionid.trim(),"", noncestr);//此处为微信端id(本地id和服务器端id均可查询) try { stringentity se = new stringentity(xml); httppost.setentity(se); system.out.println("executing request" + httppost.getrequestline()); closeablehttpresponse responseentry = httpclient.execute(httppost); try { httpentity entity = responseentry.getentity(); system.out.println("----------------------------------------"); system.out.println(responseentry.getstatusline()); if (entity != null) { system.out.println("response content length: " + entity.getcontentlength()); /*bufferedreader bufferedreader = new bufferedreader( new inputstreamreader(entity.getcontent())); string text; while ((text = bufferedreader.readline()) != null) { system.out.println("======="+text); }*/ saxreader saxreader = new saxreader(); document document = saxreader.read(entity.getcontent()); element rootelt = document.getrootelement(); system.out.println("根节点:" + 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("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); } finally { responseentry.close(); } } finally { httpclient.close(); } }catch(exception e){ e.printstacktrace(); jsonobject result = new jsonobject(); result.put("status","error"); result.put("msg",e.getmessage()); return result; } return ""; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。