3DS2 iOS SDK
使用此 SDK,您可以通过 Adyen 接收 3D Secure 2.0 支付。
安装
SDK 通过 CocoaPods、Carthage 或手动安装提供。
CocoaPods
- 将
pod 'Adyen3DS2'
添加到您的Podfile
中。 - 运行
pod install
。
Carthage
- 将
github "adyen/adyen-3ds2-ios"
添加到您的Cartfile
中。 - 运行
carthage update
。 - 按照Carthage Readme中的描述,将框架与您的目标联系起来。
动态 xcFramework
将动态的XCFramework/Dynamic/Adyen3DS2.xcframework
拖动到您的通用目标设置中的“框架、库和嵌入式内容”部分。当询问时,选择“如果有必要则复制项”。
静态 xcFramework
- 将静态的
XCFramework/Static/Adyen3DS2.xcframework
拖动到您的通用目标设置中的“框架、库和嵌入式内容”部分。 - 确保静态的
Adyen3DS2.xcframework
没有嵌入。 - 在
Adyen3DS2.xcframework
内选择Adyen3DS2.bundle
,选择“如果有必要则复制项”,然后选择“添加”。
Swift Package Manager
- 按照Apple的添加应用包依赖关系指南,了解如何添加Swift包依赖关系。
- 将
https://github.com/Adyen/adyen-3ds2-ios
作为存储库URL。 - 指定版本至少为
2.2.1
。
Adyen3DS2
时使用Xcode 12.0+。
使用方法
创建交易
首先,使用从 /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
时,使用 transaction
的 authenticationRequestParameters
。
[ADYService transactionWithMessageVersion:error:]
需要传递消息版本,请填写与 AReq 相同的消息版本,您应该能够从支付时 3DS 服务器的响应中获得确定的消息版本,如果您使用 Adyen 3DS 服务器,请参阅 文档。
ADYTransaction
实例的引用。
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"]];
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版提供。有关更多信息,请参阅许可证文件。