网页客服,欢迎咨询

外联网关平台实践之车支付渠道改造

2025-01-06 18:40:01 171
  • 收藏
  • 管理
    总篇185篇 2022年第60篇1.项目背景车支付系统对接很多的外部渠道,如苹果支付、支付宝、微信、银联等,在实际开发与实施的过程中,发现了其中存在的一些问题,比如:?需要一定精力在与渠道进行非业务逻辑的联调与测试。?渠道的对接可能分布在不同的业务子系统中,没有进行统一有效的出口管控。针对以上类似问题,外联网关应运而生,以保证内部系统与外部系统之间进行安全、有效、便捷的通讯。2.设计方案2.1系统交互流程图简单来说,系统的主要功能就是通过对请求的一些配置,选择系统预置的一些插件(系统内置了常用的通讯协议、加签验签、加密解密过程,也可以通过规则引擎脚本实现对请求和响应数据的个性化处理),以实现在不编写代码的情况下,实现对请求的鉴权、参数预处理、参数与响应结果映射等。让业务开发同学更关注业务逻辑。平台还提供Mock数据的能力,在外部接口未提供可调用环境时,可以根据渠道提供的文档,进行Mock数据的返回。系统提供两种接入方式: 客户端如果采用spring cloud,可以接入统一注册中心Consul; 如果是其他系统,可以通过HTTP方式调用。3.实践过程在获取到对接方的接口文档之后,通过分析接口的通讯与鉴权方式,在外联网关的配置管理后台配置相应的参数,配置完成之后会有相应的模板编号,客户端通过模板编号+对接接口的请求参数进行接口的请求。3.1组管理系统通过组管理,对同一系列的接口的通用配置,实现对一个外部渠道中一个或多个接口的的请求响应处理配置,包括:?加签验签?加密解密?预设字段?系统预置加密及签名: 加密分为三种:1.对称加密(symmetric),例如:AES、DES等2.非对称加密(asymmetric),例如:RSA、DSA等3.摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等。 摘要算法:算法说明MD5-LOWER摘要函数-128位-小写MD5-UPPER摘要函数-128位-大写SHA-1摘要函数-160位SHA-256摘要函数-256位SHA-384摘要函数-384位SHA-512摘要函数-512位SHA1withRSA先用 SHA-1 去摘要,然后使用 RSA 加密SHA256withRSA摘要后加密SHA384withRSA摘要后加密SHA512withRSA摘要后加密MD2withRSA摘要后加密MD5withRSA摘要后加密 加解密算法:算法说明备注AES对称加密。更快,兼容设备,安全级别高AES|128|AQIDBAUGBwgJAAECAwQFBg==|AES/CBC/PKCS5PaddingDES对称加密。本地数据,安全级别低RSA非对称加密。有公钥和私钥SM4国密算法-对称加密SM4encrypt_key、decrypt_key配置通过“|”间隔key和iv注意:AES|秘钥长度|IV向量(byte-->Base64)|AES/mode (加密模式)/padding (填充方式)AES|128|AQIDBAUGBwgJAAECAwQFBg==|AES/CBC/PKCS5Padding 签名策略(SignStrategyEnum)简写过程KV_JOIN_BODY_URL对请求参数中body和urlParam值,根据配置的连接方式组成字符串V_JOIN_BODY请求参数(body)值拼接V_JOIN_BODY_SORT请求参数(body)值拼接(需排序)KV_JOIN_BODY_HEADER对请求参数中body和header值,根据配置的连接方式组成字符串KV_JOIN_BODY_ENCRYPT对请求参数中body和encrypt(加密前)值,根据配置的连接方式组成字符串KV_JOIN_BODY_ENCRYPTED对请求参数中body和encrypt(加密后)值,根据配置的连接方式组成字符串BODY_JSON对请求参数中body数据转换为JSON字符串BODY_ENCRYPT_SORT_JSONbody+encrypt 参数字段排序后 json 化BODY_JSON_RSA对请求参数中body数据转换为JSON字符串在经过RSA加密(Base64编码)ENCRYPT_RSA对请求中的加密字符串进行再签名V_JOIN_HEADER_NO_SORTheader 内容拼接,无排序KV_JOIN_BODY_URL_REJECT_SIGNMETHOD对请求参数中body和urlParam值,根据配置的连接方式组成字符串,并且剔除SingMethod的key和value 验签策略(VerifySignStrategyEnum)简写过程V_JOIN_BODY请求参数(body)值拼接BODY_SORT_JSON返回结果集字段排序后 JSON 化BODY_SORT_JSON_E_WALLET返回结果集字段排序后 JSON 化(E钱包专用) 签名盐值位置:标识说明left拼接左侧right拼接在右侧both两侧都有 加密策略(EncryptStrategyEnum)简写过程SPECIFIC_JSON在请求体encrypt中指定要加密的内容,转换成JSON字符串BODY_JSON在请求体body中指定要加密的内容,转换成JSON字符串 解密策略:简写过程SPECIFIC_JSON指定的字段,解密后为JSON字符串 接口预设参数:{?"body":?{"requestNo":?"$simple_uuid$","requestTime":?"$millisecond_long$","charset":?"UTF-8","signType":?"SHA256withRSA","encryptType":?"AES"?}}示例:$simple_uuid$预设值类型说明simple_uuidStringUUIDmillisecond_longLong毫秒timestamp_longLong时间戳持续完善中3.2请求项配置在配置好接口组之后,接下来就可以通过对请求项实现对某一个接口的具体配置,其中包括:?选择对应的接口组?是否需要Mock数据?Mock数据的模板配置(每个属性由 3 部分构成:属性名、生成规则、属性值,可以实现返回动态Mock数据。)?请求的方式(POST、GET)?请求与响应的Content-type,编码格式等?请求超时的配置?请求参数映射(参数名称的转换)?请求参数脚本(通过规则引擎脚本对请求参数进行二次处理)Mock模板示例:'name|min-max':?value'name|count':?value'name|min-max.dmin-dmax':?value'name|min-max.dcount':?value'name|count.dmin-dmax':?value'name|count.dcount':?value'name|+step':?value3.3模板配置模板是打包一个或者多个请求(目前仅支持一个,后续通过接入规则引擎平台,实现对请求项的编排能力),对外暴露给客户端,通过模板编号进行请求。?4.规划?外联平台目前实现了基本的对请求的处理与封装,还是有很多需要集成与完善的功能,比如对请求的监控与性能统计,直观感受外部接口的响应效率,更好的优化自己的系统。还有可以接入规则引擎系统,可以实现对请求更灵活的配置,让系统更加灵活,适应更多的场景。?5.总结?外联网关是针对请求外部接口的一套实现方案,以低代码的形式实现复用,以减少接口对接工作量为目标,最终实现提高工作效率,实现对接口的统一管理与控制,确保交易在各支付渠道之间安全、无缝的传递。?作为之家内部业务系统与外部系统的隔离与统一管理:?实现外部支付清算系统的统一接入和接入管理;?完成通讯协议及信息的转换;?完成报文组包解包、报文解密和加密;?完成信息的路由分发;?完成报文的发送和接收。作者简介?郑刚?C端及中台产研中心-效能平台部-业务平台团队。2017年加入汽车之家,主要负责中台及金融相关业务服务器端设计与开发工作。阅读更多:面向推荐的汽车知识图谱构建基于Flink+Starrocks建设之家广告实时数据二手车之家业务缓存应用实战 外联网关平台实践之车支付渠道改造
    上一页:多模态算法在AIGC视频生成中的应用 下一页:基于数据对象和规则引擎的交易中台自动化测试方案
    全部评论(0)