代码拉取完成,页面将自动刷新
RATEL
致力于做简洁的交易对接脚手架,在实际项目中经常要对接上下游系统,此时采用ratel对接简单高效。
ratel基于SpringBoot,项目代码简洁,注释丰富,同时支持java和kotlin双语言开发,
maven和docker自动化打包部署,开箱即用。
ratel
├─doc 项目pdm,和使用说明
│
├─api API接口模块
│
├─common 公共模块
│
├─config 配置信息
│
├─mannage 共通下沉,上游对接。
│
├─persistence 持久层
│ ├─MysqlGenerator 代码自动生成
│
├─web 接入层
│
1.合作方请求报文上送时,HTTP 表单提交六个参数:encryptData=加密后的请求报文;encryptKey=加密后的AES对称密钥;
partnerNo=合作方标识;signature=请求报文签名;traceId=请求流水号(即订单号);ext=备用域。
2.平台异步回调报文时,HTTP 表单提交六个参数:encryptData=加密后的返回报文;encryptKey=加密后的AES对称密钥;
signature=报文签名; traceId=请求流水号;ext=备用域。
注意:traceId(合作方请求交易流水号,唯一标识一笔交易,必须保证永远唯一(撤销交易除外,需要使用同一个traceId),长度不能超过32,建议可以包含日期)。
3.为了防止数据在传输过程中被截取和篡改,报文在通讯过程中使用AES数据加密算法和RSA数字签名算法来保证安全性和完整性。
其中,AES加密模式为"AES/ECB/PKCS5Padding", RSA加密模式为"RSA/ECB/PKCS1Padding",RSA签名算法为"SHA256WithRSA"。
4.详细步骤如下:
1. 合作方、平台方生成各自RSA公私钥、AES对称密钥。其中,合作方RSA公私钥为(partnerPubKey、partnerPriKey),
合作方AES对称密钥为partnerAESKey;平台方RSA公私钥为(platformPubKey、platformPriKey),平台方AES对称密钥为platformAESKey。生成密钥后交换各自RSA公钥。
2. 合作方请求报文时,需要用合作方AES对称密钥partnerAESKey加密请求报文:encryptData=AES.encryptToBase64(plainText,partnerAESKey),
其中encryptData是Base64编码的字符串;用合作方RSA私钥签名请求报文:signature=RSA.signToBase64(plainText,partnerPriKey),其中signature是Base64编码的字符串;
用平台方RSA公钥加密合作方AES对称密钥partnerAESKey:encryptKey=RSA.encryptToBase64(partnerAESKey,platformPubKey),其中encryptKey是Base64编码的字符串。
3. 平台方收到合作方请求报文(包含6个参数:encryptData、encryptKey、partnerNo、signature,traceId,ext),根据partner取出对应的密钥,
用平台方RSA私钥解密encryptKey:partnerAESKey=RSA.decryptFromBase64(encryptKey,platformPriKey);用解密得到的partnerAESKey解密encryptData:plainText=AES.decryptFromBase64(encryptData, partnerAESKey);
用合作方RSA公钥验证签名:boolean result=RSA.checkSignFromBase64(plainText,signature,partnerPubKey);根据报文中的txnCode得到获取配置进行解包,最后根据报文体callBack回调地址异步应答。
4. 同步应答返回内容首先采用json格式报文序列化, 用合作方AES加密返回内容json串,然后对加密结果进行Base64加码,同时平台私钥返回内容的json串进行签名,
然后对签名之后的json进行Base64加码, 然后把加密加码和签名加码的两个字段再次用json序列话,最后返回。
5. 同理,平台方应答报文,合作方端处理类似上述流程。需要注意的是,平台方每次通讯报文的AES密钥不一样。
![1603984925642](https://bk-markdown.oss-cn-shanghai.aliyuncs.com/2020/10/29/1603984925642.jpg)
核心框架:SpringBoot
模板引擎:Thymeleaf
持久层框架:MyBatis-plus
连接池:Druid
缓存框架:Jetcache 、Jedis
日志管理:Slf4j,Logback
重试框架:Spring-retry
分布式调度: ShedLock
打包部署:Maven,Docker
数据库:Mysql,Redis
工具类:ApacheCommons、hutool-all、lombok、mica
Jackson、fastjson、guava、
joda-time、httpclient、bcprov、jsr305等。
QQ群:642645792
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型