package com.doumee.api.web; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.doumee.core.wx.WxMiniConfig; import com.doumee.service.business.GoodsorderService; import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; import com.github.binarywang.wxpay.config.WxPayConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; /** * Created by IntelliJ IDEA. * 支付回调 * @Author : Rk * @create 2023/2/23 13:49 */ @Slf4j @RestController @CrossOrigin public class PaymentCallback { @Autowired private GoodsorderService goodsorderService; /** * 【微信支付】异步通知 * * @param xmlResult * @return */ @PostMapping("/api/wxPayNotify") public String wxPay_notify(@RequestBody String xmlResult) { log.info(xmlResult); if (StringUtils.isBlank(xmlResult)) return null; try { WxPayOrderNotifyResult result = WxMiniConfig.wxPayService.parseOrderNotifyResult(xmlResult); //自定义订单号 String outTradeNo = result.getOutTradeNo(); //微信订单号 String paymentNo = result.getTransactionId(); if ("SUCCESS".equals(result.getReturnCode())) { // 支付成功 switch (result.getAttach()) { //支付订单回调 case "createGoodsOrder": { goodsorderService.payNotify(outTradeNo,paymentNo); break; } } } else { // 支付失败 switch (result.getAttach()) { case "createGoodsOrder": { break; } } return WxPayNotifyResponse.fail(result.getReturnMsg()); } return WxPayNotifyResponse.success("处理成功!"); } catch (Exception e) { e.printStackTrace(); log.error("微信回调结果异常,异常原因{}", e.getLocalizedMessage()); return WxPayNotifyResponse.fail(e.getMessage()); } } }