支付宝支付不会搞?看这里看这里
这节内容由小千,带大家一起探究下支付宝是如何搭建环境和完成支付的。我将带着大家从支付宝如何接入,以及支付宝对接的API,完成一个完整的支付案例。大家抓稳扶好,我们开车了!
1.支付宝接入指引
1.1 入驻平台
开发者使用实名认证的支付宝企业账号登录开放平台。
首先我们要对支付宝的整个开放平台有一个认知,才能理解我们怎么能够使用支付宝的支付模块。根据支付宝官方平台文档,对整个支付宝的开放能力有完整的介绍。
①首先登录支付宝平台
②选入接入类型
③填写接入信息
如果是第一次,需要注册,具体按照下面要求进行填写
④注册成功
⑤编写对接的应用名称
⑥进入控制台
准入条件
申请前必须拥有经过实名认证的支付宝账户。
企业或个体工商户可申请。
需提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致。
网站能正常访问且页面显示完整,网站需要明确经营内容且有完整的商品信息。
网站必须通过 ICP 备案。如为个体工商户,网站备案主体需要与支付宝账户主体名称一致。
如为个体工商户,则团购不开放,且古玩、珠宝等奢侈品、投资类行业无法申请本产品。
1.2 使用沙箱环境
沙箱环境是支付宝开放平台为开发者提供的与生产环境完全隔离的联调测试环境,开发者在沙箱环境中完成的接口调用不会对生产环境中的数据造成任何影响。
沙箱为开放的产品提供有限功能范围的支持,可以覆盖产品的绝大部分核心链路和对接逻辑,便于开发者快速学习/尝试/开发/调试。
沙箱环境会自动完成或忽略一些场景的业务门槛,例如:开发者无需等待产品开通,即可直接在沙箱环境调用接口,使得开发集成工作可以与业务流程并行,从而提高项目整体的交付效率。
注意:
由于沙箱环境并非 100% 与生产环境一致,接口的实际响应逻辑请以生产环境为准,沙箱环境开发调试完成后,仍然需要在生产环境进行测试验收。
沙箱环境拥有完全独立的数据体系,沙箱环境下返回的数据(例如用户 ID 等)在生产环境中都是不存在的,开发者不可将沙箱环境返回的数据与生产环境中的数据混淆。
⑦申请成功,支付宝已经给你分配好了模拟的商家号,以及一系列所需要用到的AppID
由于使用的沙箱环境, 应用的私钥和公钥都已经有默认配置了,我们可以使用默认的公钥和私钥
1.3 配置秘钥
这就是沙箱环境的信息配置,APPID是自动帮我们创建好了的,网关也不用管。我们要做的就是设置那个密钥,这里RSA2需要设置公钥。推荐使用RSA2.
首先进入开发文档
安装阿里支付助手AlipayDevelopmentAssistant工具。
生成秘钥
设置自定义秘钥的公钥
2 支付宝入门案例
2.1 需求描述
点击进入在支付页面点击付款,完成沙箱支付操作.
2.2 支付请求API描述
2.3 搭建环境
导入maven依赖
2.4 编写application.properties
2.5 编写工具类
BeanUtils
2.6 controller 处理请求
2.7 配置异步通知的处理类
异步通知: 其实是双保险机制, 如果同步通知后没有跳转到你的网址, 可能用户关了, 可能网速慢, 即无法触发你更新订单状态为已支付的controller, 这时候异步通知就有作用了, 不过你要判断一下, 如果订单已经变为已支付, 则不必再更新一次了, 只返回给支付宝success即可, 否则他会一直异步通知你。
2.8 内网穿透配置
什么是内网穿透
内网穿透简单来说就是将内网外网通过natapp隧道打通,让内网的数据让外网可以获取。比如常用的办公室软件等,一般在办公室或家里,通过拨号上网,这样办公软件只有在本地的局域网之内才能访问,那么问题来了,如果是手机上,或者公司外地的办公人员,如何访问到办公软件呢?这就需要natapp内网穿透工具了。运行natapp隧道之后,natapp会分配一个专属域名/端口,办公软件就已经在公网上了,在外地的办公人员可以在任何地方愉快地访问办公软件了。
由于我们的项目是内网,支付宝通知不能通知支付信息,因此我们需要使用内网穿透技术将ip映射为一个支付宝可以通知到的外网地址。
1.注册natapp内网穿透
2.购买隧道
3.实名认证
4.购买隧道
5.下载客户端
6.配置内网穿透地址
首先进入到制定安装natapp.exe目录下,将 authtoken配置上生成的值
2.9 添加同步通知处理类
同步通知:用于用户在支付宝页面付款完毕后自动跳转回你自己的网址,你根据他的参数告诉用户已经支付成功, 然后你再更新你自己订单表的状态为已支付
2.10 编写支付前台页面
编写支付的页面index.jsp
2.11 支付测试
扫码付款
android手机下载沙箱支付宝
检查支付宝沙箱金额是否更变,如果更变成功则,扣款成功
至此, 我们使用支付宝沙箱支付的入门案例就编写完毕了。
猜你喜欢LIKE
相关推荐HOT
更多>>java两个日期比较相差多少天
在Java中,可以使用`java.time`包下的类来比较两个日期之间相差的天数。以下是一个示例代码:importjava.time.LocalDate;importjava.time.tempo...详情>>
2023-06-27 17:19:00find命令查找文件
"find"命令是在Unix、Linux和类似系统中使用的一个非常强大的命令,用于在文件系统中查找文件和目录。它可以根据各种条件进行搜索,并提供了灵...详情>>
2023-06-16 14:00:30如何添加Java环境变量
要添加Java环境变量,请按照以下步骤进行操作:1.打开计算机的控制面板。2.点击"系统和安全"(Windows10及更高版本)或"系统"(Windows7和较早版本...详情>>
2023-06-08 09:31:10随机函数rand怎么使用
rand是一个C++的函数,用于产生一个随机数。以下是使用rand的方法:1.头文件:需要包含stdlib.h或cstdlib头文件以使用rand函数。2.使用rand()函...详情>>
2023-04-20 15:47:10什么是面向对象编程?面向对象有什么特性
面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,它将数据和操作数据的方法组合成一个单独的实体,称为“对象”,并且对...详情>>
2023-03-17 15:30:11Java培训问答更多>>
新Java行业疑惑解答:Java的内存管理是如何工作的?
新java script是什么?为什么要学java script
新java和大数据哪个好?未来哪个职业发展更好
新java培训班多久能学会?培训周期大概多久
新java script和java的区别有哪些?如何区分
新java script的数据类型主要有哪些?怎样学的更快
新c语言与java区别在哪里?去培训机构学哪个比较好
Java面试题库 更多>>
华为外包java面试题-Java实现单链表的逆序
Java程序员面试题
Java面试题及答案
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区