精华内容
下载资源
问答
  • 和第三方接口对接总结

    万次阅读 多人点赞 2018-09-30 16:46:46
    接口对接分为两种形式: 我A公司提供接口给B公司,B公司进行一些操作时调用我们的接口进行实现。 例:A开发会员等级同步接口,供B同步会员等级到B系统。B会员等级的变动需要调用A接口主动推送给A(即更新会员卡...

    接口对接分为两种形式:

    1. 我方A公司提供接口给B公司,B公司进行一些操作时调用我们的接口进行实现。

    例:A开发会员等级同步接口,供B同步会员等级到B系统。B会员等级的变动需要调用A接口主动推送给A(即更新会员卡等级)。

    我们首先要做的就是按照对方的要求,在对方调用我们的接口,我方成功处理之后,按照对方所需要的返回数据以及格式反馈给他们信息。

    在写本接口中,因为我们会员卡等级的字段是不一样的,所以我们对此主要处理的就是这个事情,1.例如对方传来修改后的卡等级是金卡,因为我们数据库中是分为vipcard和cardgrade两张表的,所以首先我们要去写一个方法,查询cardgrade表中所有的卡等级的id,返回一个list集合,再利用B公司传过来的数据for循环遍历比较,如果相等,则拿到金卡等级在我方A公司的ID,代码如下:

     

    再根据B公司提供的会员卡号在我们查询到该条会员并拿到id;

    最后就可以根据拿到跟新后的等级id和该会员的id进行更新了,任务完成!代码如下:

     

     

     

    2.B公司开发会员查询接口,A公司调用B公司接口,实时查询会员

    调对方接口和对方调我方的接口稍微有些不同,因为中间涉及到安全问题,所以还要满足对方要求我方传入的参数,不然对方不给通过,参数要求如下:

    其中AppID,Args,AppSystem是与对方提供给我方特有的,timestamp是当前时间,我们只需获取当前时间按照他的格式生成,这个较简单,稍微复杂点的就是sign的生成了,要做的就是进行加签/验签,按照对方的要求,我们需要将AppId、Timestamp、Token(客户端保存),按照参数名在英文字典中的顺序排序,然后重新拼成一个标准的query string。然后采用sha1或者md5算法对此加密生成sign,代码如下:

    参数都好了之后,对方要求以form表单的形式将参数传过去,这又是一个坑,哎。。,网上找了很久,代码如下:

    Url是对方给的方法路径,param是放入的5个参数,然后要处理的就是把对方参数对应转成我方的参数形式,采用set/get即可。

    供一起刚入坑的参考。

    展开全文
  • 公司搬东莞了没办法年底还要找工作,这周周一面试周二入职,入职一天,就让对接前海征信的接口,本周上线,压力山大。 而且那边提供的是demo都是javaphp版,证书也是.jks格式,瞬间蒙蔽。 经过这几天研究,装...

    公司搬东莞了没办法年底还要找工作,这周周一面试周二入职,入职第一天,就让对接前海征信的接口,本周上线,压力山大。

    而且那边提供的是demo都是java和php版,证书也是.jks格式,瞬间蒙蔽。

    经过这几天研究,装了jdk通过工具把jks证书转成.net可识别的pfx格式,各种加密解密,签名认证,每天从8:30到晚上8:30,终于联调成功。

    现在总结一下关于安全性方面的知识,参考资料是《C#高级编程(第10版)》。

     

    安全性有几个方面需要考虑。一是程序的用户,访问应用程序的是一个真正的用户,还是伪装成用户的某个人?如何确定这个用户是可以信任的?确保程序安全的用户方面是两阶段过程:

    1.用户首先要进行身份验证

    2.进行授权。

    本文主要讨论授权方面的知识。

     

    加密数据

    加密数据分为对称密钥和不对称密钥。对称密钥使用公钥/私钥来进行加密和解密。

    如果使用一个公钥进行加密,就应该使用对应的私钥进行解密,而不是使用公钥解密;同样如果使用私钥加密,就应该使用对应的公钥解密。不可能从私钥中计算出公钥,也不可能从公钥中计算出私钥。

    公钥可以由任何人使用,私钥必须安全的加锁。举个例子:

     

    如果马云给李彦宏发了一封邮件,并且马云希望除了李彦宏外,其他人都不能查看该邮件,所以马云使用了李彦宏的公钥。

    邮件是使用李彦宏的公钥加密,李彦宏打开该邮件并使用秘密存储的私钥解密。这种方式可以确保除李彦宏外,其他人都不能阅读马云的邮件。

    这里有个问题:李彦宏不能确保邮件是马云发送的。马化腾可以使用 李彦宏的公钥 加密 发送给李彦宏的邮件 并 假装是马云。

    我们使用公钥/私钥把这条规则扩展一下。再次从马云给李彦宏发送邮件开始。

    在马云使用李彦宏的公钥加密邮件之前,马云添加了自己的签名,再使用自己的私钥加密该签名。然后使用李彦宏的公钥加密邮件。

    这样就保证了除李彦宏外,其他人都不能阅读该邮件。在李彦宏解密邮件时,他检测到一个加密的签名。这个签名可以使用马云的公钥来解密

    而李彦宏可以访问马云的公钥,因为这个密钥是公钥。在揭秘了签名后,李彦宏就可以确定是马云发送的邮件。

    对称密钥的加解密比非对称密钥的算法快很多。在网络通信中,一种方式是先使用非对称密钥进行密钥互换,再使用对称密钥加密网络发送的数据。

    散列 

    MD5

    SHA

    RIPEMD

    散列算法的目标是从任意长度的二进制字符串中 创建一个长度固定的散列值。这些算法那和数字签名一起用于保证数据的完整性。如果再次散列相同的二进制字符串,会返回想用的散列结果。

    MD5由RSA实验室开发,比SHA1快。MD5使用128位的散列长度。

    SHA1在抵御暴力攻击方面比较强大,SHA算法由美国国家安全局(NSA)设计。SHA使用160位的散列长度。

    RIPEMD使用160位的散列长度。

    对称

    DES

    AES

    Rijandel

    对称密钥算法使用相同的密钥进行数据的加密和解密。现在认为DES是不安全的,因为它只使用56位的密钥长度,可以在24小时内被破解。

    AES的密钥长度是128、192或256位。是美国政府采用的加密标准。

    Rijandel非常类似于AES。

    非对称  

    DSA

    ECD

    RSA

    非对称算法使用不同的密钥进行加密和解密。

    RSA是第一个用于签名和加密的算法。广泛用于电子商务协议。

    DSA使用基于椭圆曲线组的算法。密钥长度为1024位。

     

    创建和验证签名

    下面例子说明如何使用ECDSA算法进行签名。马云创建了一个签名,用马云的私钥加密,可以使用马云的公钥访问。因此保证该签名来自于马云。

     

     

     

     

     

     

     

     

     

      

     

    李彦宏

    转载于:https://www.cnblogs.com/justinxhan/p/8371057.html

    展开全文
  • 1、第三方支付可以为企业降低直连银行的成本,第三方支付接口满足企业专注于发展在线业务的收费要求,根据市场竞争与业务发展所创新的商业模式,同步定制个性化的支付结算服务; 2、通过第三方支付接口,将多种支付...

    一、支付接口的开放有什么好处?

    1、第三方支付可以为企业降低直连银行的成本,第三方支付接口满足企业专注于发展在线业务的收费要求,根据市场竞争与业务发展所创新的商业模式,同步定制个性化的支付结算服务;

    2、通过第三方支付接口,将多种支付方式整合在一起,使网上购物更加快捷、便利;

    3、助消费者降低网上购物的成本,帮助商家降低运营成本;

    对于商家和开发者而言,“消费目的群体”越大,也意味着交易转化率越高。对于个人而言,个人支付接口可以申请的有网银网关、微信支付、支付宝等产品,支持PC网站、WAP页支付、Html5网页支付、公众号支付以及APP支付等各类场景。在这里插入图片描述

    说说为什么需要支付接口

    互联网发展迅速,人们的交易越来越靠手机支付,国内排名靠前的的第三方支付平台,支付宝支付和微信支付,人民的衣食住行的消费基本脱离了现金支付,两大支付已成为主流支付。

    为了方便人们付款,各大平台都想方设法接入支付接口

    展开全文
  • 今天我们来聊聊,如何做好第三方系统对接

    千次阅读 多人点赞 2020-12-18 18:40:43
    无论你是做面向ToB、ToC还是ToG的业务,开发业务系统,永远也逃脱不了与第三方系统对接的命运,例如:常见的支付宝、微信支付平台对接、短信平台对接,还有单点登录对接,以及与友商的数据接口对接等等,大..

    💨 作者:laker,因为喜欢LOL滴神faker,又是NBA湖人队🏀(laker)粉丝儿(主要是老詹的粉丝儿),本人又姓,故取笔名:laker
    ❤️喜欢分享自己工作中遇到的问题和解决方案以及一些读书笔记和心得分享
    🌰本人创建了微信公众号【Java大厂面试官】,用于和大家交流分享
    🏰 个人微信【lakernote】,加作者备注下暗号:cv之道


    前言

    无论你是做面向ToBToC还是ToG的业务,开发业务系统,永远也逃脱不了与第三方系统对接的命运,例如:常见的支付宝、微信支付平台对接、短信平台对接,还有单点登录对接,以及与友商的数据接口对接等等,大到相对成熟的平台对接,小到一个接口的调用,基本上所有的开发都避免不了对接,它已经充斥在我们的日常工作中✒️,如何做好与第三方的对接,降低对接风险,按时保质的完成对接任务,已经成为我们非常头疼的问题了 ⚡⚡⚡。

    今天我就在这里总结下,个人的经验以及互联网上发表的一些比较好的观点。有用的话,麻烦点个赞 👍 ,转发一波☀️。

    首先当我们拿到对接需求的时候,直接3W三板斧理论抡起来,来帮助我们梳理一下对接思路。

    What 是什么

    对接的是什么?

    • 一定要从宏观微观的搞清楚我们自己的系统是做什么业务,有哪些数据、哪些字段;需要提供给第三方哪些数据、哪些字段;又需要从第三方获取哪些数据、哪些字段。

    这里的宏观和微观指的是宏观的系统物理架构、逻辑架构、部署架构、业务架构,微观的指系统模块、功能点的实现细节、及其涉及的表和其他三方对接历史。

    要找到掌握这么多的人,可不是一件容易的事儿,这里能掌握这么多的人,一般都是团队的核心骨干首席开发工程师❤️

    • 同样的也要掌握第三方系统大致业务流程,部署架构等等,知己知彼,百战不殆

    为什么要搞清楚部署架构?在这里我分享下之前的一个真实案例,当场裂开的那种 🐜。

    项目对接开始,前期双方都紧锣旗鼓的对接、测试等等,各个环节都很顺利,于是乎在测试环境稳定一周左右后上线。

    上线之后的2-3天,突然的某一天,运营人员的一通电话☎️ 打破了祥和的假象!线上出现了很多重复的业务流水号⚠️。

    例如:

    正常情况数据应该是这样的:

    id 流水no 创建时间
    10378 QJ00073001 2020-12-18 12:10:11
    10379 QJ00073002 2020-12-18 12:10:11

    但是现场的情况是:

    id 流水no 创建时间
    10378 QJ00073001 2020-12-18 12:10:11
    10379 QJ00073001 2020-12-18 12:10:11

    存在重复的流水号:QJ00073001⚠️,当场我就裂开了,这TM测试环境跑了一周没事儿,正式环境都搞了2-3天了出现问题,趁事态没有扩大,各种排查,

    是不是线程安全问题啊?是不是第三方问题啊?这2天动了什么现场环境等等。

    很快我们就定位出问题来了,原来是昨天晚上,又对接了一个新的局点导致的,第三方服务部署架构是分级部署的。

    我们以为的对接:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OETL0Aaa-1608287514803)(D:\金金金\如何做好与第三方系统对接.assets\image-20201218152704948.png)]

    实际的对接:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3kBmQL7f-1608287514805)(D:\金金金\如何做好与第三方系统对接.assets\image-20201218153047398.png)]

    第三方的部署架构是每个局点单独部署一套服务,所以他们那边的流水号都是从1开始的,导致我们直接拿流水号来用的时候裂开了。

    处理方式也很简单,流水号加上局点code即可,例如:HW31QJ00073001HW89QJ00073001

    Why 为什么

    为什么要对接第三方系统?

    比如我们经常对接支付宝、微信平台,你不可能自己开发个支付系统的,再说了支付宝和微信支付的用户也多,方便你我他,可以让我们更专注自己的业务开发。

    再比如对接短信平台快递鸟平台等等。

    总结下:基本上都是自己公司想做一件事情,但是自己又没有足够的物力、财力、精力去实现,那么就去找市面上有成熟的解决方案,把专业的活交给专业的人,来以最小化的成本实现我们的需求。

    How 怎么做

    这里我们再以对接前对接中对接后这3个阶段,来分阶段讨论下每个阶段应该怎么做,才能稳步推进我们的对接需求。

    对接前

    • 明确需求,以及对接的价值(是否真的有必要做及其实现的意义,有可能这一步直接让对接流产✋。。。)

    • 搞清楚我们跟第三方的大致交互流程和双方所需数据。(别鸡蛋里面找骨头,他也找不到啊,你要我没有的数据,我可怎么提供)

    • 评估大概所需要花费的钱,毕竟跟别人对接,大部分情况下是花钱的。(花的钱太多有可能得不偿失)

    • 确定双方相关业务负责人、技术负责人,以及要指定一个总负责任人来推动双方稳步前进(别双方都是放羊模式)

    • 制定一个合理的计划,确定联调时间、上线时间、试运行时间(一定要制定合理的计划)

    对接中

    1. 确定细节

    拉上双方业务人员、技术负责人,共同制定接口调用流程,画出接口调用流程图、泳道图、时序图等,毕竟一图胜千言。

    这里一定要拉上真正熟悉业务和技术的人去沟通,别找中间人去传话了,也别找不懂的人去,否则在这一步,坑就已经开始挖了。

    泳道图示例:

    泳道图很清晰的能看到对接双方交互流程,职责划分清晰

    在这里插入图片描述

    时序图示例:

    时序图能清晰看到消息传递的时间顺序。

    在这里插入图片描述

    下面的关键细节我列一下:

    关键细节 事项 备注
    字段内容 双方确定需要提供什么字段、需要获取哪些字段
    接口版本 接口版本规范,url中 /v1/xxx,还是header中 verison=v1,以及协商版本具体规范细节
    大量数据 是分页返回,还是以文件的形式,例如csv等
    异常处理 定义错误码,以及其对应的相应操作,有什么兜底补偿方案没
    调用方式 主动拉取还是被动等待推送 建议双向即可主动式,又可被动式
    通信协议 Restful、Webservice、MQ、Websocket等,复杂的对接,是否可以考虑提供sdk 一般建议Restful
    报文协议 json、yaml、xml、自定义等 一般建议Json
    接口方式 同步接口还是异步接口
    接口安全 Oauth2.0 sign token等,注意内外网、以及业务的保密级别
    幂等性 确保双方接口是否都是幂等的,防止重复提交
    重试机制 一定要确认是否需要接口调用失败后的重试机制,保证数据传输的最终一致性
    重试机制包括 实时重试调用:指定次数 + 调用失败持久化,数据库定时任务重试
    接口文档 要有详尽的说明和丰富的示例代码
    联调环境 可以随便折腾的那种

    2. 一些建议

    • 文档先行,统一规范(双方按照文档来开发,统一规范)

    • 需要自己有对接模拟接口,防止三方公司接口迟迟未完成,影响整个项目进度

    • 第三方对接模块做成单独的服务最好独立出来,尽最大努力保证服务的高可用、稳定性。(不然你滴电话就要被打爆了☎️)

    • 接口升级,尽量做到影响最小,不去修改接口协议,如果必须要动,要做到接口兼容老版本。

    • 尽量保证接口的幂等性,因为会有重试机制和补偿方案;

    • 接口当中生成requestId,用于日志记录,到返回结果的全流程跟踪,接口接收到的数据,以及解析之后的参数值,都要用日志记录下来,方便查看原因。

    • 编码推荐使用注解式声明编程 Feign

    举个例子把第三方对接模块做成单独服务的好处、以及做好对外服务降级操作(业务逻辑降级)

    之前项目中有个需求,需要对接一个厂商的服务,大致流程是调用一个实时接口,输入身份证号,返回这个身份证号关联人的最新的所有的档案信息。

    第一阶段

    一开始我们是直接把对接代码写到我们业务系统的,这也很正常。

    第二阶段

    使用一段时间后,公司的另一个团队也需要对接这个厂商,那么现在是否也复制一份儿代码去对接呢?显然我们不会这么去做,第三方接口升级啥的,我们2个团队都要改,耦合性太强了,还有万一后面我们还有其他团队对接呢?不可能都用这种方式。

    所以我们的做法是把这个对接模块独立出来,做成一个单独的服务,供所有的团队使用,作为微服务的一部分

    架构如下图:
    在这里插入图片描述

    第三阶段

    平稳运行一段时候后,突然的某一天第三方服务厂商服务down掉了,导致我们这边所有相关的业务出现了类似“档案查询接口不可用”的提示。

    已经做了断路器、服务通用降级,返回提示信息“档案查询接口不可用

    虽然是第三方的问题,也有提示的降级操作,但是呢,用户体验还是不够友好,于是乎我们开会讨论更完美的方案,我们的需求是返回实时的个人档案信息

    但是如果当第三方服务down了,返回之前查询过的非实时数据,并给个不是最新的提示,也总比提示“档案查询接口不可用”要优雅的多。

    于是乎我们会在每个用户查询到档案后,自己本地数据库存一份,当第三方服务不可用的时候去降级到本地数据库查询使用

    架构如下图:

    在这里插入图片描述

    对接后

    持续跟踪一段时间系统的使用情况,然后进行总结,看看是否可以把这块对接流程规范化,做标准化接口,将自己的能力或者数据标准化出去,类似于开放平台,让别人按照你的标准来做。(那就乌鸦变凤凰了)

    最后我也总结下,之前遇到的风险点:

    对接风险

    • 对方不配合 (奶茶☕、香烟给安排上,还不行只能让上级去推动了)

    • 对接要从源头留痕,防止后面对方扯皮,要留证据。(拿证据说话)

    • 对方服务升级,接口变了,未通知升级。(接口版本号制定好,接口做到向下兼容)

    • 对方服务不稳定影响自有系统。(服务熔断、降级处理)

    • 调用并发频率过高等。(控制频率)

    总结与思考

    没有最完美的方案,只有尽可能完善的方案,就像系统可用性达不到100%一样,我们做的每一步都要想好失败的场景,以及相应的对应策略,做好降级处理,最终的兜里方案就是人肉补偿了✈️✈️✈️。


    QQ群【837324215
    关注我的公众号【Java大厂面试官】,回复:架构资源等关键词(更多关键词,关注后注意提示信息)获取更多免费资料。

    公众号也会持续输出高质量文章,和大家共同进步。

    展开全文
  • 实例-第三方接口签名加密

    千次阅读 2019-08-06 19:40:20
    title: 实例-第三方接口签名加密 date: 2019-08-06 19:...最近和第三方接口对接,接口涉及到了签名和加密,因此在这里总结一下。签名和加密涉及对称加密、非对称加密、SSL等概念,可以在其他文章中参考。这里只做...
  • C#对接银行接口总结

    2021-01-08 14:57:03
    在开发工作中,也对接了一些银行,第三方支付接口,今天总结一下。 一、对接分析 微信 支付宝 中国建设银行 中国银行 信合银行 中国农业银行 光大银行 1.微信 微信对接基本不用说,很流畅,遇到技术问题一般是...
  • 作为一名P2P小贷行业的产品经理,经常有外部系统进行接口对接的需求。P2P系统需要对接的外部系统主要有P2P返利网这些聚合型的理财平台,第三方支付平台,P2P行业信息门户网站等。而小贷业务系统主要对接的有P2P...
  • 现在社会都在将谈论“共享”,很多我们接触的APP中,要完成所有的业务流程多少都需要和第三方产品进行对接,使用第三方已完成的功能。举个简单的例子:现在几乎所有的APP注册都是使用手机号进行注册,为了验证手机号...
  • 第三方通信验证的方式

    千次阅读 2018-06-12 10:53:27
    在系统开发阶段,经常会遇到需要跟第三方对接接口,亦或者是需要直接嵌入第三方子系统的形式;这时候系统与系统之间的通信验证方式,就需要我们好好琢磨琢磨了。 以下总结以下小编遇到想到的验证方式:方式一: ...
  • 第一个,在生产环境运行时,往往涉及到第三方接口对接,数据的拉取推送,这时日志可以查看数据推送的情况以及排错,第二个是日志可以进行数据的备份,当数据发生意外的丢失的时候,可以通过日志恢复 ...
  • 软件接口测试

    2020-11-01 19:03:08
    1.接口测试:是测试系统组件间接口的一种测试,主要包括同一个系统中模块与模块间的接口/前后端接口,另一个是跨系统平台的对接(内部接口,外部接口)如第三方支付平台,短信验证码; 2.常见接口类型协议: HTTP...
  • 2019-11-04开发总结

    2019-11-04 09:52:57
    1.第三方支付对接 2.顺丰接口对接 3.完善开发流程 首先第三方支付接口的对接(小程序支付): 支付分为小程序支付支付回调,正常的流程就是获取支付信息(订单编号,支付金额,商户号等信息),开始支付,支付成功...
  • 关于参数签名的总结

    千次阅读 2017-04-18 11:54:40
    刚刚工作2~3年,我们搞java或是php(这里省略很多语言)开发年轻人,前几年开发的时候总会碰到一些和第三方对接的任务,例如第三方交易的支付宝、微信(心累,文档里面有很多排序和参数大小写错误的问题),再或是聊天...
  • 第三方接口对接,三方使用的xml数据格式,于是使用了JAXB做xmljava对象之间的转换。就是会封装好多数据结构相同的javabean比较麻烦,但是于考虑到转会成json的话嵌套的层数较多,取值容易出错,所以还是选择...
  • java web前端上传文件到后台常用的几种方式

    万次阅读 多人点赞 2018-06-30 21:42:07
     小编目前工作内容属于和第三方接口对接,突然调换到开发产品组,需要做一个拍照上传身份证照片到后台识别的功能。一个很简单的功能,当我做到需要上传图片到后台的时候,突然感觉对上传文件的思路很乱,不知该...
  • Java端视频截图

    2019-07-10 14:36:15
    和第三方对接接口真心累,而且现场摄像头还经常下线。。。。。。。 视频截取使用了插件:ffmpeg 这个是Windows端测试 实际环境是Linux,注意Linux版本:centOS和乌班图 安装ffmpeg: centOS:...
  • 由于系统需要和第三方系统进行对接,出于开发成本的考虑,双方协议系统间的交互不通过接口,而是互相操作数据库。这时就涉及到了双数据源以及双事务。这方面的资料百度出来的资料比较少,都是只有双数据源的资料,双...
  • APIJSONParser 第三方 APIJSON 解析器,将 JSON 动态解析成 SQL FfApiJson 用 JSON 格式直接生成 SQL,借鉴 APIJSON 支持多数据源 apijson-sample APIJSON 简单使用 Demo 及教程 apijson-examples APIJSON 的前端、...
  • 一文带你搞懂API网关

    2020-12-28 06:45:32
    当发生网络延迟、FullGC、第三方服务慢等情况造成上游服务延迟时,线程池很容易会被打满,造成新的请求被拒绝,但这个时候其实线程都阻塞在IO上,系统的资源被没有得到充分的利用。另外一点...
  • GoodProject Maven Webapp.zip

    2019-05-12 14:06:27
    5、场景对话的功能介绍:通过场景对话模块,开发者可快速搭建满足于不同场景下业务需求的多轮上下文对话,并实现对话式交互同自有产品业务、数据库以及第三方数据源的对接,实现产品服务体验升级。[2] 6、NLP知识库...
  • WebAPI 开放平台架构实践 导读 背景 需求 场景 架构设计 总结 ...随着业务的发展,越来越多不同系统之间需要数据...当然,有我们提供给外部系统(工具)的,也有我们调用第三方的。而这里重点讲一下我们对外的接口。 ...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
热门标签
关键字:

和第三方接口对接总结