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()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |