Pikassa SDK
接入依赖关系
- 安装 CocoaPods
gem install cocoapods
- 创建 Podfile 文件
CocoaPods 提供了
pod init
命令,用于创建带有默认设置的 Podfile。
- 在 Podfile 中添加依赖关系
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!
target 'Your Target Name' do
pod 'PikassaSDK',
:git => 'https://github.com/pikassa-payments/pikassa-sdk-ios.git',
:tag => 'tag'
end
Your Target Name
- Xcode 中您的应用程序的靶目标名称。
tag
- SDK 版本。您可以在 GitHub 的 releases 部分找到最新的版本。
- 运行
pod install
命令
示例用法
通过 Pikassa
对象操作库,该对象提供两种方法:setup(), sendPaymentData()
。
- 首先需要调用
setup
方法
Pikassa.setup("your_api_key")
其中,"your_api_key"
- API 访问密钥。
- 初始化后,可以调用发送数据的方法
func sendPaymentData(
method: PaymentMethods,
invoiceId: String,
didSuccessBlock: ((PayResponse) -> Void)?,
didFailBlock: ((Error) -> Void)?)
其中,method
- 支持的付费方式之一(如下所述)invoiceId
- 支付账单编号 didSuccessBlock
- 成功传输卡片数据,成功时从服务器返回信息(PayResponse
),didFailBlock
- 传输数据时出错,返回标准错误(Error
)。
- 目前支持两种付费方法 - 使用银行卡(带有
BankCardDetails
已准备的结构)和自定义字段
public enum PaymentMethods {
case bankCard(details: BankCardDetails)
case custom(details: [String: String])
}
BankCardDetails
字段描述pan
- 卡号cardHolder
- 卡主;expYear
- 卡片到期年份(格式 "YY");expMonth
- 卡片到期月份(格式 "mm");cvc
- 翻面代码(3 位数字);
示例调用
let cardDetails: BankCardDetails = BankCardDetails(
pan: "4444 4444 4444 4444",
cardHolder: "CARD HOLDER",
cvc: "999",
expYear: "2024",
expMonth: "11")
Pikassa.sendPaymentData(
method: PaymentMethods.bankCard(details: cardDetails),
invoiceId: "<invoice id>",
didSuccessBlock: { ... },
didFailBlock: { ... })
- 对于调用具有自定义字段的支付数据传输,必须在传递的字典中存在 "paymentMethod" 参数
Pikassa.sendPaymentData(
method: PaymentMethods.custom([ "paymentMethod": "Mobile", "phone" : "+79999999999"]),
invoiceId: "<invoice id>",
didSuccessBlock: { ... },
didFailBlock: { ... })
- 在成功执行数据发送后,
didSuccessBlock
会收到PayResponse
响应,其结构如下
public struct PayResponse: Decodable {
public let uuid: String
public let requestId: String
public let redirect: Redirect?
}
uuid - 支付标识符;requestId - 请求标识符;redirect - 用户跳转链接。例如,对于信用卡,可能需要将用户跳转到3DS输入码的页面。如果支付不需要身份验证,则可能为零。如果该字段非零,则结构如下
public struct Redirect: Decodable {
public let url: String
public let method: String //метод оплаты
public let params: [[String: String]] //дополнительные возвращаемые параметры
}
此处的主要参数是url,其中包含确认支付需要跳转的跳转链接。
- 如果送出数据失败,则会在didFailBlock中接收到标准的错误接口Error。
如果它导致PikassaError类,那么错误原因可以通过code字段(可能的错误码)来确定
在其他情况下,也按常规系统错误处理(例如,对于网络错误,引发NSError并将domain与NSURLErrorDomain比较)