后台没有打印异步通知的信息

来源:7-17 微信支付完成页面跳转-1

qq_汁_0

2020-04-26

使用微信支付成功后后台没有打印异步通知的信息

@Override
public String asyncNotify(String notifyData) {
//1. 签名检验
PayResponse payResponse = bestPayService.asyncNotify(notifyData);
log.info(“异步通知 response={}”, payResponse);

    //2. 金额校验(从数据库查订单)
    //比较严重(正常情况下是不会发生的)发出告警:钉钉、短信
    PayInfo payInfo = payInfoMapper.selectByOrderNo(Long.parseLong(payResponse.getOrderId()));
    if (payInfo == null) {
        //告警
        throw new RuntimeException("通过orderNo查询到的结果是null");
    }
    //如果订单支付状态不是"已支付"
    if (!payInfo.getPlatformStatus().equals(OrderStatusEnum.SUCCESS.name())) {
        //Double类型比较大小,精度。1.00  1.0
        if (payInfo.getPayAmount().compareTo(BigDecimal.valueOf(payResponse.getOrderAmount())) != 0) {
            //告警
            throw new RuntimeException("异步通知中的金额和数据库里的不一致,orderNo=" + payResponse.getOrderId());
        }

        //3. 修改订单支付状态
        payInfo.setPlatformStatus(OrderStatusEnum.SUCCESS.name());
        payInfo.setPlatformNumber(payResponse.getOutTradeNo());
        payInfoMapper.updateByPrimaryKeySelective(payInfo);
    }

    if (payResponse.getPayPlatformEnum() == BestPayPlatformEnum.WX) {
        //4. 告诉微信不要再通知了
        return "<xml>\n" +
                "  <return_code><![CDATA[SUCCESS]]></return_code>\n" +
                "  <return_msg><![CDATA[OK]]></return_msg>\n" +
                "</xml>";
    }else if (payResponse.getPayPlatformEnum() == BestPayPlatformEnum.ALIPAY) {
        return "success";
    }

    throw new RuntimeException("异步通知中错误的支付平台");
}![图片描述](http://img.mukewang.com/szimg/5ea57a8509b89b6317070102.jpg)
写回答

1回答

廖师兄助理

2020-04-28

打断点追踪一下,还有可以打log日志看一下

0
0

实战支付+电商双系统 玩转Java技术栈

花一份课的价,收获:双系统实战+坐拥20K+粉的师兄指导,值~

2049 学习 · 1048 问题

查看课程