Adyen3DS2 2.4.2

Adyen3DS2 2.4.2

mohamedeJoost van DijkRobert 维护。



Adyen3DS2 2.4.2

  • Adyen

3DS2 iOS SDK

使用此 SDK,您可以通过 Adyen 接收 3D Secure 2.0 支付。

安装

SDK 通过 CocoaPodsCarthage 或手动安装提供。

CocoaPods

  1. pod 'Adyen3DS2' 添加到您的 Podfile 中。
  2. 运行 pod install

Carthage

  1. github "adyen/adyen-3ds2-ios" 添加到您的 Cartfile 中。
  2. 运行 carthage update
  3. 按照Carthage Readme中的描述,将框架与您的目标联系起来。

动态 xcFramework

将动态的XCFramework/Dynamic/Adyen3DS2.xcframework拖动到您的通用目标设置中的“框架、库和嵌入式内容”部分。当询问时,选择“如果有必要则复制项”。

静态 xcFramework

  1. 将静态的XCFramework/Static/Adyen3DS2.xcframework拖动到您的通用目标设置中的“框架、库和嵌入式内容”部分。
  2. 确保静态的Adyen3DS2.xcframework没有嵌入。
  3. Adyen3DS2.xcframework内选择Adyen3DS2.bundle,选择“如果有必要则复制项”,然后选择“添加”。

Swift Package Manager

  1. 按照Apple的添加应用包依赖关系指南,了解如何添加Swift包依赖关系。
  2. https://github.com/Adyen/adyen-3ds2-ios作为存储库URL。
  3. 指定版本至少为2.2.1

⚠️ 请确保在添加Adyen3DS2时使用Xcode 12.0+。

⚠️ Swift Package Manager在Xcode 12.0和12.1时存在关于导入二进制依赖项的已知问题。解决方案可在此处找到这里

使用方法

创建交易

首先,使用从 /authorise 调用中检索到的附加数据创建一个 ADYServiceParameters 实例。然后,使用 ADYService 的类方法创建一个新的服务。该服务可用于创建新交易。

ADYServiceParameters *parameters = [ADYServiceParameters new];
[parameters setDirectoryServerIdentifier:...]; // Retrieved from Adyen.
[parameters setDirectoryServerPublicKey:...]; // Retrieved from Adyen.
[parameters setDirectoryServerRootCertificates:...]; // Retrieved from Adyen.

[ADYService serviceWithParameters:parameters appearanceConfiguration:nil completionHandler:^(ADYService *service) {
    NSError *error = nil;
    ADYTransaction *transaction = [service transactionWithMessageVersion:@"2.1.0" error:&error];
    if (transaction) {
        ADYAuthenticationRequestParameters *authenticationRequestParameters = [transaction authenticationRequestParameters];
        // Submit the authenticationRequestParameters to /authorise3ds2.
    } else {
        // An error occurred.
    }
}];

在调用 /authorise3ds2 时,使用 transactionauthenticationRequestParameters

⚠️ [ADYService transactionWithMessageVersion:error:] 需要传递消息版本,请填写与 AReq 相同的消息版本,您应该能够从支付时 3DS 服务器的响应中获得确定的消息版本,如果您使用 Adyen 3DS 服务器,请参阅 文档

⚠️ 在交易完成之前,请保持对 ADYTransaction 实例的引用。

⚠️ 如果您的应用程序支持 Mac catalyst 或 iPad OS 多窗口/多场景,则建议在购物者在一个窗口上开始交易并在交易进行中切换到另一个窗口的情况下,在场景之间共享 ADYTransaction/ADYService 对象。

执行挑战

如果在发生挑战的情况下,请使用从 /authorise3ds2 调用中检索到的附加数据创建一个 ADYChallengeParameters 实例。

NSDictionary *additionalData = ...; // Retrieved from Adyen.
ADYChallengeParameters *parameters = [ADYChallengeParameters challengeParametersWithServerTransactionIdentifier:additionalData[@"threeds2.threeDS2ResponseData.threeDSServerTransID"]
                                                                                         threeDSRequestorAppURL:[NSURL URLWithString:@"{YOUR_CUSTOM_APP_URL}"] // Or nil if for example you're using protocol version 2.1.0
                                                                                       ACSTransactionIdentifier:additionalData[@"threeds2.threeDS2ResponseData.acsTransID"]
                                                                                             ACSReferenceNumber:additionalData[@"threeds2.threeDS2ResponseData.acsReferenceNumber"]
                                                                                               ACSSignedContent:additionalData[@"threeds2.threeDS2ResponseData.acsSignedContent"]];

⚠️ 由于最近对 3D Secure 协议的更新,我们强烈建议您提供 threeDSRequestorAppURL 参数作为 通用链接

使用这些挑战参数使用您之前创建的 transaction 执行挑战。

[transaction performChallengeWithParameters:parameters completionHandler:^(ADYChallengeResult *result, NSError *error) {
    if (result) {
        NSString *transactionStatus = [result transactionStatus];
        // Submit the transactionStatus to /authorise3ds2.
    } else {
        // An error occurred.
    }
}];

当挑战成功完成时,在您的第二次调用 /authorise3ds2 中的 result 中提交 transactionStatus

自定义 UI

该SDK提供了一些自定义选项,以确保挑战流程的UI符合您应用的视觉风格。这些自定义选项通过ADYAppearanceConfiguration类提供。要使用它们,请创建一个ADYAppearanceConfiguration实例,配置所需的属性,并在ADYService初始化过程中传递它。

例如,为了使继续按钮变为红色并更改其圆角半径

ADYAppearanceConfiguration *appearanceConfiguration = [ADYAppearanceConfiguration new];
[[appearanceConfiguration buttonAppearanceForType:ADYAppearanceButtonTypeContinue] setBackgroundColor:[UIColor redColor]];
[[appearanceConfiguration buttonAppearanceForType:ADYAppearanceButtonTypeContinue] setTextColor:[UIColor whiteColor]];
[[appearanceConfiguration buttonAppearanceForType:ADYAppearanceButtonTypeContinue] setCornerRadius:3.0f];

[ADYService serviceWithParameters:parameters appearanceConfiguration:appearanceConfiguration completionHandler:...];

获取SDK版本

如果您想获取当前使用的SDK版本——例如,要发送到/authorise端点,您可以使用以下方法获取:

NSString* threeDS2SDKVersion = ADY3DS2SDKVersion();
let threeDS2SDKVersion = ADY3DS2SDKVersion()

参阅

许可协议

本SDK遵循Apache许可证第2.0版提供。有关更多信息,请参阅许可证文件