Java架构学习(五十三)支付宝平台源码分析&支付概念&支付架构整个流程&支付宝沙箱环境&安全加密方式&支付宝Demo环境运行&支付宝流程源码分析

一、支付概念

现在有的支付机构:
支付宝、微信支付、京东支付、银联支付、小米支付、百度钱包、平安支付。
整个支付体系的流程都是大同小异的。
聚合支付平台。

二、支付架构整个流程

支付包整个支付流程:
	1、 网站提交参数到支付宝接口
	2、在支付宝接口中,支付结果会通知给蚂蚁课堂。

在支付这个开发中会遇到很多问题:
	1、安全方面:
				加密方式:
				使用https
				加签:防止数据被篡改
				加密手段:使用md5、base64、des、sha1
			   对称加密:base64、des、
			   非对称加密:rsa:公钥和私钥的互换
			   支付宝使用加签+非对称加密rsa
			   
	2、支付回调的时候幂等问题
				怎么保证接口的幂等性问题。
	
	支付宝怎么把支付结果通知给网站?
	1、支付通知结果有两种一种是同步通知(同步回调)、一种是异步通知。
	同步通知主要是展示给用户看的支付宝的支付结果。不会去处理订单的状态的更改。
		支付宝同步通知主要是展示作用的。本地浏览器做重定向的操作。
	异步通知主要是:主要是支付宝服务器使用httpclient技术调用网站的接口进行通知。会有补偿机制。

需要解决的问题:在网络延迟的情况下,如何解决支付回调幂等性的问题?
答:使用全局ID.

在这里插入图片描述


双重通知+补偿机制。这上面是最简单版本的分布式事务解决方案。解决双方事务 一致性的问题。

在http协议通讯的时候怎么解决分布式事务问题?
答:如支付宝的支付流程,通过异步通知+补偿机制+自动重试机制来解决分布式事务的问题。

三、支付宝沙箱环境

沙箱环境地址https://openhome.alipay.com

1、要在沙箱环境中配置自己的私钥和公钥,私钥就自己记下来就行
2、下载沙箱环境的运行demo

在这里插入图片描述

四、安全加密方式

1、安全加密分为
	单向加密:不可逆的加密,MD5、
	对称加密:base64 、des
		对称加密是可逆的,既可以加密出来,又可以拿到密文后解密出来
	非对称加密:	在支付系统中用的很多。
		RSA公钥和私钥(最安全的加密方式)需要做公钥和私钥的互换。
		
	支付宝:
		网站首先生成一对公钥和私钥,网站使用私钥进行加密,如果要进行解密需要拿到公钥来进行解密。
		相当于:网站本地生成一对密钥对,自己拥有私钥,把公钥给支付宝。支付宝拿公钥进行解密。

代码:

在这里插入图片描述

如果使用了私钥进行加密了,就要用公钥进行解密
如果使用公钥进行加密了,就要使用私钥进行解密。

五、支付宝Demo环境的运行

在这里插入图片描述

在这里插入图片描述

六、支付宝流程源码分析

在这里插入图片描述
里面的return_url:是在同步接口中的回调地址
notiify_url是在异步接口中,回调的地址。


封装成了一个POST提交的代码  

把参数封装成表单的方式,然后再后台以POST方式进行提交给支付宝服务器。
<form name="punchout_form" method="post" action="https://openapi.alipaydev.com/gateway.do?charset=utf-8&method=alipay.trade.page.pay&sign=msqdFnggfRIH9eZf56MzSJvY%2BXVFF5b61rH17TmRZb80RLfQoiRt3INFZnpwEiE2IPJlz9DbWbkKNk8XrAPzu%2FACpjdDGLVKxqgY6gqOpFl2xSqnY2EI0tXKMizoM5kONoIEabdrqMXyh12aPnWrUM4PRgqMz1jrywuJwlzVQ%2F9takpzT1V70cdrNLqBDzs2tjz4BBygGg1yxYOtSWmdSngtTzwWJAo8O0mdUguOep6Yxsq2I%2B2DPhJEoRNPHc00kNzaUgxCuYKYXmuf6BSsadBaAz5%2FhErsw1M43tgCKgZiMYimSer1NUogO0ys%2FD3SnOsiqZrbxcKTTCQj4G9A2Q%3D%3D&return_url=http%3A%2F%2Fkgqfxi.natappfree.cc%2Freturn_url.jsp&notify_url=http%3A%2F%2Fkgqfxi.natappfree.cc%2Fnotify_url.jsp&version=1.0&app_id=2016092300575828&sign_type=RSA2&timestamp=2019-01-22+15%3A15%3A09&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json">
<input type="hidden" name="biz_content" value="{&quot;out_trade_no&quot;:&quot;201912215649914&quot;,&quot;total_amount&quot;:&quot;0.01&quot;,&quot;subject&quot;:&quot;测试&quot;,&quot;body&quot;:&quot;&quot;,&quot;product_code&quot;:&quot;FAST_INSTANT_TRADE_PAY&quot;}">
<input type="submit" value="立即支付" style="display:none" >
</form>
<script>document.forms[0].submit();</script>

在这里插入图片描述
支付过后,会产生异步通知和同步通知,再进行验签后如过成功了就会返回。
没有成功会有重试机制。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值