Java微信支付之关闭订单

本文实例为大家分享了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; 

/**
 * 关闭订单返回参数(带<![CDATA[]]>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
    // 返回<![CDATA[SUCCESS]]>格式的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;
  }
} 

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

(0)

相关推荐

  • java外卖订餐系统小项目

    本文实例为大家分享了java外卖订餐系统的具体代码,供大家参考,具体内容如下 执行结果: 通过选择功能序号,执行响应的功能: 代码实现: package 外卖订餐系统; /* * 代码优点,使用 循环: * 显示菜单, * 根据用户选择的数字执行相应功能(功能实现:do..while循环.) */ import java.util.Scanner; public class OrderingMsg { public static void main(String[] args) { //数据主题

  • Java实现电影院订票系统代码

    程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势...但是由于时间原因,小编并未在代码中添加可视化图形界面,有兴趣的朋友可自行添加. 可参阅:Java图形化界面设计之容器(JFrame)详解 演示结果: 下面是具体实现代码: public class Test { public static void main(String[] args) { BookTicket bookTicket = new BookTicket(); bookTicket.init()

  • Android仿外卖购物车功能

    先看看效果图: 知识点分析 效果图来看不复杂内容并没多少,值得介绍一下的知识点也就下面几个吧 - 列表标题悬停 - 左右列表滑动时联动 - 添加商品时的抛物线动画 - 底部弹出购物车清单 - 数据的同步 另外就是实现效果的时候可能会遇到的几个坑... 布局很简单直接进入代码 1:列表标题悬停 现在做项目列表什么的基本抛弃了ListView改用RecyclerView,上篇博客中的标题悬停也是使用了一个RecyclerView的开源项目sticky-headers-recyclerview,不过写

  • Android自定义StepView仿外卖配送进度

    本文实例为大家分享了Android自定义StepView配送进度展示的具体代码,供大家参考,具体内容如下 效果图 使用 可在layout文件下设置以下属性. <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="StepView"> <attr name="step_size" forma

  • Android仿百度外卖自定义下拉刷新效果

    现如今的APP各式各样,同样也带来了各种需求,一个下拉刷新都能玩出花样了,前两天订饭的时候不经意间看到了"百度外卖"的下拉刷新,今天的主题就是它–自定义下拉刷新动画. 看一下实现效果吧: 动画 我们先来看看Android中的动画吧: Android中的动画分为三种: Tween动画,这一类的动画提供了旋转.平移.缩放等效果. Alpha – 淡入淡出 Scale – 缩放效果 Roate – 旋转效果 Translate – 平移效果 Frame动画(帧动画),这一类动画可以创建一个D

  • Java微信支付之关闭订单

    本文实例为大家分享了java微信支付之关闭订单的具体代码,供大家参考,具体内容如下 官方文档 一.应用场景 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟. 二.接口地址 https://api.mch.weixin.qq.com/pay/closeorder 三.请求参数 只能根据自己商户系统的订单号关闭 package co

  • java微信支付功能实现源码

    提示:仅微信支付功能模块类,可供参考,可点赞 一.java后台实现源码 package cn.xydx.crowdfunding.controller; import cn.xydx.crowdfunding.util.HttpRequest; import cn.xydx.crowdfunding.util.WXPayUtil; import org.json.JSONObject; import org.springframework.stereotype.Controller; impor

  • Java微信支付之服务号支付代码示例

    Java微信支付之服务号支付实现,网上的java微信支付sdk和Demo基本上是水的,看着头疼所以我决心自己开始写Java微信支付之公众号支付,多的不说见下面源码,为了方便使用我分别用了两个Servlet,一个是统一下单UnifiedorderServlet,一个是支付回调PayCallBackServlet,你们可以自己封装. 一是统一下单UnifiedorderServlet: import java.io.BufferedReader; import java.io.IOException

  • Java微信支付之公众号支付、扫码支付实例

    微信支付现在已经变得越来越流行了,随之也出现了很多以可以快速接入微信支付为噱头的产品,不过方便之余也使得我们做东西慢慢依赖第三方,丧失了独立思考的能力,这次打算分享下我之前开发过的微信支付. 一 .H5公众号支付 要点:正确获取openId以及统一下单接口,正确处理支付结果通知,正确配置支付授权目录 H5的支付方式是使用较为广泛的方式,这种支付方式主要用于微信内自定义菜单的网页,依赖手机上安装的微信客户端,高版本的微信才支持微信支付,下面按我的流程注意说明 1  编写用于支付的页面,由于是测试用

  • Java微信支付-微信红包

    微信红包的使用已经很广泛,本篇文章介绍了微信发红包的实例,需要有认证的公众号,且开通了微信支付,商户平台且开通了现金红包的权限即可. https://pay.weixin.qq.com商户登陆地址.选择查看营销中心的现金红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 现金红包的官网文档说明 先看几个图 简单的测试.前提需要你去商户平台先充值.不支持预支付.本文只是总结微信现金红包接口的调用与

  • java微信支付接入流程详解

    背景 由于项目是采用java编写的,微信包括微信支付大都是php相关,于是微信支付官方文档对java的支持就不是很友好,在网上找了很多文章,基本上没有一篇是真正跑的通的,经过一番整理,先将java接入微信支付详细流程总结出来以便后续使用. 步骤一 准备阶段:已认证微信号,且通过微信支付认证,这个可以看微信文档,很详细,这里就不再重复. 步骤二 配置授权目录,官方推荐使用https类型的url,不知道http能不能行,个人也推荐使用https的保证不会错. 配置授权域名 步骤三 微信支付二次开发所

  • Springboot整合微信支付(订单过期取消及商户主动查单)

    目录 一:问题引入 二:处理流程 三:代码实现 一:问题引入 前面讲到用户支付完成之后微信支付服务器会发送回调通知给商户,商户要能够正常处理这个回调通知并返回正确的状态码给微信支付后台服务器,不然微信支付后台服务器就会在一段时间之内重复发送回调通知给商户.具体流程见下图: 那么这时候问题就来了,微信后台发送回调通知次数也是有限制的,而且,微信支付开发文档中这样说到:对后台通知交互时,如果微信收到商户的应答不符合规范或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成

  • java微信公众号支付开发之现金红包

    我们先来看看公众号发放现金红包的效果: 需要调用商户平台的接口,接口发放规则如下: 1.发送频率限制--默认1800/min 2.发送个数上限--按照默认1800/min算 3.金额上限--根据传入场景id不同默认上限不同,可以在商户平台产品设置进行设置和申请,最大不大于4999元/个 4.其他的"量"上的限制还有哪些?--用户当天的领取上限次数,默认是10 5.如果量上满足不了我们的需求,如何提高各个上限?--金额上限和用户当天领取次数上限可以在商户平台进行设置 注意-红包金额大于2

  • Java后台实现微信支付和微信退款

    微信支付流程 都是我自己工作中开发的,亲测可用,不喜勿喷. controller中我是这么写的,你们需要根据自己的业务需求改动.ResponseBean是我自己封装的,你们可以改成你们想要的形式. /** * 微信统一下单接口 * @return */ @RequestMapping(value = "/doUnifiedOrder", method = RequestMethod.POST) public ResponseBean doUnifiedOrder(@RequestBod

  • 一篇文章带你入门Springboot整合微信登录与微信支付(附源码)

    0. 前期准备 在使用微信支付前,默认小伙伴已经具备以下技能: 熟练使用springboot(SSM) + Mybatis(plus)/JPA + HttpClient + mysql5.x 了解JWT 权限校验 阅读过微信开放平台微信支付与微信登录相关文档,可以简单看懂时序图 有微信开放平台开发者资质认证账户,具备开通微信支付(如果不具备的小伙伴可以找身边有的人借一下) 1. 微信扫码登录 1.1 微信授权一键登录功能介绍 简介:登录方式优缺点和微信授权一键登录功能介绍 # 1.手机号或者邮箱

随机推荐