PayTheory 0.2.17-alpha.3

PayTheory 0.2.17-alpha.3

Austin ZaniAron Price 维护。



 
依赖项
Alamofire~> 5.2
Sodium~> 0.9.1
 

PayTheory 0.2.17-alpha.3

  • 作者
  • Pay Theory

Pay Theory iOS SDK

CI Status Version License Platform

要求

使用 SwiftUI 编写,需要 iOS 14 以支持应用程序验证

注册应用程序

在您使用 Pay Theory iOS SDK 之前,您必须在其商户门户中注册您的应用程序

App Registration

对于每个想要注册的移动应用程序

  • 输入您应用程序的 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 文件。