本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下

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();

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",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 "";

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

相关文章

总结

以上是编程之家为你收集整理的微信支付java版本之查询订单全部内容,希望文章能够帮你解决微信支付java版本之查询订单所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

微信支付查询订单java_微信支付java版本之查询订单相关推荐

  1. 简单航班查询系统java_基于jsp的航班信息查询-JavaEE实现航班信息查询 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的航班信息查询, 该项目可用各类java课程设计大作业中, 航班信息查询的系统架构分为前后台两部分, 最终实现在线上 ...

  2. mongodb java 多条件查询_MongoDB_Java连接mongo 使用Java多条件查询mongo数据

    在mongo shell中的查询语句是这样的.. db.user.find({"age":{"$gt":5,"$lt":14}})我们用Ja ...

  3. 检查java_如何检查Java版本?

    Java是世界上最流行的编程语言之一,用于构建不同类型的跨平台应用程序. 本文介绍了如何使用命令行检查你的Linux系统上安装了什么版本的Java.这在安装需要特定版本Java的应用程序时很有用. J ...

  4. 查询电脑上安装的java版本

    1:win+r弹出的窗口中输入cmd 2:按下enter键,弹出下面窗口 3:输入 java -version或java --version.就可看到自己电脑上的Java版本

  5. 微信刷卡 sdk java_微信支付 Java SDK

    微信支付 Java SDK 对微信支付开发者文档中给出的API进行了封装. com.github.wxpay.sdk.WXPay类下提供了对应的方法: 方法名 说明microPay 刷卡支付 unif ...

  6. 微信上传素材 java_微信素材上传(JAVA)

    public String uploadMaterial(String url,InputStream sbs,String filelength,String filename, String ty ...

  7. 微信小程序语音识别java_微信小程序实现语音识别功能

    原标题:微信小程序实现语音识别功能 使用小程序实现语音识别功能,由于语音识别可以直接使用各厂家的API接口,并且小程序为腾讯所有,因此考虑到可能的低延时,采用了腾讯提供的免费API接口,准确讲是腾讯语 ...

  8. 微信授权绑定手机号 java_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPhoneNumber这个组件通过button来实现(别的标签无 ...

  9. 微信上传素材 java_微信上传素材php代码

    $url:微信上传媒体素材的api接口. $path_img:服务器文件的绝对路径 这里的绝对路径不是$_FILES中的临时路径,不然会报文件类型错误的异常. private function Htt ...

最新文章

  1. python可视化:matplotlib学习笔记
  2. Automate repeatedly actions in work
  3. 路由器与集线器、交换机的根本区别
  4. 【错误记录】反射时调用方法及成员报错 ( 执行反射方法 | 设置反射的成员变量 | 设置方法/成员可见性 )
  5. 为什么软件开发方法论让你觉得糟糕?Why Software Development Methodologies Suck?
  6. 博睿数据与阿里云签订云原生核心合作伙伴计划,推动企业智能运维落地
  7. 21行代码AC_【蓝桥杯】承压计算(解题通法+技巧)
  8. 蝗虫算法java代码_蝗虫搜索算法 蝗虫算法:蝗虫优化算法是模拟自然界蝗虫种群捕食行为而提出的一 联合开发网 - pudn.com...
  9. SpringBoot SimpleCacheConfiguration的自动配置原理
  10. WINCE系统的PDA开发 xp系统+VS2008
  11. nmds与mds的区别_MDS与MSDS的区别
  12. 如何用活字格定制监狱管理系统
  13. GPS模块运用: GPS轨迹记录
  14. flash图片如何镜像翻转_Flash制作跳动的文字镜像效果
  15. CentOS防火墙放行端口(以 8080 端口为例)
  16. 记一次查深圳磨房百公里徒步照片历程
  17. 爱心特效代码(HTML超文本标记语言,直接改记事本后缀)
  18. Docker 安装mysql 解决中文乱码,数据持久化进入本地
  19. 项目 调度 服务器,(2)项目构建(Reactor部分)【Lars-基于C++负载均衡远程服务器调度系统教程】...
  20. Excel绘制图表时X轴在有数据点的地方才出现刻度标签

热门文章

  1. Java中级面试题及答案解析(4)
  2. Windows CE.net的智能…
  3. (附源码)计算机毕业设计ssm垂钓俱乐部网站
  4. AFNetwork 作用和用法详解
  5. 每日新闻丨华为被拘留前员工再回应;亚马逊云发布量子计算服务Braket预览;硅谷“六巨头”10年避税超千亿美元...
  6. 2016百度沸点榜单出炉 看看年度搜索报告有哪些
  7. pytorch-npu常用资料
  8. 打造室内 “店铺级” 定位的 Petal Maps Platform,正在重塑数字生活新范式
  9. 电工学复习【4】--三相交流电路
  10. html对称标记,html5/css3 字体 对称渐变+描边+影子