IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 基于Vue+SpringCloudAlibaba微服务电商项目实战-聚合支付平台-017:对接第三方支付宝支付接口 -> 正文阅读

[JavaScript知识库]基于Vue+SpringCloudAlibaba微服务电商项目实战-聚合支付平台-017:对接第三方支付宝支付接口

1 聚合支付平台架构课程内容安排

今日课程任务

  1. 聚合支付平台架构设计思想
  2. 对接第三方支付接口设计的思想
  3. 支付同步回调与异步回调的区别
  4. 支付宝沙箱支付环境用法的介绍
  5. 如何理解对接支付宝RSA配置介绍
  6. 如何保证提交支付的参数的安全性

2 聚合支付平台核心的设计思想

支付渠道整合支付宝、微信、银联、QQ钱包、京东等多种渠道。
聚合支付模块 聚合支付接口 如ping++
如果公司规模是不是很大情况下可以采用第三方聚合支付平台ping++

聚合支付平台核心模块

  1. 对接第三方支付渠道 支付宝、微信支付
  2. 支付服务与积分服务存在一个分布式事务问题 seata
  3. 支付订单超时设计–Redis和MQ
  4. 定时对账模块的设计 支付补偿

3 支付宝官方Demo运行测试

对接第三方支付接口设计的思想
对接第三方支付 支付宝、银联、微信支付、其他支付接口。它们的设计支付思想都是相同的,就是对接支付代码不同,基于策略模式重构聚合支付平台。

以对接支付宝案例介绍
沙箱环境:支付宝提供的sit测试环境

支付宝开发测试环境搭建
支付宝沙箱环境申请地址:https://openhome.alipay.com/platform/appDaily.htm

支付宝中的应用公钥和支付宝公钥分别表达什么意思?
同步地址与异步回调分别表达什么意思?
在沙箱环境中,以form表单形式提交支付的参数给支付宝的时候,浏览器报错“支付存在钓鱼风险!防钓鱼网站的方法”。
建议直接使用360安全浏览测试即可。

对接第三方支付的原理
在这里插入图片描述

  1. 以form表单的形式提交参数给第三方支付接口 采用的是post请求

如何保证传递参数安全性
1 验证签名防止数据被抓包篡改.
2 采用RSA公钥与私钥互换的机制实现数据的加密

官方Demo下载地址:
电脑网站支付 Demo
https://opendocs.alipay.com/open/270/106291/

4 支付宝接口采用验证签名保证接口参数安全性

采用验证签名防止数据被抓包篡改
商品以form表单提交参数给支付宝 对参数Money=1000&orderNumber=10000生成一个md5值sign=YP8CFwTwTcEIdfcxZ1NmMZ%2FiV5%2BSw8Ihn8sorz6lVdENKbQDf5I,参数一起提交给支付宝。
支付宝服务器端接收参数同样用参数Money=1000&orderNumber=10000生成md5 mysign
比对两个md5值是否一致,如果一致说明参数没有发生变更,否则可能被人篡改
注意:修改支付参数一定要修改参数签名
如何判断文件内容是否发生变化?MD5

5 支付宝接口同步回调(浏览器重定向)实现原理

  1. 同步回调 在支付宝支付成功之后,会以浏览器重定向的形式跳转到商户地址,同时会发送支付报文结果,商户可以解析该报文判断是否有支付成功。
    注意:只能解析报文结果给用户提示是否支付成功,但是不能修改数据库的订单状态。

6 支付宝异步回调的实现原理

  1. 异步回调 支付宝以发送类似于http请求的形式将支付结果告诉给商户,商户实现解析数据的报文,如果支付成功同时修改数据库的订单状态。
    注意:异步回调本地开发环境测试的时候,需要提供外网映射工具,同步回调的时候本地开发是不需要,但是生产环境还是需要的。

7 深入理解支付宝公钥与私钥加密模式

对称加密 des 加密和解密都是采用同一个秘钥,不安全
目前公认安全的加密算法 RSA 非对称加密

RSA就是一对秘钥对 由公钥和私钥组成
使用公钥对数据加密的情况,必须要使用私钥对数据解密
公钥提供:给商户或者是客户端
私钥提供:给服务器端对数据实现解密

支付宝的公钥、应用的公钥
两个秘钥对-公钥和私钥:支付宝的公钥和支付宝的私钥、商户的公钥和商户的私钥

中间过程:

  1. form提交参数给支付宝
    商户(蚂蚁课堂)使用支付宝的公钥对提交参数实现RSA加密
    给支付宝服务器的时候(支付宝的私钥对数据实现解密)
  2. 支付宝采用回调的方式(商户的公钥)将支付结果以RSA加密的方式发送给商户,商户使用对应的私钥实现对数据解密。

RSA生成工具
https://opendocs.alipay.com/open/291/105971#LDsXr
生成好的公钥私钥在支付宝沙箱环境RSA2(SHA256)密钥(推荐)进行配置,修改AlipayConfig参数,启动测试demo。测试付款场景将返回结果以html文本形式保存,用360浏览器打开进行验证。

测试效果:
在这里插入图片描述

8 聚合支付数据库表结构设计

支付渠道表

CREATE TABLE `payment_channel` (
  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `CHANNEL_NAME` varchar(32) NOT NULL COMMENT '渠道名称',
  `CHANNEL_ID` varchar(32) NOT NULL COMMENT '渠道ID',
  `MERCHANT_ID` varchar(32) NOT NULL COMMENT '商户id',
  `SYNC_URL` text NOT NULL COMMENT '同步回调URL',
  `ASYN_URL` text NOT NULL COMMENT '异步回调URL',
  `PUBLIC_KEY` text COMMENT '公钥',
  `PRIVATE_KEY` text COMMENT '私钥',
  `CHANNEL_STATE` int(11) DEFAULT '0' COMMENT '渠道状态 0开启1关闭',
  `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
  `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
  `CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
  `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
  `pay_bean_id` varchar(255) DEFAULT NULL,
  `request_address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`,`CHANNEL_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='支付渠道 ';

支付交易表

CREATE TABLE `payment_transaction` (
  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `PAY_AMOUNT` int(11) NOT NULL COMMENT '支付金额',
  `PAYMENT_STATUS` int(11) NOT NULL DEFAULT '0' COMMENT '支付状态 0待支付1已经支付2支付超时3支付失败',
  `USER_ID` int(11) NOT NULL COMMENT '用户ID',
  `ORDER_ID` varchar(32) NOT NULL COMMENT '订单号码',
  `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
  `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
  `CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
  `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
  `partypay_Id` varchar(255) DEFAULT NULL,
  `payment_Id` varchar(255) DEFAULT NULL,
  `payment_channel` varchar(255) DEFAULT NULL,
  `order_Name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='支付交易 ';

支付交易日志表

CREATE TABLE `payment_transaction_log` (
  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `SYNCH_LOG` text COMMENT '同步回调日志',
  `ASYNC_LOG` text COMMENT '异步回调日志',
  `CHANNEL_ID` int(11) DEFAULT NULL COMMENT '支付渠道ID',
  `TRANSACTION_ID` int(11) DEFAULT NULL COMMENT '支付交易ID',
  `REVISION` int(11) DEFAULT NULL COMMENT '乐观锁',
  `CREATED_BY` varchar(32) DEFAULT NULL COMMENT '创建人',
  `CREATED_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  `UPDATED_BY` varchar(32) DEFAULT NULL COMMENT '更新人',
  `UPDATED_TIME` datetime DEFAULT NULL COMMENT '更新时间',
  `untitled` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='支付交易日志表 ';
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:46:04  更:2021-07-14 10:47:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 9:58:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码