注意: 以下操作是支付宝沙箱环境,并非实际线上环境。

一、支付宝准备工作

1.登陆支付宝开发者中心(没有登入的直接用支付宝登入)

https://openhome.alipay.com/

2. 进入研发服务

3. 点击设置RSA2(密钥)注:这个APPID待会项目会用到

4.点击使用支付宝密钥生成器

5.点击开发者助手简介,我们在这里面生成密钥

6.点击web在线加密生成密钥,没必要下载

7.点击生成密钥(注:这个应用私钥项目中会用到)

8.我们把上面的应用公钥复制到沙箱应用中(下面红框中),点击保存设置,这时候就会生成支付宝公钥(注:这个支付宝公钥项目中会用到)

二、开始搭建项目

1.使用idea搭建快速搭建springboot项目,项目结构如下:

2.支付界面

3.添加pom
     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 支付SDK--><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.9.9</version></dependency>
4.配置yml
app:#appIdappId: #上面注 有提到appId#商户私钥privateKey: #上面注 有提到就是应用私钥#支付宝公钥publicKey: #上面注 有提到就是支付宝公钥#服务器异步通知页面路径,需要公网能访问到notifyUrl: http://localhost:8080/app/success#服务器同步通知页面路径,需要公网能访问到returnUrl: http://localhost:8080/app/success#签名方式signType: RSA2#字符编码格式charset: utf-8#支付宝网关gatewayUrl: https://openapi.alipaydev.com/gateway.do
5.新建bean包主要放实体类,创建AlipayApp类读取yml配置信息
@Data
@Component
@ConfigurationProperties(prefix = "app")
public class AlipayApp {/*** appId*/private String appId;/*** 商户私钥*/private String privateKey;/*** 支付宝公钥*/private String publicKey;/*** 服务器异步通知页面路径,需要公网能访问到*/private String notifyUrl;/*** 服务器同步通知页面路径,需要公网能访问到*/private String returnUrl;/*** 签名方式*/private String signType;/*** 字符编码格式*/private String charset;/*** 支付宝网关*/private String gatewayUrl;
}
6.在bean包下创建订单实体类AliPayBean
@Data
public class AliPayBean {/*** 商户订单号*/private String out_trade_no;/*** 订单名称*/private String subject;/*** 付款金额*/private String total_amount;/*** 商品描述*/private String body;/*** 超时时间参数*/private String timeout_express = "10m";/*** 产品编号*/private String product_code = "FAST_INSTANT_TRADE_PAY";
}
7.新建一个component包,创建Alipay,集成支付接口
@Component
public class Alipay {@Autowiredprivate AlipayApp app;public String pay(AliPayBean aliPayBean) throws AlipayApiException {//1.初始化AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(app.getGatewayUrl(),app.getAppId(),app.getPrivateKey(),"json",app.getCharset(),app.getPublicKey(),app.getSignType());//2.设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(app.getReturnUrl());alipayRequest.setNotifyUrl(app.getNotifyUrl());alipayRequest.setBizContent(JSON.toJSONString(aliPayBean));//3.请求支付宝进行付款,并获取支付结果String result = alipayClient.pageExecute(alipayRequest).getBody();//4.返回付款结果return result;}
}
8.创建service包,编写支付接口PayService
public interface PayService {String aliPay(AliPayBean aliPayBean) throws AlipayApiException;
}
9.在创建service包下创建impl包,实现支付接口PayServiceImpl
@Service
public class PayServiceImpl implements PayService {@Autowiredprivate Alipay alipay;@Overridepublic String aliPay(AliPayBean aliPayBean) throws AlipayApiException {return alipay.pay(aliPayBean);}
}
10.创建controller包,创建OrderController订单控制层接口
@RestController
@RequestMapping(value = "/app/")
public class OrderController {@Autowiredprivate PayService payService;@RequestMapping(value = "aliPay")public String alipay(String outTradeNo, String subject, String totalAmount, String body) throws AlipayApiException {AliPayBean alipayBean = new AliPayBean();alipayBean.setOut_trade_no(outTradeNo);alipayBean.setSubject(subject);alipayBean.setTotal_amount(totalAmount);alipayBean.setBody(body);return payService.aliPay(alipayBean);}@RequestMapping(value = "success")public void success(){System.out.println("支付成功!");}
}
11.在static包下编写支付页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="/app/aliPay" method="post">订单号:<input type="text" name="outTradeNo" required><br/>订单名称:<input type="text" name="subject" required><br/>付款金额:<input type="text" name="totalAmount" required><br/>商品描述:<input type="text" name="body"><br/><input type="submit" value="下单"> <input type="reset" value="重置"></form>
</body>
</html>
12.编写PayCoinController来跳转支付界面
@Controller
@RequestMapping(value = "/paycoin/")
public class PayCoinController {@RequestMapping(value = "index")public String payCoin(){return "index.html";}
}
13.启动项目,访问http://localhost:8080/,填写数据,提交支付

14.成功进入扫码界面

15.输入沙箱的买家账户密码即可支付成功

16.查看沙箱的商家账户余额

可能存在的问题

1.点击支付提示支付存在钓鱼风险(目前谷歌会有这样子的问题,建议可以尝试IE和360浏览器试一下)
2.二维码失效(建议把实体类的超时时间timeout_express设置长一点)

看到最后的都是人才,喜欢记得点赞哦!不然白嫖我了❤

第十篇:SpringBoot集成支付宝接口扫码支付相关推荐

  1. laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案)

    laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案) 参考文章: (1)laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案) (2)http ...

  2. SpringBoot集成支付宝沙箱手机网站支付详细流程和踩坑分享

    描述 本文主要讲解SpringBoot集成支付宝沙箱手机网站支付,即网页点击按钮发起支付,跳转到沙箱app付款 由于其他博客的流程大多笼统,有时候并不能找到正确的集成方式,本文尽可能详细的阐述付款,异 ...

  3. PHP支付宝免签约即时到账接口扫码支付实例

    PHP支付宝免签约即时到账接口扫码支付实例,比较简单实用,下面有教程 安装教程: 1.把\pay_files\4422875341317181.png换成你自己的二维码.  2.把pay.htm文件里 ...

  4. 微信支付宝服务器分布,支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」...

    原标题:支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」 本作品为第二届立创商城电子制作节30强入围作品,作者立创社区ID:云逸Baby:转载请注明出处,未经允许不得用作商业用途.作品原 ...

  5. 基于thinkphp5.0和支付宝面对面扫码支付DEMO制作的扫码支付

    ​ 基于thinkphp5.0和支付宝面对面扫码支付DEMO制作的扫码支付 今天接口申请下来,下载了官方demo对着调试了一天,终于实现想要的功能,先看图 选择支付宝支付 跳出二维码弹窗 手机支付宝进 ...

  6. 微信和支付宝H5扫码支付开发记录

    微信和支付宝H5扫码支付开发记录 微信支付 支付宝支付 简单前端实现的一下方法,服务端方法未记录: 微信支付 微信流程步骤简介 1.获取用户code 2.拉起微信支付 支付宝支付 支付宝流程步骤简介: ...

  7. 怎么对接个人收款支付接口(扫码支付)

    实现个人收款是一件很麻烦的事,可以通过 paybob 注册个人收款接口,帮助签约个人支付宝,微信支付接口(不需要营业执照),几分钟就可以开通,申请开通后,获取商户号和通信密钥,然后开始对接,本章主要说 ...

  8. 支付宝微信扫码支付调研

    一.支付宝扫码支付 1.1 系统流程说明 1.1.1 条码支付(被扫) 条码支付是支付宝给到线下传统行业的一种收款方式.商家使用扫码枪等条码识别设备扫描用户支付宝钱包上的条码/二维码,完成收款.用户仅 ...

  9. 微信pc Native支付 支付宝pc扫码支付 Demo PHP tp5

    官方sdk Demo 支付宝 请求支付代码 public function alipay(){$arr =input('param.');vendor('alipay-trade-page-pay/a ...

  10. 一码多付-------支付宝/微信扫码支付(H5支付) 静态码

    为了实现一码多付 生成一个通用二维码  通过支付宝或者微信都可以支付 1 使用支付宝扫码支付 支付宝提供了 扫码枪,用户扫商户动态生成的码 这样会根据用户不同或者金额不同需要动态的码,这样显然是不可以 ...

最新文章

  1. python web框架autoreload原理(以bottle为例)
  2. JSON Web Token - 在Web应用间安全地传递信息
  3. mysql连接查询之间的差异性
  4. MySQL高级 - 案例 - 系统性能优化 - 读写分离概述
  5. 浙江省计算机二级c理论题库,浙江省计算机级考试二级《C程序设计》上机考试题库.doc...
  6. 360浏览器怎么关闭页面声音
  7. [leetcode] Merge k Sorted Lists
  8. ajax提交时“加载中”提示的处理方法
  9. 【学习 OpenCV】—— core.hpp 核心api
  10. 如何在 Linux 中使用 AppImage
  11. mysql 触发器存储过程的区别_MySQL触发器、存储过程实现
  12. python调用通达信公式_通达信公式-主力雷达Python化
  13. 计算机网络第七版谢希仁课后答案第二章(部分答案)
  14. mysql 1114_mysql 解决 ERROR 1114 (HY000): The table 'XXX' is full
  15. 电力系统潮流程序C语言,电力系统潮流C语音程
  16. ShardingJdbc入门
  17. net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
  18. Matlab 2018a与SolidWorks联合仿真——如何将SolidWorks模型以xml格式导出至Matlab中
  19. 论文阅读:GMAN: A Graph Multi-Attention Network for Traffic Prediction
  20. 记一次智能灯泡的破解

热门文章

  1. cassandra cqlsh 使用实际IP或者locahost都可以进入命令行
  2. 新浪微博since_id值
  3. 摄像头视频直播方案比较之方案二:乐橙云
  4. arm mali 天梯图_2018最新CPU天梯图 2018年2月CPU性能天梯图最新版
  5. golang开发android应用(一) - go语言android应用环境搭建
  6. Delphi xe7组件和控件的安装方法
  7. python裁剪图片并保存
  8. 影视剪辑,7个创意转场及7个剪辑技巧,剪辑技巧分享
  9. 工业镜头和民用镜头的特点和区别
  10. SAP 获取不同币种间的汇率 RFC BAPI_EXCHANGERATE_GETDETAIL