在使用 3DS 2.0 验证 (3DS2) 验证银行卡支付时,Stripe 通过 Stripe.js 以及 iOS 和 Android SDK 收集有关客户设备的特定信息。按照 3DS2 协议要求,这些信息将与卡组织和发卡行共享,以帮助他们识别来自同一设备的重复支付,并评估交易的整体风险。
虽然 3DS2 协议要求收集超过 150 个数据元素,但 Stripe 仅收集如下少数元素,以保护用户隐私:核心 ID 和环境信息,我们认为这些元素足以对发卡行进行风险分析。
在网页上,Stripe.js 从浏览器收集以下信息:
IP 地址
用户代理
浏览器语言
系统时区
屏幕尺寸和颜色深度
作为 3DS2 中引入的指纹步骤的一部分,Stripe.js 可能会向发卡行打开一个隐藏的 iframe,允许该发卡行运行其自己专有的指纹脚本。(我们知道,随着浏览器实现双密钥存储,这种指纹方法将变得无效;我们正在与 W3C 和卡组织合作,以开发一种保护隐私的替代方案。)
对于应用内支付,iOS 和 Android SDK 会收集以下信息:
特定于应用的设备 ID:iOS 上的 identifierForVendor,Android 上的 ANDROID_ID。(注意:在 Android 8.0 之前安装的应用将观察全局 ANDROID_ID,而不是特定于应用的值。)
设备型号
操作系统版本
系统语言、国家/地区和时区
屏幕尺寸
此外,3DS 2.0 验证规范引用了许多 iOS 和 Android SDK 不会收集的数据元素。
为确保您的应用符合 App Store 和 Play Store 政策,iOS 和 Android SDK 不会收集广告 ID。
iOS 和 Android SDK 不会收集位置数据。
除上述信息外,iOS 和 Android SDK 不会收集硬件标识符(IMEI、MAC 地址)或用户首选项(振动模式设置、已安装应用列表)。平台提供商正在逐步停止对这类信息的访问,我们认为这些数据不会显著改善风险决策。
iOS 和 Android SDK 使用卡组织持有的密钥加密设备信息。Stripe 的服务器无权访问这些数据。
注意:iOS 和 Android SDK 根据 PCI 3DS 要求执行基本检查以检测已 root 的设备,并且仅将表示检查成功还是失败的布尔值传输到服务器。此外,根据 PCI 3DS 要求,3DS2 中涉及的 Android SDK 组件使用 ProGuard 进行混淆处理。
3DS 验证设备信息在确认 PaymentIntent 或 SetupIntent 后收集(即当您调用 confirmCardPayment 或等效函数时),通常是在客户点击支付页面上的“支付”按钮后。
收集设备信息是 3DS 2.0 验证协议规定的程序,且仅在支付过程中触发。它不受 advancedFraudSignals 参数的影响。
如果您对 Stripe.js 收集的设备信息以及 iOS 和 Android SDK 有任何反馈,请联系 Stripe 支持。
欲了解有关对定期付款处理 3DS 验证的信息,请按照我们文档中的 Stripe Billing 指南执行操作。
有关对一次性付款处理 3DS 验证的指导,请参阅我们的银行卡身份验证与 3DS 验证指南。