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. SpringMVC 05: SpringMVC中携带数据的页面跳转

    SpringMVC默认的参数对象 SpringMVC默认的参数对象是指,不用再另行创建,相当于SpringMVC内置对象,可以直接声明并使用 默认的参数对象有:HttpServletRequest,H ...

  2. PostgreSQL 大对象导出报错问题分析

    1.前言 在处理用户问题过程遇到一个问题.用户通过pg_dump导出 bytea 对象时,当行的大小超过 1G时,会报错: [v8r6c5b41@dbhost01 ~]$ sys_dump -t t1 ...

  3. 安装docker-compose--翻译

    Install Docker Compose 译文 安装 Docker Compose 你可以在macOS.Windows.64-bit Linux上运行 Compose 前提条件 Docker Co ...

  4. Docker 入门指南

    Docker 入门指南 目录 基础概念 安装教程 基本操作 常用安装 构建操作 容器编排 壹.基础概念 什么是Docker? Docker是基于Go开发的应用容器引擎,属于 Linux 容器的一种封装 ...

  5. 【疑难杂症】关于用pydotplus生成iris.pdf报错问题

    在使用刘建平老师博客中DecisionTreeClassifier实例时,遇到报错:InvocationException: GraphViz's executables not found 源代码如 ...

  6. k8s中 资源配额 ResourceQuota

    文章转载自:https://www.kuboard.cn/learning/k8s-advanced/policy/lr.html 当多个用户(团队)共享一个节点数量有限的集群时,如何在多个用户(团队 ...

  7. 改变一个数组内元素的位置,不通过splice方法。

    这个数据 现在已经完成了,将本来在第一位的18代金券改到第31位,下面说一下怎么实现的. //currHotRightsTypeSorted这个是数据源头,legalRightsType这个是数据的分 ...

  8. DevExpress弹框、右键菜单、Grid的使用

    很重要!!!Dev为了区分winform的命名,会把一些新添加的属性放在Properties对象里!!找不到想要的属性,记得到里面找找哦! 一.下拉框 在这里假设我们的数据源是db.List(),在这 ...

  9. SQL通用语法和SQL分类

    SQL通用语法 1.SQL 语句可以单行或多行书写,以分号结尾 2.可使用空格和缩进来增强语句的可读性 3.MySQL 数据库的SQL语句不区分大小写,关键字建议使用大写 4.3种注释 单行注释: - ...

  10. PAT (Basic Level) Practice 1023 组个最小数 分数 20

    给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...