beGateway iOS框架
beGateway为iOS组件允许您接受应用内支付
示例
为了轻松了解其工作原理
- 请查看此仓库
- 在
Example
文件夹中打开终端 - 在xCode 10.3及以上版本中打开
begateway.xcworkspace
- 运行项目并通过预定义按钮执行一些操作
- 检查源代码
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 beGateway 集成到 Xcode 项目中,请在您的 Podfile
中指定它
pod 'begateway'
要求
- iOS 11.0+
- Xcode 10.3+
- Swift 5.0+
使用方法
导入SDK
import begateway
设置
初始化支付模块
let paymentModule = BeGateway.instance.setup(with: BeGatewayOptions(clientPubKey: "PUBLIC_STORE_KEY"))
您可以更改公钥
BeGateway.instance.options?.clientPubKey = "PUBLIC_STORE_KEY"
如果您想获取对象的当前实例
BeGateway.instance
获取令牌
创建BeGatewayRequest对象:您可以设置notification_url以获取支付状态信息
let request BeGatewayRequest(
// amount
amount: 100.0,
// currency
currency: "USD",
// description
requestDescription: "Test request",
// tracling id
trackingID: "1000000-1"
)
执行响应
BeGateway.instance.getToken(request: request, completionHandler: {token in
// token for other operation
}, failureHandler:{error in
// out error
print(error)
})
支付
使用信用卡开始支付
创建BeGatewayRequestCard对象
let card = BeGatewayRequestCard(
number: "2201382000000013",
verificationValue: "123",
expMonth: "02",
expYear: "23",
holder: "WRR",
cardToken: nil,
)
无令牌信用卡支付
BeGateway.instance.pay(
rootController: self,
request: BeGatewayRequest(
amount: 100.0,
currency: "USD",
requestDescription: "Test request",
trackingID: "1000000-1",
card: card
),
completionHandler: {
card in
// BeGatewayCard
print(card)
}, failureHandler: {error in
print(error)
})
使用卡令牌支付
self.card = BeGatewayRequestCard(
number: nil,
verificationValue: nil,
expMonth: nil,
expYear: nil,
holder: nil,
cardToken: "YourCardToken"
)
在后台使用卡令牌支付
if self.card?.cardToken != nil { // "YourCardToken"
BeGateway.instance.payByCardTokenInBackground( rootController: self, request: BeGatewayRequest(
amount: Double(self.valueTextField.text ?? "0.0") ?? 0.0,
currency: self.currencyTextField.text ?? "USD",
requestDescription: "Test request",
trackingID: "1000000-1",
card: self.card
), completionHandler: {
//Success handler
}, failureHandler: {error in
//Failure handler
})
}
If gateway return success you can use object BeGatewayCard
```swift
public struct BeGatewayCard {
public let createdAt: Date
public let first1, last4: String
public let brand: String?
}
Apple Pay
首先,您需要使用您的商户ID设置项目。之后,您应该将商户ID传递给BegatewayOptions。默认使用带输入的Apple Pay
options.merchantID = "merchant.org.cocoapods.demo.begateway-Example"
let _ = BeGateway.instance.setup(with: options)
let request = BeGatewayRequest(amount: Double(self.valueTextField.text ?? "0.0") ?? 0.0,
currency: self.currencyTextField.text?.uppercased() ?? "USD",
requestDescription: "Apple Pay test transaction",
trackingID: "1000000-1",
card: nil)
BeGateway.instance.payWithApplePay(requestBE: request, rootController: self) {
self.showSuccessAlert()
print("payment success without token")
} failureHandler: { error in
self.showFailureAlert(error: error)
print("---> error \(error)")
}
Apple Pay与TOKEN
BeGateway.instance.payWithAppleByToken(token: token, rootController: self) {
self.showSuccessAlert()
print("payment success with token")
} failureHandler: { error in
self.showFailureAlert(error: error)
print("---> error \(error)")
}
您可以使用TOKEN swift BeGateway.instance.payByToken(token: PAYMENTTOKEN,
card: CARD, rootController: self, completionHandler: { card in print(card) }, failureHandler: { error in print(error) })
Where PAYMENTTOKEN is a string value.
CARD - object of BeGatewayRequestCard instance.
Could be initiated with:
self.number = number - Card number
self.verificationValue = verificationValue - CVC Code
self.expYear = expYear - Year Expiration
self.expMonth = expMonth - Month Expiration
self.holder = holder - Card Holder Name
OR
self.cardToken = cardToken - For Card Token
If no previously saved card - empty object BeGatewayRequestCard() could be used.
### Other functions
#### Clear all saved `CARDS`
```swift
BeGateway.instance.removeAllCards()
自定义
您可以使用实例中的BeGatewayOptions
来自定义卡片表单视图,或者创建一个新的BeGatewayOptions对象并设置
let options = BeGatewayOptions();
BeGateway.instance.options = options
BeGatewayOptions
更新// title
BeGateway.instance.options?.title: String?
// font title
BeGateway.instance.options?.fontTitle: UIFont?
// color title
BeGateway.instance.options?.colorTitle: UIColor?
// title card number field
BeGateway.instance.options?.titleCardNumber: String = LocalizeString.localizeString(value:"Card number")
// hint card number field
BeGateway.instance.options?.hintCardNumber: String = LocalizeString.localizeString(value:"Card number")
// title card number field
BeGateway.instance.options?.cardNumber: String = LocalizeString.localizeString(value:"Card number")
// font for title card number
BeGateway.instance.options?.fontTitleCardNumber: UIFont?
// color for title card number
BeGateway.instance.options?.colorTitleCardNumber: UIColor?
// font for hint card number
BeGateway.instance.options?.fontHintCardNumber: UIFont?
// color for title card number
BeGateway.instance.options?.colorHintCardNumber: UIColor?
// font for text fields background color
BeGateway.instance.options?.textFieldBackgroundColor: UIColor?
// label expire date
BeGateway.instance.options?.titleExpiryDate: String = LocalizeString.localizeString(value:"Expiration date")
// hint expire date
BeGateway.instance.options?.hintExpiryDate: String = LocalizeString.localizeString(value:"Expiration date")
// title expire date
BeGateway.instance.options?.expiryDate: String = LocalizeString.localizeString(value:"Expiration date")
// font for title expire date
BeGateway.instance.options?.fontTitleExpiryDate: UIFont?
// color for title expire date
BeGateway.instance.options?.colorTitleExpiryDate: UIColor?
// hint for hint expire date
BeGateway.instance.options?.fontHintExpiryDate: UIFont?
// color for hint of expire date
BeGateway.instance.options?.colorHintExpiryDate: UIColor?
// label CVC
BeGateway.instance.options?.titleCVC: String = LocalizeString.localizeString(value:"CVC")
// hint CVC
BeGateway.instance.options?.hintCVC: String = LocalizeString.localizeString(value:"CVC")
// title CVC
BeGateway.instance.options?.cvc: String = LocalizeString.localizeString(value:"CVC")
// is secure mode for CVC field
BeGateway.instance.options?.isSecureCVC: Bool = false
// font fot title CVC
BeGateway.instance.options?.fontTitleCVC: UIFont?
// color for title CVC
BeGateway.instance.options?.colorTitleCVC: UIColor?
// font fot hint CVC
BeGateway.instance.options?.fontHintCVC: UIFont?
// color for hint CVC
BeGateway.instance.options?.colorHintCVC: UIColor?
// label for Card Holder Name
BeGateway.instance.options?.titleCardHolderName: String = LocalizeString.localizeString(value:"Name on card")
// hint for Card Holder Name
BeGateway.instance.options?.hintCardHolderName: String = LocalizeString.localizeString(value:"Name on card")
// title for Card Holder Name
BeGateway.instance.options?.cardHolderName: String = LocalizeString.localizeString(value:"Name on card")
// font title for Card Holder Name
BeGateway.instance.options?.fontTitleCardHolderName: UIFont?
// color title for for Card Holder Name
BeGateway.instance.options?.colorTitleCardHolderName: UIColor?
// font hint for Card Holder Name
BeGateway.instance.options?.fontHintCardHolderName: UIFont?
// color hint for Card Holder Name
BeGateway.instance.options?.colorHintCardHolderName: UIColor?
// button title
BeGateway.instance.options?.titleButton: String = LocalizeString.localizeString(value: "Pay")
// button text color
BeGateway.instance.options?.colorButton: UIColor?
// button font
BeGateway.instance.options?.fontButton: UIFont?
// button background color
BeGateway.instance.options?.backgroundColorButton: UIColor?
// toggle title
BeGateway.instance.options?.titleToggle: String = LocalizeString.localizeString(value:"Save card")
// error title
BeGateway.instance.options?.errorTitle: String = LocalizeString.localizeString(value:"Sorry, incorrect data")
// common text font
BeGateway.instance.options?.textFont: UIFont?
// common hint font
BeGateway.instance.options?.hintFont: UIFont?
// common text color
BeGateway.instance.options?.textColor: UIColor?
// common hint color
BeGateway.instance.options?.hintColor: UIColor?
// common background color
BeGateway.instance.options?.backgroundColor: UIColor = UIColor.clear
// turn on/off card number field
BeGateway.instance.options?.isToogleCardNumber: Bool = false
// turn on/off card exprire date field
BeGateway.instance.options?.isToogleExpiryDate: Bool = false
// turn on/off card CVC field
BeGateway.instance.options?.isToogleCVC: Bool = false
// turn on/off card holder name field
BeGateway.instance.options?.isToogleCardHolderName: Bool = false
// turn on/off card saved field
BeGateway.instance.options?.isToogleSaveCard: Bool = false
自定义主要选项
您可以更改模式从测试到生产
BeGateway.instance.options?.test = true
您可以更改语言
BeGateway.instance.options?.language = "en"
您可以更改响应之间的延迟
BeGateway.instance.options?.delayCheckingSec = 5
您可以更改等待响应支付网关的最大尝试次数
BeGateway.instance.options?.maxCheckingAttempts = 30
如果您想为卡使用加密模式
BeGateway.instance.options?.isEncryptedCreditCard = false
使用相机按钮
如果您想实现图像捕获,您需要重写方法
onDetachFromCamera: ((_ onSelected: ((BeGatewayRequestCard?) -> Void)?) -> Void)?
许可
beGateway SDK遵循MIT许可发布。有关详细信息,请参阅LICENSE。