• 微信支付——微信退款实战教程(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 都一样方法,
    如果要使用该文章,请注明转载处,请勿直接把原创文章发布到其他地方,感谢理解。

  • 相关阅读:
    如何编写高质量代码
    Windows 11 有望支持苹果 M1 Mac?微软和高通的秘密协议即将到期
    【无标题】
    深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用
    [LeetCode解题报告] 241. 为运算表达式设计优先级
    【JavaWeb】01_Tomcat、Servlet、Thymeleaf
    libpcap之零拷贝mmap
    [Leetcode] 0088. 合并两个有序数组
    【Linux】git
    maven如何手动添加jar包到本地仓库
  • 原文地址:https://blog.csdn.net/weixin_45731661/article/details/127573299