weixin-java-pay 微信退款

jdk1.8 maven3.8.1 weixin-java-pay4.2.0 spring-cloud Hoxton.SR8 spring-cloud-alibaba 2.2.3.RELEASE

前言

本文仅做记录,遇到其他接口使用问题参考[weixin-java](https://gitee.com/binary/weixin-java-pay-demo)官方文档


一、获取证书

二、配置支付yml文件

微服务项目需要在配置中心里配置一份

application.yam中配置wx.pay

代码如下(示例):

wx:
  pay:
    mp-app-id: wx1111111111
    app-app-id: wx1111111111
    mch-id: 111111111
    mch-key: 234lkjlhkh34hjhjkl45hk45hk34k
    key-path: D:/apiclient_cert.p12 # 你自己的p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
    notify-url: https://xx.com/etonkids.wonder.box.teacher.user/wonderBoxClassTeacher/refundCallback # 退款回调地址,必须是公网可访问的https请求地址,不能携带参数

三、编写配置类

四、Service层注入WxPayService调用退款

@Override
    @Transactional(rollbackFor = Exception.class)
    public synchronized Result refund(RefundDto applicationRecord) throws Exception {
          
   
    	// 你的业务代码
    	// 调用申请退款接口
        WxPayConfig config = wxPayService.getConfig();
        WxPayRefundRequest wxPayRefundRequest = WxPayRefundRequest.newBuilder()
                .outRefundNo(outRefundNo)
                .outTradeNo(String.valueOf(id))
                .refundFee(payAmount)
                .totalFee(amount)
                .notifyUrl(config.getNotifyUrl()).build();

        log.info(">>>>>wxPayRefundRequest={}", wxPayRefundRequest.toString());
        wxPayService.refundV2(wxPayRefundRequest);

        return Result.OK();
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public synchronized String refundCallback(String xmlData) throws Exception {
          
   
        // 回调函数中处理你的业务即可
        return WxPayNotifyResponse.success("SUCCESS");
    }

需要注意

经验分享 程序员 微信小程序 职场和发展