Сұрақтарыңыз бар болса, бір түймен біргеміз

Бізге хабарласу

Төлем SDK

SDK алу

iOS үшін төлемді SDK Github бетінде қолжетімді.

SDK жиынтығында екі класс пен бір делегат болады.

Жобаны iOS үшін реттеу

1. Жоба конфигурациясы

1.1 Жобаны жасау

Жобаны жасау

1.2. Target ішіндегі Main interface өрісін тазалау.

Бос өріс

1.3 AppDelegate.swift бөлімінде ViewController басты бет ретінде көрсету.

//AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate {

  var window: UIWindow?

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    window = UIWindow(frame: UIScreen.main.bounds)

    window!.rootViewController = UINavigationController(rootViewController: ViewController())
    window!.makeKeyAndVisible()

    return true
  }
  ...

1.4 AppDegate.swift бөлімінде функцияларды орындау:

...
 func applicationWillResignActive(_ application: UIApplication) {}

  func applicationDidEnterBackground(_ application: UIApplication) {}

  func applicationWillEnterForeground(_ application: UIApplication) {}

  func applicationDidBecomeActive(_ application: UIApplication) {}

  func applicationWillTerminate(_ application: UIApplication) {}
}
AppDelegate.swift

Нәтиже

Нәтиже

2. CardKit.framework интеграциясы

CardKit.framework төмендегі үші әдістің біреуімен интеграциялауға болады.

2.1 CardKit.framework файлын алып, жоба қалтасына тасымалдау

`CardKit.framework` файлын тасымалдау

2.2. Targets -> General -> Frameworks, Libraries, and Embedded Content ашу. CardKit.framework құрылымындағы embeded бағанында Do not Embed мәнін Embed & Sign мәніне ауыстыру.

`CardKit.framework` параметрлерін өзгерту

2.3. ViewController.swift файлындағы фрэймворкты импорттау.

Carthage

1) Cartfile жасау.

2)github "Radarpayments/CardKit" жолын файлға импорттау.

Pod

1) Pod іске қосу.

2) pod 'CardKit', :git => 'https://github.com/Radarpayments/ios-sdk.git' Podfile файлына қосу.

//ViewController.swift
...
import CardKit
...

3. SDK пайдалану

3.1 cardKitViewController функциясын орындау:

//SampleCardKPaymentView.swift
extension SampleCardKPaymentView: CardKDelegate {
  func cardKitViewController(_ controller: CardKViewController, didCreateSeToken seToken: String, allowSaveBinding: Bool, isNewCard: Bool) {
    debugPrint(seToken)

    let alert = UIAlertController(title: "SeToken", message: seToken, preferredStyle: UIAlertController.Style.alert)
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))

    controller.present(alert, animated: true)

  }
  ...
}

3.2 Функцияны орындау: didLoad(\_ controller: CardKViewController)

didLoad(\_ controller: CardKViewController) назнaчаются атрибуты CardKViewController.

//ViewController.swift
extension ViewController: CardKDelegate {
  ...
  func didLoad(_ controller: CardKViewController) {
    controller.allowedCardScaner = CardIOUtilities.canReadCardWithCamera();
    controller.purchaseButtonTitle = "Custom purchase button";
    controller.allowSaveBinding = true;
    controller.isSaveBinding = true;
    controller.displayCardHolderField = true;
  }
  ...
}

3.3 Функцияны орындау: willShow(_ paymentView: CardKPaymentView)

//
extension ViewController: CardKDelegate {
  ...
  func willShow(_ paymentView: CardKPaymentView) {
    let paymentNetworks = [PKPaymentNetwork.amex, .discover, .masterCard, .visa]
    let paymentItem = PKPaymentSummaryItem.init(label: "Test", amount: NSDecimalNumber(value: 10))
    let merchandId = "t";
    paymentView.merchantId = merchandId
    paymentView.paymentRequest.currencyCode = "USD"
    paymentView.paymentRequest.countryCode = "US"
    paymentView.paymentRequest.merchantIdentifier = merchandId
    paymentView.paymentRequest.merchantCapabilities = PKMerchantCapability.capability3DS
    paymentView.paymentRequest.supportedNetworks = paymentNetworks
    paymentView.paymentRequest.paymentSummaryItems = [paymentItem]
    paymentView.paymentButtonStyle = .black;
    paymentView.paymentButtonType = .buy;

    paymentView.cardPaybutton.backgroundColor = .white;
    paymentView.cardPaybutton.setTitleColor(.black, for: .normal);
    paymentView.cardPaybutton.setTitle("Custom title", for: .normal);
  }
  ...
}

3.4 CardKPaymentView көрсету

//ViewController.swift
...
@objc func _openController() {
  CardKConfig.shared.theme = CardKTheme.light();
  CardKConfig.shared.language = "";
  CardKConfig.shared.bindingCVCRequired = true;
  CardKConfig.shared.bindings = [];
  CardKConfig.shared.isTestMod = true;
  CardKConfig.shared.mdOrder = "mdOrder";

  let cardKPaymentView = CardKPaymentView.init(delegate: self);
  cardKPaymentView.controller = self;
  cardKPaymentView.frame = CGRect(x: width * 0.5 - 50, y: height * 0.5 - 300, width: 100, height: 100);
  self.view.addSubview(cardKPaymentView);
}
...

Нәтиже

Apple Pay түймелері бар контроллер мысалы

CardKConfig нысан сипаттары

Атау Деректер түрі Әдепкі мәні Міндетті емес Сипаттама
theme CardKTheme CardKTheme.defaultTheme() Иә Пайдаланушы интерфейсінің түс тақырыбы.
language String nil Иә Пайдаланушы интерфейсінің тілі.
bindingCVCRequired Boolean false Иә Осыдан бұрын сақталған картамен төлеу үшін CVC талап етіледі.
isTestMod Boolean false Иә Сынақ кілттерді таңдау үшін сынақ режимде іске қосу.
mdOrder String - Жоқ Криптограмма арқылы төлеуге болатын тапсырыс идентификаторы.
bindings [CardKBinding] - Жоқ Байламдар массиві.
cardKProdKey String <Public key> Иә Белсенді ортаға арналған ашық кілт.
cardKTestKey String <Public key> Иә Сынақ ортаға арналған ашық кілт.
testURL String <URL> Иә Сынақ кілтті сұрауға арналған URL.
prodURL String <URL> Иә Белсенді кілтті сұрауға арналған URL.
mrBinURL String nil Жоқ Кескіндерді көрсетуге арналған түбірлік URL, мысалы: https://mrbin.io/bins/
mrBinApiURL String nil Жоқ Банк идентификациясына арналған URL.
bindingsSectionTitle String nil Иә Байламдар тізімі бар бөлімнің тақырыбы.

Мысал

...
  CardKConfig.shared.theme = CardKTheme.dark();
  CardKConfig.shared.language = "";
  CardKConfig.shared.bindingCVCRequired = true;
  CardKConfig.shared.bindings = [];
  CardKConfig.shared.isTestMod = true;
  CardKConfig.shared.mdOrder = "mdOrder";
  ...

Тақырыпты таңдау

Қараңғы және ашық тақырыптарға қолдау көрсетіледі. iOS 13.0 және одан кейінгі нұсқалар жүйелік параметрлерге байланысты тақырыптардың автоматты ауысуына қолдау көрсетеді.

// Light theme
CardKConfig.shared.theme = CardKTheme.light();

// Dark theme
CardKConfig.shared.theme = CardKTheme.dark();

// iOS system theme - ONLY FOR IOS 13.0+ (supports auto switching)
CardKConfig.shared.theme = CardKTheme.system();

Тақырып сипаттарын қайта анықтау

Тақырып сипаттары:

Нөмір Сипат атауы
1 colorLabel
2 colorPlaceholder
3 colorErrorLabel
4 colorCellBackground
5 colorTableBackground
6 colorSeparatar
7 colorButtonText
Сипаттардың нөмірі

Тақырыпты қайта анықтау мысалы:

func _openCustomTheme() {
  ...
  theme.colorLabel = UIColor.black;
  theme.colorPlaceholder = UIColor.gray;
  theme.colorErrorLabel = UIColor.red;
  theme.colorTableBackground = UIColor.lightGray;
  theme.colorCellBackground = UIColor.white;
  theme.colorSeparatar = UIColor.darkGray;
  theme.colorButtonText = UIColor.orange;
  ...
}

Локализация

Қазіргі уақытта 5 тіл қолжетімді:

// language = "de" | "en" | "es" | "fr" | "ru" | "uk";
CardKConfig.shared.language = language;

CardKViewController инициализациясы

mdOrder - тапсырыс идентификаторы бар жол

CardKViewController(mdOrder: mdOrder);

CardKViewController нысан сипаттары

Сипат атауы Деректер түрі Әдепкі мәні Міндетті емес Сипаттама
cKitDelegate id<CardKViewControllerDelegate> nil Жоқ -
allowedCardScaner Boolean false Иә Карталар сканерін пайдалануға рұқсат беру.
purchaseButtonTitle String Purchase Иә Түйме мәтінін қайта анықтау.
isTestMod Boolean false Иә Сынақ кілттерді таңдау үшін сынақ режимде іске қосу.
allowSaveBinding Boolean false Иә «Картаны сақтау» тумблерін көрсету.
isSaveBinding Boolean false Тумблердің әдепкі мәні.
displayCardHolderField Boolean false Карта иесін енгізу өрісін көрсету.

СardKViewControler атрибуттарына жаңа параметрлерді қосу үшін мына функцияны іске асыру керек: didLoad(\_ controller: CardKViewController). didLoad(\_ controller: CardKViewController) назначаются атрибуты CardKViewController.

//ViewController.swift
func didLoad(_ controller: CardKViewController) {
  controller.allowedCardScaner = CardIOUtilities.canReadCardWithCamera();
  controller.purchaseButtonTitle = "Custom purchase button";
  controller.allowSaveBinding = true;
  controller.isSaveBinding = true;
  controller.displayCardHolderField = true;
}

Аргументтер сипаттамасы

Sdk жиынтығын көрсету үшін create статикалық әдісін, CardKViewController класында шақыру қажет. create функция аргументтері:

Атау Деректер түрі Әдепкі мәні Міндетті емес Сипаттама
self UIViewController nil Жоқ басты контроллер сілтемесі
navigationController UINavigationController nil Иә навигациялық контроллер
controller CardKViewController nil Жоқ CardKViewController іске қосылған нысан

create функциясының нәтижесі – UIViewController класындағы нысан

let controller = CardKViewController();
  controller.cKitDelegate = self;
  CardKViewController.create(self, controller: controller);
Модальді терезедегі контроллер.

iPad қолдауы. Пішінді Popover түрінде көрсету

Тақырыпты таңдау және CardKViewController іске қосу.

// ViewController.swift
CardKConfig.shared.theme = CardKTheme.dark();

let controller = CardKViewController(mdOrder:"mdOrder");
controller.cKitDelegate = self
controller.allowedCardScaner = false;
...

Ағымдағы құрылғының IOS нұсқасын тексеру. 13.0+ нұсқасы болса, пішінді көрсету.

...
if #available(iOS 13.0, *) {
  self.present(controller, animated: true)
  return;
}
...

< 13.0 нұсқасы болса, UINavigationController іске қосып, modalPresentationStyle атрибутына .formSheet мәнін беру.

...
let navController = UINavigationController(rootViewController: controller)
navController.modalPresentationStyle = .formSheet
...

leftBarButtonItem атрибутына CardKViewController контроллерінде UIBarButtonItem класындағы нысанды беру.

...
let closeBarButtonItem = UIBarButtonItem(
  title: "Close",
  style: .done,
  target: self,
  action: #selector(_close(sender:)) //_close function is implemented below.
)
controller.navigationItem.leftBarButtonItem = closeBarButtonItem
...

Пішінді көрсету:

...
self.present(navController, animated: true)

_close функциясы

@objc func _close(sender:UIButton){
  self.navigationController?.dismiss(animated: true, completion: nil)
}
Popover iPadOS 13
Popover iOS 10

Төлем пішінін жеке бетте көрсету

1) Тақырыпты таңдау және CardKViewController іске қосу.

// ViewController.swift
CardKConfig.shared.theme = CardKTheme.light();

let controller = CardKViewController(mdOrder:"mdOrder");
controller.cKitDelegate = self
controller.allowedCardScaner = true
controller.purchaseButtonTitle = "Custom purchase button";
...

2) CardKViewController NavigationController файлына қосу.

...
self.navigationController?.pushViewController(controller, animated: true)
Пішінді жеке бетте көрсету

SeToken алу

SeToken алу үшін cardKitViewController функциясын орындау қажет.

// ViewController.swift
func cardKitViewController(_ controller: CardKViewController, didCreateSeToken seToken: String) {
  debugPrint(seToken)
  ...
  controller.present(alert, animated: true)
}

Card.io құралымен жұмыс

Card.io құралымен жұмыс істеу үшін:

1) SampleAppCardIO класын cardIOView функциясымен орындау;

Карта деректері бар болса, setCardNumber функциясын шақырып, карта деректерін береміз.

// ViewController.swift
  class SampleAppCardIO: NSObject, CardIOViewDelegate {
 weak var cardKController: CardKViewController? = nil

 func cardIOView(_ cardIOView: CardIOView!, didScanCard cardInfo: CardIOCreditCardInfo!) {
   if let info = cardInfo {
 cardKController?.setCardNumber(info.cardNumber, holderName: info.cardholderName, expirationDate: nil, cvc: nil)
   }
   cardIOView?.removeFromSuperview()
 }
  }

Класты орындау мысалы осында көрсетілген.

2 cardKitViewControllerScanCardRequest() функциясын орындау.

// ViewController.swift
func cardKitViewControllerScanCardRequest(_ controller: CardKViewController) {
  let cardIO = CardIOView(frame: controller.view.bounds)
  cardIO.hideCardIOLogo = true
  cardIO.scanExpiry = false
  cardIO.autoresizingMask = [.flexibleWidth, .flexibleHeight]

  sampleAppCardIO = SampleAppCardIO()
  sampleAppCardIO?.cardKController = controller
  cardIO.delegate = sampleAppCardIO

  controller.showScanCardView(cardIO, animated: true)
}

3) allowedCardScaner атрибутына True мәнін беру. CardIOUtilities.canReadCardWithCamera() Функциясын пайдалану ұсынылады.

4) CardIOUtilities.preloadCardIO() функциясын шақыру.

// ViewController.swift
func _openController() {
  ...
  controller.allowedCardScaner = CardIOUtilities.canReadCardWithCamera();
  ...
  CardIOUtilities.preloadCardIO()
}

Apple pay түймесін реттеу

  1. CardKPaymentView іске қосу.
let cardKPaymentView = CardKPaymentView.init(delegate: self);
cardKPaymentView.controller = self;
cardKPaymentView.frame = CGReact(x: 0, y: 0, width: 100, height: 100);
  1. PKPaymentView реттеу.
Атау Деректер түрі Әдепкі мәні Міндетті емес Сипаттама
merchantId String nil Жоқ Apple pay жүйесінде төлеу үшін merchantId
paymentRequest PKPaymentRequest nil Жоқ Төлем деректерін сипаттау нысаны.
paymentButtonType PKPaymentButtonType nil Жоқ ApplePay түймесінің түрі
paymentButtonStyle PKPaymentButtonStyle nil Жоқ ApplePay түйме көрінісі.
cardPaybutton UIButton nil Иә «Картамен төлеу» түймесін реттеу.
func willShow(_ paymentView: CardKPaymentView) {
  let paymentNetworks = [PKPaymentNetwork.amex, .discover, .masterCard, .visa]
  let paymentItem = PKPaymentSummaryItem.init(label: "Test", amount: NSDecimalNumber(value: 10))
  let merchandId = "t";
  paymentView.merchantId = merchandId
  paymentView.paymentRequest.currencyCode = "USD"
  paymentView.paymentRequest.countryCode = "US"
  paymentView.paymentRequest.merchantIdentifier = merchandId
  paymentView.paymentRequest.merchantCapabilities = PKMerchantCapability.capability3DS
  paymentView.paymentRequest.supportedNetworks = paymentNetworks
  paymentView.paymentRequest.paymentSummaryItems = [paymentItem]
  paymentView.paymentButtonStyle = .black;
  paymentView.paymentButtonType = .buy;

  paymentView.cardPaybutton.backgroundColor = .white;
  paymentView.cardPaybutton.setTitleColor(.black, for: .normal);
  paymentView.cardPaybutton.setTitle("Custom title", for: .normal);
}

Мысалдар

Apple Pay түймелері көрінісінің мысалы
  1. Төлем нәтижелерін алу

PKPayment алу үшін cardKPaymentView функциясын орындау қажет.

func cardKPaymentView(_ paymentView: CardKPaymentView, didAuthorizePayment pKPayment: PKPayment) {
...
}

Байламдармен жұмыс істеу

Байламдардың көрінісі

CardKConfing ішіндегі bindings массиві бос болмаса, байламдар тізімі бар контроллер көрсетіледі. Массив бос болса, жаңа картаны жасау пішіні көрсетіледі.

CardKBinding нысан сипаттары:

Атау Деректер түрі Әдепкі мәні Міндетті емес Сипаттама
bindingId Нөмір - Жоқ Байлам идентификаторы.
paymentSystem String - Жоқ Төлем жүйесі.
cardNumber String - Жоқ Карта нөмірі.
expireDate String - Жоқ Картаның қолданылу мерзімі.
Байламдар тізімі

Cardholder өрісінің көрсетілуі

Өріс көрсетілуі үшін true мәнін displayCardHolderField өрісінде CardKViewController контроллерінде көрсету керек.

controller.displayCardHolderField = true;

displayCardHolderField = true немесе false болған кездегі пішіннің көрсетілу мысалы.

`displayCardHolderField = true`
`displayCardHolderField = false`

«Картаны сақтау» тумблерінің көрсетілуі

Пішінде тумблер көрсетілуі үшін true мәнін allowSaveBinding өрісінде CardKViewController контроллерінде көрсету керек. Әдепкі бойынша тумблер мәнін басқару үшін isSaveBinding мәнін CardKViewController контроллерінде орнату керек.

controller.allowSaveBinding = true;

allowSaveBinding = true немесе false болған кезде пішіннің көрсетілу мысалы.

allowSaveBinding = true, isSaveBinding = true
allowSaveBinding = false
allowSaveBinding = false, isSaveBinding = false

CVC өрісінің көрсетілуі

Таңдалған байламның төлем нысанындағы CVC өрісі көрсетілуі үшін true мәнін bindingCVCRequired өрісінде CardKConfing контроллерінде орнату керек.

CardKConfig.shared.bindingCVCRequired = true;

bindingCVCRequired = true немесе false болған кездегі пішіннің көрсетілу мысалы.

`bindingCVCRequired` = `true`
`bindingCVCRequired = false`

SeToken

SeToken алу үшін cardKitViewController функциясын орындау қажет.

3DS2 бітеуіші

SDK3DS2 жиынтығында бітеуішті пайдалануға болады. SDK экрандары тапсырыс сомасына байланысты болады.

Сома Экран Сурет
111 Радио-топ
222 Көптеген таңдау
333 Веб (кірістірілген HTML)
Кез келген басқа Бір реттік құпиясөз
Санаттар:
eCommerce SDK
Санаттар
Іздеу нәтижелері