Vault SDK - iOS 集成指南
简介
Mangopay Vault SDK 允许您安全地对最终用户的支付卡进行标记化,以便在您的应用程序中使用。标记化卡是卡的虚拟和安全版本,可用于支付。
强烈建议您使用 Mangopay Vault SDK,而不是直接集成 API 端点。通过这样做,您可以:
- 避免敏感的卡详细信息流经您的系统
- 享受 PCI-DSS 符合性
- 接收持续的支持和更新
要使用 Mangopay Vault SDK,您需要以下内容:
- 一个 Mangopay
ClientId
和 API 密钥 - 一个要注册卡的用(有关测试卡,请参阅 测试 - 支付方式)
- iOS 13+
- Xcode 12.2
- Swift 5.3+
安装
Swift Package Manager (推荐使用)
按照以下步骤将包集成到您的Xcode项目中:
- 打开您的Xcode项目,然后转到 File > Swift Packages > Add Package Dependency。
- 在弹出的对话框中,输入存储库URL https://github.com/Mangopay/mangopay-ios-vault-sdk。
- 通过勾选对应的复选框选择
MangoPayVault
包。 - 按照屏幕上的说明完成集成。
CocoaPod
打开您的 Podfile
文件并添加以下内容:
pod 'MangoPayVault'
在您的 Podfile
文件之前添加以下源
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Mangopay/mangopay-ios-vault-sdk'
运行安装命令
$pod install
创建卡注册
在您的后端,通过Mangopay API创建卡注册,使用终端用户的 Id
作为 UserId
。
在此阶段您还必须定义卡的货币和类型。
**POST** /v2.01/`ClientId`/cardregistrations{
"Tag": "Created with the Mangopay Vault SDK",
"UserId": "142036728",
"CardType": "CB_VISA_MASTERCARD",
"Currency": "EUR"
}
API响应
{
"Id": "193020188",
"Tag": null,
"CreationDate": 1686147148,
"UserId": "193020185",
"AccessKey": "1X0m87dmM2LiwFgxPLBJ",
"PreregistrationData": "XBDYiG8w9PrylPS01KmupZunmK2QRHKIC-yUF6il3aIpAnKba1TGkR9VJe5lHjHt2ddFLVXdicolcUIkv_kKEA",
"RegistrationData": null,
"CardId": null,
"CardType": "CB_VISA_MASTERCARD",
"CardRegistrationURL": "https://homologation-webpayment.payline.com/webpayment/getToken",
"ResultCode": null,
"ResultMessage": null,
"Currency": "EUR",
"Status": "CREATED"
}
响应中获取的数据将用于下面的 CardRegistration
。
初始化SDK
使用您的ClientId
初始化SDK并选择您的环境(沙盒或生产环境)。
MangoPayVault.initialize(clientId: clientId, environment: SANDBOX | PRODUCTION )
为令牌化提供数据
SDK需要以下信息来令牌化信用卡
- Mangopay API之前返回的卡注册数据(
CardRegistration
) - 用户在应用中输入的信用卡详细信息(
CardInfo
)(有关测试卡,请参阅测试 - 支付方式)
CardRegistration
属性 | 类型 | 描述 |
---|---|---|
id | 字符串 | 卡注册的唯一标识符。 |
accessKey | 字符串 | 令牌化卡时使用的安全值。 |
cardRegistrationURL | 字符串 | 将卡详情发送进行令牌化的URL。 |
preregistrationData | 字符串 | 传递给cardRegistrationURL的具体值。 |
let cardRegistration = CardRegistration(
id: id,
accessKey: accessKey,
preregistrationData: preregistrationData,
cardRegistrationURL: cardRegistrationURL,
)
CardInfo
属性 | 类型 | 描述 |
---|---|---|
cardNumber | 字符串 | 要令牌化的卡号码,不带任何分隔符。 |
cardExpirationDate | 字符串(格式:“MMYY”) | 卡的过期日期。 |
cardCvx | 字符串 | 卡验证码(在卡的背面,通常是3位数字)。 |
let cardInfo = CardInfo(
cardNumber: "4970107111111119",
cardExpirationDate: "1224",
cardCvx: "123"
)
卡号标记
您现在可以使用之前通过前端SDK获取的卡数据来标记卡号。
SDK会自动更新卡注册对象,为您提供可用来支付的CardId
。
tokenizeCard
MangoPayVault.tokenizeCard(
card: card,
cardRegistration: cardRegistration) { card, error in
guard let _ = card else {
self.showLoader(false)
self.showAlert(with: error?.localizedDescription ?? "", title: "Failed ❌")
return
}
self.showLoader(false)
self.showAlert(with: "", title: "Successful 🎉")
}
管理卡
您可以使用以下端点来管理卡:
制作卡片支付
制作支付需以下对象使用注册的卡(CardId
):
- 直接卡支付对象,用于一次性卡支付。
- 循环PayIn注册对象,用于循环信用卡支付
- 预授权对象,用于7天预授权信用卡支付
- 存款预授权对象,用于30天预授权信用卡支付