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. 记录一次数据库CPU被打满的排查过程

    1 前言 近期随着数据量的增长,数据库CPU使用率100%报警频繁起来.第一个想到的就是慢Sql,我们对未合理运用索引的表加入索引后,问题依然没有得到解决,深入排查时,发现在 order by id ...

  2. Job And Schedule (V8R6C3)

    KingbaseES 数据库提供了 kdb_schedule 扩展,使得用户能通过类似oracle job 的方式进行job调用.kdb_schedule 提供了三个Schema :dbms_job ...

  3. Java SE 四大内部类

    内部类 1.成员内部类 调用成员内部类 //在外面的类的最后,写一个方法,调用成员内部类(创建对象,在访问) class Outer08{ class Inner08{ //成员内部类 public ...

  4. ProxySQL查看所有的全局变量及更新操作

    mysql> select * from global_variables; +--------------------------------------------------------- ...

  5. 不能获取到镜像,ImagePullBackoff或者Pending

    Pending 应用长时间处于 Pending 状态时,也可以按照这个办法查看镜像的下载进度. 安装 Kubernetes 过程中,或者向 Kubernetes 部署应用的过程中,有可能会碰到 Ima ...

  6. 14. Fluentd输出插件:out_forward用法详解

    out_forward是一个带缓存的输出插件,用于向其他节点转发日志事件,并支持转发节点之间的负载均衡和自动故障切换. out_forward支持至多一次和至少一次传输模式,默认为至多一次. out_ ...

  7. 利用msg_msg实现任意地址读写

    利用msg_msg实现任意地址读写 msgsnd和msgrcv的源码分析 内核通过msgsnd和msgrcv来进行IPC通信.内核消息分为两个部分,一个是消息头msg_msg(0x30),以及后面跟着 ...

  8. 代码随想录第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    2022/09/22 第二天 第一题 这题我就直接平方后排序了,很无脑但很快乐啊(官方题解是双指针 第二题 滑动窗口的问题,本来我也是直接暴力求解发现在leetCode上超时,看了官方题解,也是第一次 ...

  9. Sentinel 介绍与下载使用

    sentinel 前方参考 计算QPS-Sentinel限流算法 https://www.cnblogs.com/yizhiamumu/p/16819497.html Sentinel 介绍与下载使用 ...

  10. LcdTools如何实现PX01读取SD中BIN文件并通过端口发出去

    在实际应用中我们会碰到需要下载很大容量固件,比如TP固件几百K大小BIN文件,这种情况下用LcdTools写初始化代码的方式实现就不大现实:此时我们可以通过PX01 SD来实现. 首先,把需要操作的B ...