59 Star 93 Fork 27

jiangpingcmt1 / ratel

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

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

空文件

简介

ratel基于SpringBoot,致力于做简洁的交易对接脚手架,完美整合springboot、mybatis-plus、jetcache、swagger、spring-retry、shedlock等。项目代码简洁,注释丰富,同时支持java和kotlin双语言开发,maven和docker自动化打包部署,开箱即用。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/jiangpingcmt1/ratel.git
git@gitee.com:jiangpingcmt1/ratel.git
jiangpingcmt1
ratel
ratel
master

搜索帮助