如何在本机移动应用程序(例如 IOS)上实施 3D 安全(Visa / MasterCard SecureCode 验证)

Posted

技术标签:

【中文标题】如何在本机移动应用程序(例如 IOS)上实施 3D 安全(Visa / MasterCard SecureCode 验证)【英文标题】:How to implement 3D Secure (Verified by Visa / MasterCard SecureCode) on Native mobile app (e.g. IOS) 【发布时间】:2013-10-19 00:48:14 【问题描述】:

此问题专门针对原生移动应用程序(例如,实际上并未使用浏览器访问网站的 iosandroid、WP 应用程序)。

我们有一个现有的电子商务网站,可以为大多数主要信用卡付款,它还通过 3DSecure 程序执行付款人身份验证(实施为 Visa 验证MasterCard SecureCode)。这有助于杜绝欺诈行为并减少退款。

现有的实施是这样的,在结帐和付款阶段,它涉及将客户从您的网站重定向到银行/发卡机构网站,客户可以在其中输入他们之前设置的密码来验证他们的身份确实是持卡人。然后,该网站会将客户重定向回您的网站,并提供完成交易所需的信息。 (还有很多内容,但这是它的基本前提)。

所以我们正在努力为 IOS(最初)创建一个 native 应用程序,它不仅仅是用户使用 Safari 浏览网站,而是一个提供丰富原生体验的 ObjectiveC 实现和以任务为中心的 UI,易于用户操作。

我们不能做的是从本机应用程序打开浏览器窗口,让用户重定向到某个地方,进行身份验证,然后重定向回来。原因如下:

这是本机应用程序,而不是网站,因此无处 (URL) 可重定向回。 在另一个网站上从干净的 UI 切换到斜视且样式不同的 Web 表单,然后再返回,用户体验非常糟糕。

是否有人必须尝试使用​​本机应用程序 (WP/IOS/Andriod) 实施 3D Secure (VbV / SecureCode)?可以做到吗?你采取了不同的方法吗?

感谢阅读!

【问题讨论】:

我们还没有这样做 - 所以这不是一个答案。目前,我们在概念阶段提出了类似的问题,我们未来的应用程序在 3D Secure 中的行为可能是什么。我只是想知道您的声明,即在您的本机应用程序中无处可重定向回。如果您要在您的应用程序中使用自定义 URL 方案 - 您是否可以在设备上没有重定向的地方?还是银行网站可能无法提供帮助? 【参考方案1】:

即使在本机应用程序中,您也应该使用嵌入式 WebView 组件打开银行 ACS 服务器 url,让用户在那里输入密码或其他代码,让银行对其进行验证,然后为您的应用程序取回结果以进一步转发到您的卡处理接口。

至于 Android,您可以在我的帮助程序类中查看它是如何完成的 - https://github.com/LivotovLabs/3DSView(在制作了几个支持 3D 安全的应用程序后,我决定为此类任务创建一个微组件)

希望对你有帮助

【讨论】:

尚未使用此功能,但计划在我们的项目高峰期试一试。粗略一看,看起来不错。 iOS 有这样的代码/库吗?我想在添加支付卡的同时将 3DS 集成到我的应用中.. 您好,我尝试使用 3DSView,但它似乎无法正常工作,它实际上加载了最终的回发 URL(例如,如果它的 google 加载了 google 页面)。有没有办法解决这个问题? 您似乎没有在开始该过程之前设置回发网址。请在 GitHub 上留下有关项目问题页面的更多详细信息,以便我能够提供帮助。 我已经设置了回发网址,尝试调试了一下,但由于某种原因,shouldOverrideUrlLoading() 从未被调用【参考方案2】:

由于糟糕的用户体验,我们与我们的收购方(Global Payments aka HSBC)做出了早期决定,即不在本地应用程序(甚至最终移动网站)上实施 3DS。我们在退款或用户方面没有遇到任何问题。您应该就此与您的收单机构以及您的支付网关谈谈 - 在我看来,您应该关闭移动原生/网络的 3DS,直到它被证明。否则客户将无法完成交易。

也就是说,像 Mopowered 这样的公司声称已经通过更好的实施解决了这个问题。我还没有看到这些。

【讨论】:

谢谢 - 这很有用。具体来说,客户端使用 VeriFone(以前的 CommIdea)的互联网处理网关解决方案。当我们进行最初的开发时,他们没有任何移动设备。会发现事情自那以后是否发生了变化。同意,我认为 3D-Secure 很烂,作为消费者,我更讨厌它。对于移动平台,我觉得一点都不好。它确实极大地改善了正常网络交易的欺诈和退款,所以就是这样。有没有人考虑过记录电话序列号/imsi/等。出于欺诈交易目的? 您是否与收单行达成了任何其他替代安排(即替代验证等),还是您只是继续不使用任何验证来防止退款纠纷?【参考方案3】:

您可以使用自定义 url-schemes 解决 3d 安全重定向问题。正如你所说,这不是一个好的用户体验,但我们在我们的 ios 项目中以这种方式解决了它。

【讨论】:

任何用于 3d 安全重定向的 alter net 解决方案 @ismail 你能提供一些相同的样本吗? @Ismail 您能否发布示例如何使用自定义 url 方案获得控制权?【参考方案4】:

正如其他人所提到的,购物者在本地身份验证期间的体验太差,无法考虑实施。

但是,通过introduction of 3D Secure 2.0,3D Secure 提供商将能够提供原生 SDK,以允许以更少的放弃率进行身份验证。

【讨论】:

以上是关于如何在本机移动应用程序(例如 IOS)上实施 3D 安全(Visa / MasterCard SecureCode 验证)的主要内容,如果未能解决你的问题,请参考以下文章

在单个CameraSource(Google移动视觉)中实施FaceDetector和TextRecognizer

如何在 Android 和 iPhone 的移动应用程序中实施推荐计划

需要有关在 GAE 上实施安全支付页面 (HTTPS) 的想法(使用 Stripe)

如何在移动 android/iOs(本机应用程序)中关闭 webview

使用 AWS 弹性 beanstalk 负载均衡器在 Rails 上实施 https 连接

如何从 iOS 上的本机 Facebook 应用程序在 Safari 中打开移动 webapp 链接?