java对接支付宝支付演示

现在有不少的项目都需要对接支付,这里主要是进行讲解对接支付宝H5支付

废话不多说 上代码

引入支付宝官方的sdk

 <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-easysdk</artifactId>
            <version>2.2.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.10.124.ALL</version>
        </dependency>

编写调用支付的方法

 @RequestMapping("/test")
    public void doPost(HttpServletRequest httpRequest,
                       HttpServletResponse httpResponse) throws ServletException, IOException {

        //商户号
        String APP_ID="";
        //私钥
        String APP_PRIVATE_KEY="";
        //编码
        String CHARSET="UTF-8";
        //公钥
        String ALIPAY_PUBLIC_KEY="";
        //我是沙箱环境 所有请求地址是沙箱版
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayClient
        AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request
        //这里主要是设置回调 也就是支付成功之后你要做什么操作的地址
        alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");
        alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址
        /**
         * @description:
         * @author: hwk
         * @date: 2022/6/14 16:34
         * @param: out_trade_no 订单编号
         * total_amount 付款金额
         * subject 商品名称
         * product_code 支付方式 如手机网站 pc网站 APP支付等
         **/
       JSONObject jsonObject = new JSONObject();
        jsonObject.put("out_trade_no", "264484811515156");
        jsonObject.put("total_amount", "66");
        jsonObject.put("subject", "测试支付");
        jsonObject.put("product_code", "QUICK_WAP_WAY");
        alipayRequest.setBizContent(jsonObject.toJSONString());
        String form="";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody();
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        //因为我不会写前端 所以直接输出测试 如果在正式环境中 建议直接return 返回的from表单
        httpResponse.setContentType("text/html;charset="   CHARSET);
        httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
        httpResponse.getWriter().flush();
        httpResponse.getWriter().close();
    }
    //支付回调
    @RequestMapping("/test1")
    public void aliPayNotify() {
            Map<String, String> params = getAllRequestParam(request);
            String tradeStatus = params.get("trade_status");
            if ("TRADE_SUCCESS".equals(tradeStatus)) {
                System.out.println("支付成功");
            }else {
                System.out.println("支付失败");
            }
    }


    private Map<String, String> getAllRequestParam(final HttpServletRequest request) {
        Map<String, String> res = new HashMap<>(8);
        Enumeration<?> temp = request.getParameterNames();
        while (temp.hasMoreElements()) {
            String en = (String) temp.nextElement();
            String value = request.getParameter(en);
            res.put(en, value);
        }
        return res;
    }

入参正式支付的时候 可以用string json等接收 我这里只是演示

成功演示图

讲解一下实际支付的时候所需要的参数吧

除去appid 公钥 私钥什么的

你正常支付所需要的参数无非 就是商品的id(主要是用于根据商品id查询商品的名称价格等后续调用支付的时候需要)、购买人
然后查询到商品的详情 set到对应的参数里面 去调用支付宝sdk 来生成from表单

你们可以在回调里面进行支付成功之后的一些操作

比如说:购买的是会员 然后在支付成功之后去给他进行开通会员或者续费会员

有一点要提醒你们 发起支付前创建的订单一定要是未支付 在回调里面判断用户是否成功

如果有用户主动查询是否支付成功的操作 建议根据订单号先去数据库查询是否等于支付成功 如果不等于去官方给的接口去查是否支付成功 这样做的好处就是有的时候回调慢了一点 用户主动去查询如果是支付成功不会造成返回支付失败

总结

到此这篇关于java对接支付宝支付项目的文章就介绍到这了,更多相关java对接支付宝支付内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

java对接支付宝支付项目的实战记录的更多相关文章

  1. iOS:从哪里开始使用AliPay集成?

    key=236698_261849&type=info下载2.开发一个网页在网上支付,这不是我们的工作…

  2. swift版支付宝解锁仿造

    https://github.com/csjlengxiang/Swift-GestureUnlock

  3. swift2.0 造支付宝支付按钮

    代码在Github上欢迎大家Star类似支付宝支付按钮效果如下

  4. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  7. Java实现世界上最快的排序算法Timsort的示例代码

    Timsort 是一个混合、稳定的排序算法,简单来说就是归并排序和二分插入排序算法的混合体,号称世界上最好的排序算法。本文将详解Timsort算法是定义与实现,需要的可以参考一下

  8. Java日期工具类的封装详解

    在日常的开发中,我们难免会对日期格式化,对日期进行计算,对日期进行校验,为了避免重复写这些琐碎的逻辑,我这里封装了一个日期工具类,方便以后使用,直接复制代码到项目中即可使用,需要的可以参考一下

  9. Java设计模式之模板方法模式Template Method Pattern详解

    在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式

  10. Java 中 Class Path 和 Package的使用详解

    这篇文章主要介绍了Java 中 Class Path和Package的使用详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部