mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 20:28:44 +08:00 
			
		
		
		
	mall + pay:
1. bar 扫码支付成功后,额外返回 notify 2. notify 在支付回调时,增加幂等处理
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
			
		||||
package cn.iocoder.yudao.framework.pay.core.client.dto.order;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.notify.PayOrderNotifyRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderDisplayModeEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderStatusRespEnum;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -24,19 +24,15 @@ public class PayOrderUnifiedRespDTO {
 | 
			
		||||
    private String displayContent;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 支付状态
 | 
			
		||||
     * 同步的通知信息
 | 
			
		||||
     *
 | 
			
		||||
     * 枚举 {@link PayOrderStatusRespEnum} 类
 | 
			
		||||
     * 目前只有 bar 条码支付才会出现,它是支付发起时,直接返回是否支付成功的,而其它支付还是异步通知
 | 
			
		||||
     */
 | 
			
		||||
    private Integer status;
 | 
			
		||||
    private PayOrderNotifyRespDTO notify;
 | 
			
		||||
 | 
			
		||||
    public PayOrderUnifiedRespDTO(String displayMode, String displayContent) {
 | 
			
		||||
        this(displayMode, displayContent, PayOrderStatusRespEnum.WAITING.getStatus());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PayOrderUnifiedRespDTO(String displayMode, String displayContent, Integer status) {
 | 
			
		||||
        this.displayMode = displayMode;
 | 
			
		||||
        this.displayContent = displayContent;
 | 
			
		||||
        this.status = status;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,13 +5,13 @@ import cn.hutool.core.thread.ThreadUtil;
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.notify.PayOrderNotifyRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundUnifiedReqDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundUnifiedRespDTO;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.channel.PayChannelEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderDisplayModeEnum;
 | 
			
		||||
import cn.iocoder.yudao.framework.pay.core.enums.order.PayOrderStatusRespEnum;
 | 
			
		||||
import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
 | 
			
		||||
import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
 | 
			
		||||
import com.github.binarywang.wxpay.constant.WxPayConstants;
 | 
			
		||||
@@ -70,9 +70,15 @@ public class WxBarPayClient extends AbstractWxPayClient {
 | 
			
		||||
            try {
 | 
			
		||||
                WxPayMicropayResult response = client.micropay(request);
 | 
			
		||||
                // 支付成功(例如说,用户输入了密码)
 | 
			
		||||
                PayOrderNotifyRespDTO notify = PayOrderNotifyRespDTO.builder()
 | 
			
		||||
                        .orderExtensionNo(response.getOutTradeNo())
 | 
			
		||||
                        .channelOrderNo(response.getTransactionId())
 | 
			
		||||
                        .channelUserId(response.getOpenid())
 | 
			
		||||
                        .successTime(parseDateV2(response.getTimeEnd()))
 | 
			
		||||
                        .build();
 | 
			
		||||
                return new PayOrderUnifiedRespDTO(PayOrderDisplayModeEnum.BAR_CODE.getMode(),
 | 
			
		||||
                        JsonUtils.toJsonString(response),
 | 
			
		||||
                        PayOrderStatusRespEnum.SUCCESS.getStatus());
 | 
			
		||||
                        JsonUtils.toJsonString(response))
 | 
			
		||||
                        .setNotify(notify);
 | 
			
		||||
            } catch (WxPayException ex) {
 | 
			
		||||
                // 如果不满足这 3 种任一的,则直接抛出 WxPayException 异常,不仅需处理
 | 
			
		||||
                // 1. SYSTEMERROR:接口返回错误:请立即调用被扫订单结果查询API,查询当前订单状态,并根据订单的状态决定下一步的操作。
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user