支付与银行业线上客户协议应用中的DocuSign集成方式选择——SDK和API

本文涉及的产品
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 跨境支付公司和Docusign进行集成时,碰到问题时的解决方案。分别用SDK和API集成后的各自使用体验。

某跨境支付公司,专注于为中国跨境卖家提供低成本的跨境支付解决方案和定制金融服务。该公司业务遍及200多个国家和地区,是全球最大的跨境电商数字服务供应商之一。在全球设有多个分支机构,对于促进国际电子商务交易起着重要作用。他们为卖家提供跨境金融服务,同时需要在线上app上签署电子合同。

Docusign的嵌入式签署有着良好的客户体验,同时提供了极高的规范化和安全性要求,尤其是在客户数据处理和合规性方面。并且无论交易的数额庞大或普通,Docusign都提供了一致的信任和法律法规效力。这些都契合了该跨境支付公司的业务需求,故进行了引入使用。

随着跨境金融业务迅猛发展,他们引入了某外资商业银行进行合作,来提供更强大的后台服务,因他们在2022年就已经引入Docusign平台,并且使用反馈良好,故此次他们也推荐合作银行使用Docusign平台,用于此商业银行与他们的共同客户进行线上一站式签约。

在2022年时,这家跨境支付公司和Docusign的SDK进行集成时,有出现一个问题--JDK版本无法达到11,所以咨询了Support以后,得到以下答复:
image.png

经过公司内部讨论最终决定降级到Docusign版本。

根据业务需求,此商业银行公司最终也选择了Docusign的SDK集成方式,在测试过程中出现了一个NoSuchMethodError: org.glassfish.jersey.model.internal.CommonConfig.的错误。立刻咨询了Support,得到以下答复:

image.png

Support要求提供的资料繁琐并且来往信件时间花费很长,所以,我们直接开始排查这个问题。

首先排除客户下载的是否是Docusign完全依赖第三方的Shaded包。"Shaded" 在 Java 的上下文中通常指的是一种打包技术,用于创建包含项目所有依赖的 "uber-jar"(超级 jar 文件)。这种打包方式将项目的所有依赖项,包括所有必需的第三方库及其资源文件,全部打包到一个单独的 JAR 文件中。这样做的目的是为了避免类路径上的依赖冲突,简化部署流程,以及确保应用程序在运行时能够访问到其所有依赖。因为Shaded相对会比较大,所以第一时间确认了包的大小和版本。发现无错后,进一步去查看报错的报错栈。发现以下问题:
image.png

因为Docusign是基于jakarta的依赖,明明Shaded包里已经有,却没有引用到正确的版本,说明jar包冲突了,通过pom文件,依次发现两个包:

image.png
image.png

通过上图提示发现,jersey依赖的jakarta包与其公司的内部依赖jakarta包版本冲突,在考虑不影响其他项目,无法升级jakarta的前提下,给出两个建议:

1、降低Docusign的推荐版本

2、将SDK改成Rest API方式

为了方便客户全局考虑,我们针对这两种方式进行了对比,以帮助客户进行选择。

以下是SDK和REST API的使用体验比较:

1️⃣DocuSign SDK

定义: SDK是一组预打包的代码库和工具,旨在帮助开发者快速集成特定平台或服务。DocuSign SDK封装了对API的调用,提供了更简单的编程接口。优点:易用性: SDK通常包括示例代码、文档和其他资源,使得开发者更容易开始使用。快速开发: 由于SDK处理了很多底层细节,因此可以加速开发过程。更少的错误: 使用经过良好测试的SDK可以减少集成中的错误。缺点:灵活性有限: SDK可能不支持API的所有功能,限制了定制化的可能性。依赖性: 依赖特定的SDK可能会导致与特定语言或平台的强绑定。更新滞后: SDK的更新可能滞后于API的最新变化。

2️⃣DocuSign Rest API

定义: 建立不同软件应用程序之间的通信。DocuSign的Rest API允许直接与其服务进行交互,提供了更多的控制和灵活性。优点:灵活性和控制: 直接使用API可以访问所有的功能,允许更细致和定制化的集成。与技术更新同步: API通常会及时更新,反映出服务的最新变化。广泛的兼容性: API可以用于多种编程语言和平台。缺点:更复杂: 直接使用API可能需要更深入的技术知识和理解。开发时间更长: 需要手动处理更多细节,可能导致开发时间延长。错误风险更高: 直接与API交互增加了引入错误的可能性。

总之,选择SDK还是Rest API取决于你的具体需求、技术栈和资源。如果你需要快速开发和简化的集成流程,SDK可能是更好的选择。如果你需要更多的定制化和控制,直接使用API可能更合适。

需要特别强调的是:新版本(如4.5)通常包含在旧版本(如3.1)中不存在的附加功能、改进和错误修复。所以一旦以后出现错误或者是附加功能,都可能会被要求升级SDK来解决问题。另外DocuSign Support对于旧版本不提供技术支持。

目录
相关文章
|
1月前
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
64 1
|
1月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
如何让你的Uno Platform应用秒变AI大神?从零开始,轻松集成机器学习功能,让应用智能起来,用户惊呼太神奇!
【9月更文挑战第8天】随着技术的发展,人工智能与机器学习已融入日常生活,特别是在移动应用开发中。Uno Platform 是一个强大的框架,支持使用 C# 和 XAML 开发跨平台应用(涵盖 Windows、macOS、iOS、Android 和 Web)。本文探讨如何在 Uno Platform 中集成机器学习功能,通过示例代码展示从模型选择、训练到应用集成的全过程,并介绍如何利用 Onnx Runtime 等库实现在 Uno 平台上的模型运行,最终提升应用智能化水平和用户体验。
49 1
|
2月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
146 0
|
3月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
76 0
|
3月前
|
开发者 C# UED
WPF与多媒体:解锁音频视频播放新姿势——从界面设计到代码实践,全方位教你如何在WPF应用中集成流畅的多媒体功能
【8月更文挑战第31天】本文以随笔形式介绍了如何在WPF应用中集成音频和视频播放功能。通过使用MediaElement控件,开发者能轻松创建多媒体应用程序。文章详细展示了从创建WPF项目到设计UI及实现媒体控制逻辑的过程,并提供了完整的示例代码。此外,还介绍了如何添加进度条等额外功能以增强用户体验。希望本文能为WPF开发者提供实用的技术指导与灵感。
134 0
|
3月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
54 0
|
7天前
|
供应链 数据挖掘 API
电商API接口介绍——sku接口概述
商品SKU(Stock Keeping Unit)接口是电商API接口中的一种,专门用于获取商品的SKU信息。SKU是库存量单位,用于区分同一商品的不同规格、颜色、尺寸等属性。通过商品SKU接口,开发者可以获取商品的SKU列表、SKU属性、库存数量等详细信息。
|
8天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应