ClickPay SDK
ClickPay SDK 通过提供现成的付款屏幕,极大地简化了与 ClickPay 支付网关的集成,该屏幕处理卡详情输入、账单和发货信息以及完成缺失的详细信息。
功能
- SDK 提供了一个现成的卡支付屏幕。
- 卡扫描器 快速轻松输入卡信息(iOS 13.0+)。
- 处理账单和发货信息所需的缺失详情。
- 标志、颜色和字体变得易于自定义。
- 支持 Apple Pay。
- 由于我们移除了所有第三方依赖,SDK 的大小变得非常轻巧。
- 支持暗黑模式。
要求
- iOS 10.0+
- Xcode 10.0+
- 创建一个ClickPay商户账户,与您的国家相关。
安装
CocoaPods
CocoaPods是一个 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问其网站。要使用 CocoaPods 将 ClickPay SDK 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod 'ClickPay', '~> 6.4.4'
Carthage
Carthage 是一个去中心化的依赖管理器,它构建依赖并为您提供二进制框架。要使用 Carthage 将 ClickPay SDK 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "clickpaysa/clickpay-ios-library-sample" ~> 6.4.4
Swift Package Manager
Swift Package Manager 是一个用于自动化 Swift 代码分发的工具,并集成到 swift 编译器中。
一旦您的 Swift 包设置完成,将 ClickPaySDK 作为依赖项添加到您的 Package.swift 中的依赖项值就像将其添加到依赖项一样简单。
dependencies: [
.package(url: "https://github.com/clickpaysa/clickpay-ios-library-sample.git", .upToNextMajor(from: "6.3.2"))
]
用户手册
按照以下步骤操作
- 下载 框架。
- 在您的
Target
的通用
部分导航。 - 将
PaymentSDK.xcframework
文件拖至框架、库和嵌入内容
部分。
前提条件
在开始与ClickPay SDK集成之前,您应检查以下前提条件
- 为使 卡片扫描器 获取对摄像头的访问权限,您应将以下键和值添加到您的应用程序
info.plist
文件中。
<key>NSCameraUsageDescription</key>
<string>Write here your message to the user</string>
使用方法
在您的代码中导入 PaymentSDK
import PaymentSDK
使用卡片支付
- 配置账单和运输信息,运输信息是可选的
let billingDetails = PaymentSDKBillingDetails(name: "John Smith",
email: "[email protected]",
phone: "+96611111111",
addressLine: "address",
city: "Dubai",
state: "Dubai",
countryCode: "ae", // ISO alpha 2
zip: "12345")
let shippingDetails = PaymentSDKShippingDetails(name: "John Smith",
email: "[email protected]",
phone: "+96611111111",
addressLine: "address",
city: "Dubai",
state: "Dubai",
countryCode: "ae", // ISO alpha 2
zip: "12345")
- 创建
PaymentSDKConfiguration
对象,并用您的凭据和支付详细信息填充它。
let configuration = PaymentSDKConfiguration(profileID: "profile id",
serverKey: "server key",
clientKey: "client key",
currency: "SAR",
amount: 5.0,
merchantCountryCode: "SA")
.cartDescription("Flowers")
.cartID("1234")
.screenTitle("Pay with Card")
.billingDetails(billingDetails)
- 现在您已准备好开始支付并处理
PaymentManagerDelegate
- 对于普通卡片支付使用
PaymentManager.startCardPayment(on: self,
configuration: configuration,
delegate: self)
-
对于标记化支付使用
PaymentManager.startTokenizedCardPayment(on: self, configuration: configuration, token: *token*, transactionRef: *transactionReference* delegate: self)
-
对于启用3DS功能的标记化支付(请求CVV)使用
PaymentManager.start3DSecureTokenizedCardPayment(on: self, configuration: configuration, savedCardInfo: SavedCardInfo, token: *token* delegate: self)
-
对于能够让SDK为您保存卡片并显示用于用户选择的卡片列表的支付使用
PaymentManager.startPaymentWithSavedCards(on: self, configuration: configuration, support3DS: true, delegate: self)
使用Apple Pay支付
-
按照配置Apple Pay的步骤进行操作,了解如何使用ClickPay配置ApplePay。
-
虽然可以忽略账单及配送详情,但Apple Pay会处理这些信息,同时您必须传递商户名称和商户标识符参数,请从《使用卡支付》步骤1和2开始执行。
let configuration = PaymentSDKConfiguration(profileID: profileID,
serverKey: serverKey,
clientKey: clientKey,
currency: "SAR",
amount: 5.0,
merchantCountryCode: "SA")
.cartDescription("Flowers")
.cartID("1234")
.screenTitle("Pay with Card")
.merchantName("Flowers Store")
.merchantAppleBundleID("merchant.com.bundleID")
.simplifyApplePayValidation(true)
-
为了强制对所有用户的账单信息进行ApplePay验证,请在配置中传递含有true的forceApplePayValidation参数。
-
调用
startApplePayPayment
开始支付
PaymentManager.startApplePayPayment(on: self,
configuration: configuration,
delegate: self)
使用其他支付方式支付
与STCPay等其他支付方式集成变得简单,从而服务于更多客户。
- 执行《使用卡支付》步骤1和2
- 选择您想要支持的支付方式之一或多个
configuration.alternativePaymentMethods = [.stcPay]
- 调用
startAlternativePaymentMethod
开始支付
PaymentManager.startAlternativePaymentMethod(on: self,
configuration: configuration,
delegate: self)
委托
在这里您将收到交易详情和错误信息。
extension ViewController: PaymentManagerDelegate {
func paymentManager(didFinishTransaction transactionDetails: PaymentSDKTransactionDetails?, error: Error?) {
if let transactionDetails = transactionDetails {
print("Response Code: " + (transactionDetails.paymentResult?.responseCode ?? ""))
print("Result: " + (transactionDetails.paymentResult?.responseMessage ?? ""))
print("Token: " + (transactionDetails.token ?? ""))
print("Transaction Reference: " + (transactionDetails.transactionReference ?? ""))
print("Transaction Time: " + (transactionDetails.paymentResult?.transactionTime ?? "" ))
} else if let error = error {
// Handle errors
}
}
}
令牌化
启用标记化,请按照以下说明操作。
- 请求令牌
configuration.tokeniseType = .userOptinoal // read more about the tokeniseType in the enums section
configuration.tokenFormat = .hex32 // read more about the tokenFormat in the enums section
传递这些参数后,您将在代理中收到令牌和交易参考,请保存以供将来使用。
- 传递令牌和交易参考
configuration.token = token
configuration.transactionReference = transactionreference
主题
使用以下指南,通过配置主题并将它传递给支付配置来自定义颜色、字体和徽标。
本地化
您可以使用下面的字符串文件复制键并将其添加到应用程序的可本地化文件中,然后用您的值覆盖。
枚举
这些枚举可以帮助您自定义配置。
- 标记化类型
默认类型为无
public enum TokeniseType: Int, Codable {
case none // tokenise is off
case merchantMandatory // tokenise is forced
case userMandatory // tokenise is forced as per user approval
case userOptinoal // tokenise if optional as per user approval
}
- 标记格式
默认格式为hex32
public enum TokenFormat: String {
case none = "1"
case hex32 = "2"
case alphaNum20 = "3"
case digit22 = "4"
case digit16 = "5"
case alphaNum32 = "6"
}
- 事务类型
默认类型为销售
public enum TransactionType: String, CaseIterable {
case sale
case authorize = "auth"
}
configuration.transactionType = .sale
- 其他支付方式
public enum AlternativePaymentMethod: String {
case stcPay = "stcpay"
}
configuration.transactionType = .sale
演示应用程序
查看我们的完整示例。
许可
见 LICENSE。