begateway 3.3.0

begateway 3.3.0

AlexanderIgor Tkach维护。



begateway 3.3.0

  • eComCharge

beGateway iOS框架

License Pod

beGateway为iOS组件允许您接受应用内支付

示例

为了轻松了解其工作原理

  1. 请查看此仓库
  2. Example文件夹中打开终端
  3. 在xCode 10.3及以上版本中打开begateway.xcworkspace
  4. 运行项目并通过预定义按钮执行一些操作
  5. 检查源代码

安装

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 PayTOKEN

            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