微信支付退款–实战教程(Java版)

支付业务场景

当交易发生之后一年内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付金额退还给买家,微信支付将在收到退款请求并且验证成功之后,将支付款按原路退还至买家账号上。

需要注意的事项:

1、交易时间超过一年的订单无法提交退款

2、微信支付退款支持单笔交易分多次退款(不超50次),多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。申请退款总金额不能超过订单金额。 一笔退款失败后重新提交,请不要更换退款单号,请使用原商户退款单号

3、错误或无效请求频率限制:6qps,即每秒钟异常或错误的退款申请请求不超过6次

4、每个支付订单的部分退款次数不能超过50次

5、如果同一个用户有多笔退款,建议分不同批次进行退款,避免并发退款导致退款失败

6、申请退款接口的返回仅代表业务的受理情况,具体退款是否成功,需要通过退款查询接口获取结果

7、一个月之前的订单申请退款频率限制为:5000/min

8、同一笔订单多次退款的请求需相隔1分钟

二、微信支付退款案例
以下案例仅供参考

代码如下(示例):

package com.cy.xgsm.controller;

import java.math.BigDecimal;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.cy.xgsm.common.Result;
import com.github.binarywang.wxpay.bean.request.WxPayRefundV3Request;
import com.github.binarywang.wxpay.bean.result.WxPayRefundV3Result;
import com.github.binarywang.wxpay.service.WxPayService;

/**
*
* @author Dylan
*
*/
@RestController
public class WxPayController {

@Autowired
@Qualifier(“wxPayService”)
private WxPayService wxPayService;

/**
* 申请退款
* @param orderNo 充值单号
* @param amount 退款金额
*/
@GetMapping(“/refundV3/nativePay”)
@ResponseBody
public Result rebackPay(String orderNo,BigDecimal amount){
Result res = new Result();
//微信支付-申请退款请求参数
WxPayRefundV3Request request = new WxPayRefundV3Request();
WxPayRefundV3Request.Amount am = new WxPayRefundV3Request.Amount();
am.setTotal(amount.multiply(new BigDecimal(100)).intValue());//原订单金额
//退款币种,符合ISO 4217标准的三位字母代码,目前只支持人民币:CNY。
am.setCurrency(“CNY”);
//退款金额 注意:退款金额,单位为分,只能为整数,不能超过原订单支付金额。
am.setRefund(amount.multiply(new BigDecimal(100)).intValue());
//金额信息
request.setAmount(am);
//transaction_id:微信支付订单号
request.setTransactionId(orderNo);
//商户订单号
request.setOutRefundNo(“return_”+orderNo);
WxPayRefundV3Result result;
try {
//调用微信V3退款API
result = wxPayService.refundV3(request);
String status = result.getStatus();
switch (status) {
case “SUCCESS”:
res.success(“退款成功”);
break;
case “CLOSED”:
res.success(“退款关闭”);
break;
case “PROCESSING”:
res.success(“退款处理中”);
break;
case “ABNORMAL”:
res.success(“退款异常”);
break;

default:
res.error(“受理失败”);
break;
}
res.setAtt(result);
} catch (Exception e) {
res.error(“申请退款失败,”+e.getMessage());
}
return res;
}

}

微信支付退款–实战教程(Java版)
二、官方说明

在操作之前不明白的可以先看看官方说明:微信退款官方地址

总结:例如:以上案例为博主实际应用的代码案例,如果不懂如何接入微信支付的,可以多看几遍官方文档即可,没有什么难度指数**,注意:在接入微信支付之前要先注册微信支付商户号,不管是APP,JSAPI 或 小程序,NATIVE,H5 都一样方法,

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/115359.html<

(1)
管理的头像管理
上一篇2025-02-18 01:57
下一篇 2025-02-18 01:58

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注