Pay Theory iOS SDK
要求
使用 SwiftUI 编写,需要 iOS 14 以支持应用程序验证
注册应用程序
在您使用 Pay Theory iOS SDK 之前,您必须在其商户门户中注册您的应用程序
对于每个想要注册的移动应用程序
- 输入您应用程序的 bundle 标识符
- 输入相关的 Apple Team ID
安装
PayTheory 通过 CocoaPods 提供。要安装它,请在 Podfile 中添加以下行
pod 'PayTheory'
在视图顶部导入 PayTheory
import PayTheory
使用方法
初始化用于处理状态的PayTheory元素。它接受以下参数。
- apiKey:您的PayTheory商户API密钥
- tags:可选的自定义标签,可用于跟踪购买
- environment:告诉SDK是否应由演示环境或生产环境工作(.DEMO 或 .PROD)。默认为< strengthens>DEMO
- fee_mode:可选地设置费用模式。默认使用.SURCHARGE模式。当Pay Theory启用时,可用的< strong>.SERVICE_FEE模式。在< strong>.SURCHARGE模式下,会将2.9% + $0.30的费用从原始金额中扣除;在< strong>.SERVICE FEE模式下,基于预定参数计算费用,并将其添加到原始金额中。
let apiKey = 'your-api-key'
let tags: [String: Any] = ["YOUR_TAG_KEY": "YOUR_TAG_VALUE"]
let pt = PayTheory(apiKey: apiKey, tags: tags, environment: .DEMO, fee_mode: .SURCHARGE)
PayTheory对象将要使用的视图内容需要用PTForm组件包装。您应该将PayTheory对象作为EnvironmentObject传递给PTForm。
let apiKey = 'your-api-key'
let tags: [String: Any] = ["YOUR_TAG_KEY": "YOUR_TAG_VALUE"]
let pt = PayTheory(apiKey: apiKey, tags: tags, environment: .DEMO, fee_mode: .SURCHARGE)
PTForm{
ContentView()
}.EnvironmentObject(pt)
信用卡文本字段
这些自定义文本字段将用于收集交易中的卡信息。
有三个必填文本字段用于捕获初始化卡交易所需的信息
- 信用卡号码
- 信用卡过期日
- 信用卡CVV
PTCardNumber()
PTExp()
PTCvv()
还有一些可选字段用于捕获账单地址和卡上姓名
- 信用卡姓名
- 信用卡地址行一
- 信用卡地址行二
- 信用卡城市
- 信用卡州
- 信用卡邮编
//Name on Card
PTCardName()
//Billing Address
PTCardLineOne()
PTCardLineTwo()
PTCardCity()
PTCardState()
PTCardZip()
ACH文本字段
这些自定义文本字段将用于收集交易中的ACH信息。
所有四个文本字段都是必需的,以捕获初始化ACH交易所需的信息
- ACH账户号码
- ACH账户类型
- ACH账户姓名
- ACH路由编号
PTAchAccountName()
PTAchAccountType()
PTAchAccountNumber()
PTAchRoutingNumber()
Pay Theory按钮
此按钮组件可初始化交易。在具有初始化交易所需的数据之前,它将处于禁用状态。它接受几个初始化支付所需的自定义参数。
- 金额:应向卡收取的付款金额(以分表示)
- 完成:处理调用结果的函数,返回一个字典 [String[Any] 或 失败响应
let amount = 1000
func completion(result: Result<[String: Any], FailureResponse>){
switch result {
case .success(let token):
...
case .failure(let error):
...
}
}
...
PTButton(amount: 5000, completion: completion)
扣款或取消授权
如果将 fee_mode 设置为 .SERVICE_FEE,则需要确认步骤。有可用的函数,用于在向用户显示服务费后确认或取消交易。捕获函数接受对响应的处理程序。要访问这些函数,请像以下那样将 PayTheory 对象作为环境变量引入。
@EnvironmentObject var pt: PayTheory
func captureCompletion(result: Result<[String:Any], FailureResponse>){
switch result {
case .success(let completion):
...
case .failure(let response):
...
}
}
//To capture the transaction
pt.capture(completion: captureCompletion)
//To cancel the transaction
pt.cancel()
令牌化响应
当收集到必要的信息且当 fee_mode 设置为 .SERVICE_FEE 时,令牌详细信息作为字典 [String: Any] 返回,其中包含以下信息
注意服务费包含在金额中
//Response for a card transaction
[
"receipt_number": "pt-env-XXXXXX",
"first_six": "XXXXXX",
"brand": "XXXXXXXXX",
"amount": 1000,
"convenience_fee": 195
]
//Response for an ACH transaction
[
"receipt_number": "pt-env-XXXXXX",
"last_four": "XXXX",
"amount": 1000,
"convenience_fee": 195
]
完成响应
一旦点击 PTButton 并将 service_fee 设置为 .SURCHARGE 或在令牌化后调用捕获函数,将返回一个包含以下信息的字典 [String: Any]
注意服务费包含在金额中
//Response for a card transaction
[
"receipt_number":"pt-env-XXXXXX",
"last_four": "XXXX",
"brand": "XXXXXXXXX",
"created_at":"YYYY-MM-DDTHH:MM:SS.ssZ",
"amount": 999,
"service_fee": 195,
"state":"SUCCEEDED",
"tags": ["pay-theory-environment":"env","pt-number":"pt-env-XXXXXX", "YOUR_TAG_KEY": "YOUR_TAG_VALUE"]
]
//Response for an ACH transaction
[
"receipt_number":"pt-env-XXXXXX",
"last_four": "XXXX",
"created_at":"YYYY-MM-DDTHH:MM:SS.ssZ",
"amount": 999,
"service_fee": 195,
"state":"SUCCEEDED",
"tags": ["pay-theory-environment":"env","pt-number":"pt-env-XXXXXX", "YOUR_TAG_KEY": "YOUR_TAG_VALUE"]
]
失败响应
如果在交易过程中发生失败或拒绝,将返回一个包含以下信息的 FailureResponse 对象
注意服务费包含在金额中
class FailureResponse {
var receipt_number: String
var last_four: String
var brand: String? //Will not include the brand if it is an ACH transaction
var state = "FAILURE"
var type: String
}
设置文本字段和按钮样式
要样式化文本字段和按钮,您可以将它们视为任何其他标准 SwiftUI 文本字段进行样式化。
struct TextField: ViewModifier {
func body(content: Content) -> some View {
content
.padding(15)
.font(Font.system(size: 15, weight: .medium, design: .serif))
.overlay(RoundedRectangle(cornerRadius: 10).stroke(Color.blue, lineWidth: 2))
}
}
extension View {
func textFieldStyle() -> some View {
self.modifier(TextField())
}
}
PTCardName().textFieldStyle()
PTCardNumber().textFieldStyle()
PTExp().textFieldStyle()
PTCvv().textFieldStyle()
作者
60404116, [email protected]
许可证
PayTheory 根据 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。