Authorize.Net Accept Mobile SDK for iOS
此 SDK 允许移动开发者在 iOS 应用程序内提供信用卡支付功能,而不必将敏感卡数据回传到其应用程序的后端服务器。有关在移动应用程序中包含支付的信息,请参阅我们的InApp Payments Guide
SDK 安装
CocoaPods
pod 'AuthorizeNetAccept'
手动安装
将 AcceptSDK.framework
包括在应用程序中。在 Xcode 中,选择目标的主项目文件。在项目属性中的“常规”部分,滚动到“已嵌入的二进制文件”,按下加号(+),并选择框架。
一旦包含在内,请确保在“构建设置”标签中的“搜索路径”部分,这些框架的路径被正确添加。
SDK 使用
初始化 SDK 并将数据直接发送到 Authorize.Net
let handler = AcceptSDKHandler(environment: AcceptSDKEnvironment.ENV_TEST)
let request = AcceptSDKRequest()
request.merchantAuthentication.name = kClientName
request.merchantAuthentication.clientKey = kClientKey
request.securePaymentContainerRequest.webCheckOutDataType.token.cardNumber = self.cardNumberBuffer
request.securePaymentContainerRequest.webCheckOutDataType.token.expirationMonth = self.cardExpirationMonth
request.securePaymentContainerRequest.webCheckOutDataType.token.expirationYear = self.cardExpirationYear
request.securePaymentContainerRequest.webCheckOutDataType.token.cardCode = self.cardVerificationCode
注册回调并调用 getTokenWithRequest
handler!.getTokenWithRequest(request, successHandler: { (inResponse:AcceptSDKTokenResponse) -> () in
dispatch_async(dispatch_get_main_queue(),{
self.updateTokenButton(true)
self.activityIndicatorAcceptSDKDemo.stopAnimating()
print("Token--->%@", inResponse.getOpaqueData().getDataValue())
var output = String(format: "Response: %@\nData Value: %@ \nDescription: %@", inResponse.getMessages().getResultCode(), inResponse.getOpaqueData().getDataValue(), inResponse.getOpaqueData().getDataDescriptor())
output = output + String(format: "\nMessage Code: %@\nMessage Text: %@", inResponse.getMessages().getMessages()[0].getCode(), inResponse.getMessages().getMessages()[0].getText())
self.textViewShowResults.text = output
self.textViewShowResults.textColor = UIColor.greenColor()
})
}) { (inError:AcceptSDKErrorResponse) -> () in
self.activityIndicatorAcceptSDKDemo.stopAnimating()
self.updateTokenButton(true)
let output = String(format: "Response: %@\nError code: %@\nError text: %@", inError.getMessages().getResultCode(), inError.getMessages().getMessages()[0].getCode(), inError.getMessages().getMessages()[0].getText())
self.textViewShowResults.text = output
self.textViewShowResults.textColor = UIColor.redColor()
print(output)
}
使用 "接受支付令牌" 创建交易请求
您的服务器使用 Authorize.Net API 构造交易请求,将先前步骤中接收到的加密支付信息放在 opaqueData 元素中。
{
"createTransactionRequest": {
"merchantAuthentication": {
"name": "YOUR_API_LOGIN_ID",
"transactionKey": "YOUR_TRANSACTION_KEY"
},
"refId": "123456",
"transactionRequest": {
"transactionType": "authCaptureTransaction",
"amount": "5",
"payment": {
"opaqueData": {
"dataDescriptor": "COMMON.ACCEPT.INAPP.PAYMENT",
"dataValue": "PAYMENT_NONCE_GOES_HERE"
}
}
}
}
}
从 Objective-C 使用
从 Objective-C 调用 SDK 应该简单直观
AcceptSDKHandler *handler = [[AcceptSDKHandler alloc] initWithEnvironment:AcceptSDKEnvironmentENV_TEST];
AcceptSDKRequest *request = [[AcceptSDKRequest alloc] init];
request.merchantAuthentication.name = @""; //name
request.merchantAuthentication.clientKey = @""; //clientkey
request.securePaymentContainerRequest.webCheckOutDataType.token.cardNumber = @""; //cardnumber
request.securePaymentContainerRequest.webCheckOutDataType.token.expirationMonth = @"";
request.securePaymentContainerRequest.webCheckOutDataType.token.expirationYear = @"";
request.securePaymentContainerRequest.webCheckOutDataType.token.cardCode = @"";
[handler getTokenWithRequest:request successHandler:^(AcceptSDKTokenResponse * _Nonnull token) {
NSLog(@"success %@", token.getOpaqueData.getDataValue);
} failureHandler:^(AcceptSDKErrorResponse * _Nonnull error) {
NSLog(@"failed... );
}];
示例应用程序
我们有一个示例应用程序,演示了 SDK 的使用
https://github.com/AuthorizeNet/accept-sample-ios
Apple In-App Purchase API
请记住,您必须使用 Apple 的 In-App Purchase API 来销售虚拟商品,例如应用的高级内容,以及数字内容的订阅。具体来说,Apple 的开发者条款要求使用 In-App Purchase API 用于数字“内容、功能或服务”,如高级功能或积分。有关更多详细信息,请参阅 https://developer.apple.com/app-store/review/guidelines/。