SpringBoot对接支付宝

  • 需要先注册账号

    到支付宝开发者平台创建网页支付应用

  • 启用公钥模式

    需要使用到appId和下面的两个秘钥


  • 写配置信息的代码

    1.引入依赖

            <dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-easysdk</artifactId>
    <version>2.2.0</version>
    </dependency>

    2.写配置

    alipay:
    appId: appid
    appPrivateKey: 应用私钥
    alipayPublicKey: 支付宝的公钥
    notifyUrl: 回调地址

    3.新建一个alipayConfig类

    import com.alipay.easysdk.factory.Factory;
    import com.alipay.easysdk.kernel.Config;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import javax.annotation.PostConstruct; @Data
    @Component
    //拿配置文件里面alipay开头的配置信息
    @ConfigurationProperties(prefix = "alipay")
    public class AliPayConfig {
    private String appId;
    private String appPrivateKey;
    private String alipayPublicKey;
    private String notifyUrl; @PostConstruct
    public void init() {
    // 设置参数(全局只需设置一次)
    Config config = new Config();
    config.protocol = "https";
    config.gatewayHost = "openapi.alipaydev.com";
    config.signType = "RSA2";
    config.appId = this.appId;
    config.merchantPrivateKey = this.appPrivateKey;
    config.alipayPublicKey = this.alipayPublicKey;
    config.notifyUrl = this.notifyUrl;
    Factory.setOptions(config);
    System.out.println("=======支付宝SDK初始化成功=======");
    }
    }

    4.写接口

        @GetMapping("/pay")
    public String pay(AliPay aliPay) {
    AlipayTradePagePayResponse response;
    try {
    // 发起API调用(以创建当面付收款二维码为例)
    response = Factory.Payment.Page()
    .pay(URLEncoder.encode(aliPay.getSubject(), "UTF-8"), aliPay.getTraceNo(),String.valueOf(aliPay.getTotalAmount()), "");
    } catch (Exception e) {
    System.err.println("调用遭遇异常,原因:" + e.getMessage());
    throw new RuntimeException(e.getMessage(), e);
    }
    return response.getBody();
    } //如果设置了拦截器 需要放行该接口

    5.设置回调接口

     @PostMapping("/notify")  // 注意这里必须是POST接口
    public String payNotify(HttpServletRequest request) throws Exception {
    if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
    System.out.println("=========支付宝异步回调========"); Map<String, String> params = new HashMap<>();
    Map<String, String[]> requestParams = request.getParameterMap();
    for (String name : requestParams.keySet()) {
    params.put(name, request.getParameter(name));
    // System.out.println(name + " = " + request.getParameter(name));
    }
    String tradeNo = params.get("out_trade_no");
    String gmtPayment = params.get("gmt_payment");
    String alipayTradeNo = params.get("trade_no");
    // 支付宝验签
    if (Factory.Payment.Common().verifyNotify(params)) {
    // 验签通过
    System.out.println("交易名称: " + params.get("subject"));
    System.out.println("交易状态: " + params.get("trade_status"));
    System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
    System.out.println("商户订单号: " + params.get("out_trade_no"));
    System.out.println("交易金额: " + params.get("total_amount"));
    System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
    System.out.println("买家付款时间: " + params.get("gmt_payment"));
    System.out.println("买家付款金额: " + params.get("buyer_pay_amount")); // 更新订单未已支付
    //ordersMapper.updateState(tradeNo, "已支付", gmtPayment, alipayTradeNo);
    }
    }
    return "success";
    }

springboot集成支付宝的支付(easy版)的更多相关文章

  1. springboot集成支付宝的支付(通用版)

    [1.引依赖] <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sd ...

  2. 集成支付宝钱包支付iOS SDK的方法与经验

    流程 摘自第一个文档<支付宝钱包支付接口开发包2.0标准版.pdf> 图中的“商户客户端”就是我们的iOS客户端需要做的事情: 调用支付宝支付接口 处理支付宝返回的支付结果 在调用支付宝支 ...

  3. 集成支付宝钱包支付ios SDK的方法和经验

    没想到,支付宝的SDK是我目前用过的所有第三方SDK中最难用的一个了. 下载 首先,你要想找到这个SDK,都得费点功夫.现在的SDK改名叫移动支付集成开发包了,下载页面在 这里 的 “请点此下载集成开 ...

  4. 集成支付宝钱包支付 iOS SDK 的方法与经验

    下载 首先,你要想找到这个SDK,都得费点功夫.现在的SDK改名叫移动支付集成开发包了,下载页面在 这里 (http://t.cn/8ksiklD)的 “请点此下载集成开发包(http://t.cn/ ...

  5. tp集成支付宝担保支付

    现在的网站功能越来越全乎了,很多网站都需要做支付功能,而且很多大平台都提供了各式各样的api来扩充自己的用户和开发者.话说,这种使用大平台的api来做支付,无论是从成本上还是从开发效率上都是很好的选择 ...

  6. android 集成支付宝app支付(原生态)-包括android前端与java后台

    本文讲解了 android开发的原生态app集成了支付宝支付, 还提供了java后台服务器处理支付宝支付的加密代码, app前端与java后台服务器使用json数据格式交互信息,java后台服务主要用 ...

  7. SpringBoot集成Mybatis(0配置注解版)

    Mybatis初期使用比较麻烦,需要各种配置文件.实体类.dao层映射关联.还有一大推其它配置.当然Mybatis也发现了这种弊端,初期开发了generator可以根据表结构自动生成实体类.配置文件和 ...

  8. springboot集成swagger实战(基础版)

    1. 前言说明 本文主要介绍springboot整合swagger的全过程,从开始的swagger到Knife4j的进阶之路:Knife4j是swagger-bootstarp-ui的升级版,包括一些 ...

  9. Android App集成支付宝

    原地址:http://blog.csdn.net/wenbingoon/article/details/7933078 手机的在线支付,被认为是2012年最看好的功能,我个人认为这也是移动互联网较传统 ...

随机推荐

  1. 获取Windows正在运行的窗口进程

    主要是获取Alt+Tab中展示的窗口 原理主要是获取窗口的样式来判断是否会在Alt+Tab中显示 具体代码如下 /// <summary> /// Alt+Tab 应用 /// </ ...

  2. DES|3DES|AES|RSA|DH | CA | SSL(HTTPS)

    1.对称密钥算法: 加解密速度块,算法使安全的,已知算法无法推出密钥.但是密钥的分发困难. DES:对称密钥算法,是一种块加密算法,只有一个密钥.加解密都是用一个密钥. 3DES:与DES一样,可以认 ...

  3. KDB_Database_Link 使用介绍

    kdb_database_link 是 KingbaseES 为了兼容oracle 语法而开发的跨数据库访问扩展,可用于访问KingbaseES, Postgresql , Oracle .以下分别介 ...

  4. KingbaseES R3 受限dba影响集群切换

    ​ 一.受限dba功能说明(参考自官方文档) 受限DBA 受限DBA可以对当前DBA的权限进行一定限制.当功能开启后DBA将不能更改以下对象: Table Database Function(by n ...

  5. csp每日习题

    欢迎加入:qq群号:1054587486 做题链接:https://csp.ccf.org.cn/csp/index.action?_access_code=1584494752035 点击模拟考试进 ...

  6. 面试突击83:什么情况会导致@Transactional事务失效?

    一个程序中不可能没有事务,而 Spring 中,事务的实现方式分为两种:编程式事务和声明式事务,又因为编程式事务实现相对麻烦,而声明式事务实现极其简单,所以在日常项目中,我们都会使用声明式事务 @Tr ...

  7. 【Java UI】HarmonyOS添加日历事件

    ​参考资料 CalendarDataHelper Events Reminders api讲解 添加权限 在config.json添加权限代码如下 "reqPermissions" ...

  8. Django 目录

    1 Python Web开发主流框架 2 Django 简介和版本介绍 3 Django 使用cmd 创建工程 4 Django 创建 APP和目录结构介绍 5 Django 使用VScode 创建工 ...

  9. Elasticsearch:inverted index,doc_values及source

    以后会用到的相关知识:索引中某些字段禁止搜索,排序等操作 当我们学习Elasticsearch时,经常会遇到如下的几个概念: Reverted index doc_values source? 这个几 ...

  10. Logstash: 如何创建可维护和可重用的Logstash管道