xiaoyong931011
2022-08-23 4f30cf515e738340a792b03dcd0baf2dfed8958c
20220822
1 files added
1 files modified
73 ■■■■■ changed files
src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java 37 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/model/UniPayCallBackDto.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
@@ -6,9 +6,11 @@
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.pay.model.UniPayCallBackDto;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -35,39 +37,16 @@
    private AgentProducer agentProducer;
    @GetMapping(value = "/unipayCallBack")
    public String unipayCallBack(HttpServletRequest request){
    public String unipayCallBack(HttpServletRequest request, UniPayCallBackDto uniPayCallBackDto){
        log.info("进入汇聚支付回调");
        String orderNo = "";
        BigDecimal orderAmount = BigDecimal.ZERO;
        String payTradeNo = "";
        String callBackState = "";
        String requestURI = request.getRequestURI();
        log.info("进入汇聚支付回调"+requestURI);
        log.info("进入汇聚支付回调"+ JSONUtil.parseObj(uniPayCallBackDto));
        String orderNo = uniPayCallBackDto.getR2_OrderNo();
        BigDecimal orderAmount = new BigDecimal(uniPayCallBackDto.getR3_Amount());
        String callBackState = uniPayCallBackDto.getR6_Status();
        String payTradeNo = uniPayCallBackDto.getR7_TrxNo();
//            String output = java.net.URLDecoder.decode(requestURI, "UTF-8");
        String params = StrUtil.subAfter(requestURI, "?", true);
        System.out.println(params);
        List<String> paramStrList = StrUtil.splitTrim(params, "&");
        if(CollUtil.isNotEmpty(paramStrList)){
            for(String paramStr :paramStrList){
                boolean r2orderNo = paramStr.startsWith("r2_OrderNo");
                if(r2orderNo){
                    orderNo = StrUtil.subAfter(paramStr, "=", true);
                }
                boolean r3Amount = paramStr.startsWith("r3_Amount");
                if(r3Amount){
                    orderAmount = new BigDecimal(StrUtil.subAfter(paramStr, "=", true));
                }
                boolean r6Status = paramStr.startsWith("r6_Status");
                if(r6Status){
                    callBackState = StrUtil.subAfter(paramStr, "=", true);
                }
                boolean r7TrxNo = paramStr.startsWith("r7_TrxNo");
                if(r7TrxNo){
                    payTradeNo = StrUtil.subAfter(paramStr, "=", true);
                }
            }
        }
        log.info("进入汇聚支付回调"+orderNo+";"+orderAmount+";"+payTradeNo+";"+callBackState);
        if("100".equals(callBackState) && StrUtil.isNotBlank(orderNo)){
src/main/java/cc/mrbird/febs/pay/model/UniPayCallBackDto.java
New file
@@ -0,0 +1,36 @@
package cc.mrbird.febs.pay.model;
import lombok.Data;
/**
 * https://www.baidu.com?
 * r1_MerchantNo=888000000000000
 * &r2_OrderNo=2020100000000000000
 * &r3_Amount=10.00
 * &r4_Cur=1
 * &r5_Mp=goods
 * &r6_Status=100
 * &r7_TrxNo=100220100000000000
 * &r8_BankOrderNo=100220100000000000
 * &r9_BankTrxNo=4200000000202000000000000000
 * &ra_PayTime=2022-08-11%2B16%253A14%253A39
 * &rb_DealTime=2022-08-11%2B16%253A14%253A39
 * &rc_BankCode=WEIXI_GZH
 * &hmac=14c3819b5cc7bb80635901934f76c7a4
 */
@Data
public class UniPayCallBackDto {
    private String r1_MerchantNo;
    private String r2_OrderNo;
    private String r3_Amount;
    private String r4_Cur;
    private String r5_Mp;
    private String r6_Status;
    private String r7_TrxNo;
    private String r8_BankOrderNo;
    private String r9_BankTrxNo;
    private String ra_PayTime;
    private String rb_DealTime;
    private String rc_BankCode;
    private String hmac;
}