支付宝回调之后修改账单的状态

//这个是回调地址之后更新一些订单状态的方法

    public ServerResponse aliCallback(Map<String,String> params){
        //订单号
       Long orderNo = Long.parseLong(params.get("out_trade_no"));
        //支付宝的交易号
        String tradeNo = params.get("trade_no");
        //支付宝的交易状态
        String tradeStatus = params.get("trade_status");
        //在这个方法里面查询一下,看一下这个订单号码是否存在
        Order order = orderMapper.selectByOrderNo(orderNo);
        if(order == null){
            return ServerResponse.createByErrorMessage("非快乐慕商城的订单,回调忽略");
        }
        //在这里调用枚举类,判断订单是否已经支付
        if(order.getStatus() >= Const.OrderStatusEnum.PAID.getCode()){
            return ServerResponse.createBySuccess("支付宝重复调用");
        }
        //这里调用的是支付宝官方的枚举
        //“TRADE_STATUS_TRADE_SUCCESS”是交易完成的意思
        if(Const.AlipayCallback.TRADE_STATUS_TRADE_SUCCESS.equals(tradeStatus)){
            //记录交易的时间,这个字符串是固定的
            order.setPaymentTime(DateTimeUtil.strToDate(params.get("gmt_payment")));
            order.setStatus(Const.OrderStatusEnum.PAID.getCode());
            orderMapper.updateByPrimaryKeySelective(order);
            //把订单状态改成已付款
        }

        PayInfo payInfo = new PayInfo();
        payInfo.setUserId(order.getUserId());
        payInfo.setOrderNo(order.getOrderNo());
        payInfo.setPayPlatform(Const.PayPlatformEnum.ALIPAY.getCode());
        payInfo.setPlatformNumber(tradeNo);
        payInfo.setPlatformStatus(tradeStatus);

        payInfoMapper.insert(payInfo);

        return ServerResponse.createBySuccess();
    }

如果你感觉本文对你有帮助,欢迎进群一起探讨交流:点我加群

posted @ 2017-09-02 17:20  随意随性  阅读(3048)  评论(0编辑  收藏  举报