当前位置:   article > 正文

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

java微信退款


微信支付业务场景

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


提示:以下是本篇文章正文内容,下面案例仅供参考

一、注意事项

需要注意的事项有以下几点:

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

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

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

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

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

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

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

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

二、微信支付退款案例

以下案例仅供参考

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<Integer> rebackPay(String orderNo,BigDecimal amount){
    	Result<Integer> res = new Result<Integer>();
    	//微信支付-申请退款请求参数
		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;
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81

二、微信支付官方说明

在操作之前不明白的可以先看看官方说明:微信退款官方地址
在这里插入图片描述

总结

例如:以上案例为博主实际应用的代码案例,如果不懂如何接入微信支付的,可以多看几遍官方文档即可,没有什么难度指数**,注意:在接入微信支付之前要先注册微信支付商户号,不管是APP,JSAPI 或 小程序,NATIVE,H5 都一样方法,
如果要使用该文章,请注明转载处,请勿直接把原创文章发布到其他地方,感谢理解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/874088
推荐阅读
相关标签
  

闽ICP备14008679号