设为首页 加入收藏

TOP

SpringBoot集成微信支付JSAPIV3保姆教程(五)
2023-09-23 15:44:42 】 浏览:294
Tags:SpringBoot 成微信 支付 JSAPIV3
com.wechat.pay.java.core.notification.RequestParam requestParam = new com.wechat.pay.java.core.notification.RequestParam.Builder() .serialNumber(serialNo) .nonce(nonceStr) .signature(signature) .timestamp(timestamp) .body(body) .build(); // 如果已经初始化了 RSAAutoCertificateConfig,可以直接使用 config // 初始化 NotificationParser NotificationParser parser = new NotificationParser(paySDK.getConfig()); // 验签、解密并转换成 Transaction Refund refund = parser.parse(requestParam, Refund.class); //记录日志信息 Status state = refund.getStatus(); String orderID = refund.getOutTradeNo(); String backID = refund.getOutRefundNo(); System.out.println("订单ID:" + orderID); System.out.println("退款ID:" + backID); if (state == Status.PROCESSING) { //TODO------ //根据自己的需求处理相应的业务逻辑,异步 //通知微信回调成功 response.getWriter().write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>"); System.out.println("退款处理中"); } else if (state == Status.SUCCESS) { //TODO------ //根据自己的需求处理相应的业务逻辑,异步 //通知微信回调成功 response.getWriter().write("<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>"); System.out.println("退款完成"); } else { System.out.println("微信回调失败,JsapiPayController.Refund:" + state.toString()); //通知微信回调失败 response.getWriter().write("<xml><return_code><![CDATA[FAIL]]></return_code></xml>"); } } catch (Exception e) { e.printStackTrace(); } finally { is.close(); } }

退款查询

除了退款回调的异步通知,我们还需要通过定时任务主动去查询退款信息来保证业务订单退款状态的正确

 @PostMapping("/back_check")
    public Object back_check(@RequestBody Map<String, Object> params) throws Exception {
        String backID = String.valueOf(params.get("backID"));
        Refund refund = paySDK.getRefundOrderInfo(backID);
        if (refund.getStatus() == Status.SUCCESS) {
            return Result.okResult().add("obj", refund);
        }if (refund.getStatus() == Status.PROCESSING) {
            return Result.okResult().setCode(2).setMsg("退款处理中").add("obj", refund);
        } else {
            return Result.errorResult().add("obj", refund);
        }
    }
    //获取订单退款结果信息
    public Refund getRefundOrderInfo(String backID){
        initBackConfig();
        QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest();
        request.setOutRefundNo(backID);
        return backService.queryByOutRefundNo(request);
    }
首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring Cloud Gateway:新一代微.. 下一篇SpringBoot-Learning系列之Kafka..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目