本文实例为大家分享了java微信支付之关闭订单的具体代码,供大家参考,具体内容如下

一、应用场景

商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付

系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口

注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。

二、接口地址

https://api.mch.weixin.qq.com/pay/closeorder

三、请求参数

只能根据自己商户系统的订单号关闭

package com.phil.wechatpay.model.rep;

import java.io.Serializable;

/**

* 关闭订单请求参数(正常XML)

* @author phil

* @date 2017年7月25日

*

*/

public class CloseOrderParams extends AbstractPayParams implements Serializable{

/**

*

*/

private static final long serialVersionUID = -4206464928803827244L;

private String out_trade_no; //商户订单号

public String getOut_trade_no() {

return out_trade_no;

}

public void setOut_trade_no(String out_trade_no) {

this.out_trade_no = out_trade_no;

}

}

四、返回结果

package com.phil.wechatpay.model.resp;

import java.io.Serializable;

import com.phil.common.annotation.NotRequire;

/**

* 关闭订单返回参数(带XML格式)

*

* @author phil

* @date 2017年7月25日

*

*/

public class CloseOrderResult extends AbstractPayResult implements Serializable {

private static final long serialVersionUID = -1996103742747816922L;

private String return_code; // 返回状态码SUCCESS/FAIL

@NotRequire

private String return_msg; //返回信息

/**** return_code 为SUCCESS ****/

private String result_code;// 业务结果

private String result_msg;// 业务结果描述

@NotRequire

private String err_code;// 错误返回的信息描述

@NotRequire

private String err_code_des;// 错误返回的信息描述

}

五、关闭订单

package com.phil.wechatpay.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

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.ResponseBody;

import com.phil.common.config.WechatConfig;

import com.phil.common.util.HttpReqUtil;

import com.phil.common.util.PayUtil;

import com.phil.common.util.SignatureUtil;

import com.phil.common.util.XmlUtil;

import com.phil.wechatpay.model.rep.CloseOrderParams;

import com.phil.wechatpay.model.resp.CloseOrderResult;

import com.phil.wechatpay.service.WechatPayService;

/**

* 关闭订单

* @author phil

* @date 2017年7月25日

*

*/

@Controller

@RequestMapping("/wxpay/")

public class WechatPayCloseOrderController {

@Autowired

private WechatPayService wechatPayService;

@ResponseBody

@RequestMapping("closeOrder")

public CloseOrderResult closeOrder(HttpServletRequest request, HttpServletResponse response) throws Exception {

CloseOrderResult closeOrderResult = null;

CloseOrderParams closeOrderParams = new CloseOrderParams();

closeOrderParams.setAppid(WechatConfig.APP_ID);

closeOrderParams.setMch_id(WechatConfig.MCH_ID);

closeOrderParams.setNonce_str(PayUtil.createNonceStr());

closeOrderParams.setOut_trade_no("");//自己传入

//请求的xml

String closeOrderXml = wechatPayService.abstractPayToXml(closeOrderParams);//签名合并到service

// 返回格式的XML

String closeOrderResultXmL = HttpReqUtil.HttpsDefaultExecute(HttpReqUtil.POST_METHOD,WechatConfig.CLOSE_ORDER_URL, null, closeOrderXml);

// 进行签名校验

if (SignatureUtil.checkIsSignValidFromWeiXin(closeOrderResultXmL)) {

closeOrderResult = XmlUtil.getObjectFromXML(closeOrderResultXmL, CloseOrderResult.class);

}

return closeOrderResult;

}

}

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

java微信支付超时_Java微信支付之关闭订单相关推荐

  1. java微信支付代码_Java微信支付之服务号支付代码示例

    Java微信支付之服务号支付实现,网上的java微信支付sdk和Demo基本上是水的,看着头疼所以我决心自己开始写Java微信支付之公众号支付,多的不说见下面源码,为了方便使用我分别用了两个Servl ...

  2. java app微信支付接口_JAVA微信APP支付接口整合

    上次我们看到了支付宝的APP支付工具,那么这次就来封装封装微信的APP支付;如果已经清楚了支付宝的支付流程,那么微信支付也和它大同小异了,当然这其中肯定是有各种变化的: 首先让我把微信支付文档的官网贴 ...

  3. java做微信开发工具_Java微信公众平台开发(14) 微信web开发者工具使用

    为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调 ...

  4. java模拟连接超时_Java:使用Toxiproxy模拟各种连接问题

    java模拟连接超时 用Toxiproxy和Java的HttpURLConnection模拟各种连接问题,以查看产生了什么样的错误:连接超时vs.读取超时vs.连接被拒绝-. 结果: 系统:openj ...

  5. java下载微信支付账单_java微信支付,对账单下载

    2020年1月9日17:22:41 官方文档和sdk https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 官方也是也有一个0.0 ...

  6. java微信企业付款_Java微信支付-微信企业付款到个人

    [实例简介] 微信支付企业付款到个人,包括付款 以及 查询 参考文章http://blog.csdn.net/fengshizty/article/details/53204566 [实例截图] [核 ...

  7. java微信公众号支付退款_java 微信公众号支付 详细教程【站长吐血整理】

    maven或者gradle 项目记得引用第三方开放的sdk工具类,微信支付的,很全 微信开发者第三方sdk库资料:weixin-popular compile group: 'com.github.w ...

  8. java 微信请求超时_java – SQL服务器“超出锁定请求超时时间”..再次

    我在尝试扩展sql server SP中的锁定超时时遇到问题.无论我尝试什么,它都会继续投掷"锁定请求超时时间超出". 我正在使用 java jtds 1.2.2,c3p0 0.9 ...

  9. java 微信管理平台_java 微信物业管理系统

    微信设置:公众号设置,公众号图文素材,企业号设置,微信支付设置,支付接口代申请 数据中心:小区列表,楼宇管理,房屋管理,住户列表 收费管理:收费模板,抄表录入,交易管理,费用通知,收银台 内容设置:模 ...

最新文章

  1. 逆向-攻防世界-reverse-box
  2. 小米自然语言处理工程师招聘条件与自己的对应整理(第二次更新)
  3. jsp电子商务 购物车实现之一 设计篇
  4. VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:376 bugNr=1036521
  5. 获取已发布微信小游戏源码
  6. bzoj 4034: [HAOI2015]T2
  7. C++安装失败解决办法
  8. 小程序生命周期_微信小程序开发日记App生命周期
  9. java | (十六)XML、代理
  10. Raspberry Pi使用教程
  11. 《置身事内》读书笔记第一章 地方政府的权利与事务
  12. python:max函数
  13. 支持DoH的DNS服务器,谷歌公共DNS正式支持DoH加密 更安全并且不影响速度
  14. excel排名_表格技巧—如何在Excel中快速计算排名
  15. 如何解决Kodi的YouTube“配额超过”问题
  16. layui 弹出层回调获取弹出层数据
  17. UltraEdit-32 v14.10 简体中文版
  18. Silverlight开发MMORPG大型多人在线角色扮演游戏(团队项目)
  19. 实现模拟手机全键盘车牌号输入 jq+css
  20. Android 最简单 二维码去除白边的方式

热门文章

  1. linux下RTNETLINK answers: File exists的解决方案
  2. CentOS 7下mysqld服务启动失败终极解决方案
  3. eclipse安装svn服务器
  4. Shiro 综合实例
  5. python 判断文件夹是否存在 否则创建_10行Python代码自动清理电脑内重复文件,解放双手!...
  6. Android:学习路线总结,绝对干货
  7. linux能记录日志的终端,如何记录Linux终端下的操作日志
  8. 代码逻辑分析_致C++完美主义者:使用Visual Studio新工具分析你的代码
  9. python符号表_根据第一个字符分割列表-Python
  10. JQ实现王者荣耀手风琴效果