• 实现支付宝订单状态查询_大数据培训


    实现支付宝订单状态查询

    支付宝文档中的样例

    1、首先通过基本参数初始化AlipayClient,此处和支付模块部分相同,不再详述。

    2、业务参数

    业务参数就两个,选哪个都可以,其中out_trade_no是电商系统生成的,trade_no是支付宝回调后产生的。因为有可能一直就没收到支付宝的回调,也就没有trade_no,所以咱们这里使用out_trade_no。

    @Autowired
    AlipayClient alipayClient;

    public PaymentStatus checkAlipayPayment(PaymentInfo paymentInfo){

        System.out.println(开始主动检查支付状态,paymentInfo.toString() = ” + paymentInfo.toString());
        //先检查当前数据库是否已经变为“已支付状态”
        
    if(paymentInfo.getId()==null){
            System.out.println(“outTradeNo:”+paymentInfo.getOutTradeNo()  );
            paymentInfo = getPaymentInfo(paymentInfo);
        }
        if (paymentInfo.getPaymentStatus()== PaymentStatus.PAID){
            System.out.println(该单据已支付:”+paymentInfo.getOutTradeNo());
            return PaymentStatus.PAID;
        }

        //如果不是已支付,继续去查询alipay的接口
        
    System.out.println(“%% % % 查询alipay的接口”  );
        AlipayTradeQueryRequest alipayTradeQueryRequest=new AlipayTradeQueryRequest();
        alipayTradeQueryRequest.setBizContent(“{\”out_trade_no\”:\””+paymentInfo.getOutTradeNo()+“\”}”);
        AlipayTradeQueryResponse response=null;
        try {
            response = alipayClient.execute(alipayTradeQueryRequest);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }

     
        if(response.isSuccess()){
            String tradeStatus = response.getTradeStatus();

            if (“TRADE_SUCCESS”.equals(tradeStatus)){
                System.out.println(支付完成  ======================  ”    );
                //如果结果是支付成功 ,则更新支付状态
                
    PaymentInfo paymentInfo4Upt=new PaymentInfo();
                paymentInfo4Upt.setPaymentStatus(PaymentStatus.PAID);
                paymentInfo4Upt.setCallbackTime(new Date());
                paymentInfo4Upt.setCallbackContent(response.getBody());
                paymentInfo4Upt.setId(paymentInfo.getId());
                paymentInfoMapper.updateByPrimaryKeySelective(paymentInfo4Upt);

                // 然后发送通知给订单
                
    sendPaymentResult(paymentInfo,“success”);
                return PaymentStatus.PAID;
            }else{
                System.out.println(支付尚未完成 ?????????? ”    );
                return PaymentStatus.UNPAID;
            }
        }else{
            System.out.println(支付尚未完成 ?????????? ”    );
            return    PaymentStatus.UNPAID;
        }

    }

  • 相关阅读:
    HTTP请求数据、响应数据格式,Tomcat基本使用、IDEA中创建Maven Web项目、集成本地Tomcat
    Linux驱动开发中设备节点、虚拟节点、逻辑节点之间的区别与关系
    Vue之绑定样式和渲染、收集表单数据、过滤器
    Asp.Net 6.0 集成 AutoMapper 初入
    海康威视Java实习面试
    css详细笔记
    HALCON支持GPU加速的算子有哪些?
    从零开始做好个人记账
    验证计划文档模板
    【广州华锐互动】动物内脏3D模型素材库提供更加丰富的学习资源,提高教学效果
  • 原文地址:https://blog.csdn.net/zjjcchina/article/details/127648632