目录
- 一、加密
- 二、什么是公钥、 私钥、 加密、 签名和验签?
- 三、支付宝官方demo测试
- 四、支付宝支付流程
- 五、内网穿透
一、加密
对称加密
加密与解密用的秘钥都是一样的
非对称加密
加密与解密用到的秘钥不一致
支付宝加密原理
支付宝加密采用RSA非对称加密,分别在商户端和支付宝端有两对公钥和私钥。在发送订单数据时,直接使用明文,但会使用商户私钥加一个对应的签名,支付宝端会使用商户公钥对签名进行验签,只有数据明文和签名对应的时候才能说明传输正确。
支付成功后,支付宝发送支付成功数据之外,还会使用支付宝私钥加一个对应的签名,商户端收到支付成功数据之后也会使用支付宝公钥延签,成功后才能确认。
二、什么是公钥、 私钥、 加密、 签名和验签?
公钥私钥
公钥和私钥是一个相对概念。它们的公私性是相对于生成者来说的。一对密钥生成后, 保存在生成者手里的就是私钥,生成者发布出去大家用的就是公钥。
加密和数字签名
加密是指:
我们使用一对公私钥中的一个密钥来对数据进行加密, 而使用另一个密钥来进行解密的技术。 公钥和私钥都可以用来加密, 也都可以用来解密。 但这个加解密必须是一对密钥之间的互相加解密, 否则不能成功。
加密的目的是:
为了确保数据传输过程中的不可读性, 就是不想让别人看到。
签名:
给我们将要发送的数据, 做上一个唯一签名(类似于指纹) 用来互相验证接收方和发送方的身份; 在验证身份的基础上再验证一下传递的数据是否被篡改过。 因此使用数字签名可以用来达到数据的明文传输。
验签:
支付宝为了验证请求的数据是否商户本人发的, 商户为了验证响应的数据是否支付宝发的
三、支付宝官方demo测试
官方 demo下载地址:https://opendocs.alipay.com/open/54/106682
使用支付宝沙箱环境进行测试:https://open.alipay.com/platform/appDaily.htm?tab=account
自定义秘钥,点击rsa2秘钥后面的设置并启用
利用秘钥工具生成自己的公钥,私钥,拿到支付宝公钥
配置demo中的AlipayConfig
添加依赖:
测试账号密码 https://open.alipay.com/platform/appDaily.htm?tab=account
四、支付宝支付流程
五、内网穿透
为什么使用内网穿透?
支付宝需要回调我们的接口进行异步通知
简介
- 内网穿透功能可以允许我们使用外网的网址来访问主机;
- 正常的外网需要访问我们项目的流程是:
- 买服务器并且有公网固定 IP
- 买域名映射到服务器的 IP
- 域名需要进行备案和审核
使用场景
1、 开发测试(微信、 支付宝) 2、 智慧互联 3、 远程控制 4、 私有云
内网穿透的几个常用软件
1、 natapp: https://natapp.cn/ 2、 续断: https://www.zhexi.tech 3、 花生壳: https://www.oray.com/