Skip to content

lamantin-group/yandex-checkout-payments-swift

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Yandex Checkout Payments SDK

Platform GitHub tag Documentation license

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° позволяСт Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния Π½Π° iOS ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ API ЯндСкс.ΠšΠ°ΡΡΡ‹.
Π’ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ SDK входят Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Π΅ интСрфСйсы (Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ»Π°Ρ‚Ρ‹ ΠΈ всё, Ρ‡Ρ‚ΠΎ с Π½Π΅ΠΉ связано).
Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SDK ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ для провСдСния ΠΎΠΏΠ»Π°Ρ‚Ρ‹ с банковской ΠΊΠ°Ρ€Ρ‚Ρ‹, Ρ‡Π΅Ρ€Π΅Π· Apple Pay, Π‘Π±Π΅Ρ€Π±Π°Π½ΠΊ Онлайн ΠΈΠ»ΠΈ ΠΈΠ· кошСлька Π² ЯндСкс.Π”Π΅Π½ΡŒΠ³Π°Ρ….


Changelog

Бсылка Π½Π° Changelog

Migration guide

Бсылка Π½Π° Migration guide

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ зависимостСй

CocoaPods

  1. УстановитС CocoaPods
gem install cocoapods
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Podfile\

CocoaPods прСдоставляСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pod init для создания Podfile с настройками ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ зависимости Π² Podfile.
    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Podfile ΠΈΠ· Π΄Π΅ΠΌΠΎ-прилоТСния.
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target 'Your Target Name' do
  pod 'YandexCheckoutPayments',
    :git => 'https://github.com/yandex-money/yandex-checkout-payments-swift.git',
    :tag => 'tag'
end

Your Target Name - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π°Ρ€Π³Π΅Ρ‚Π° Π² Xcode для вашСго прилоТСния.
tag - вСрсия SDK. ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π° github Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ releases.

  1. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pod install

Carthage

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Carthage Π½Π΅ поддСрТиваСтся.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TrustDefender

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» .framework, Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π² ЯндСкс.КассС ΠΈ сообщитС Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ SDK.

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ TrustDefender.framework Π² ΠΏΠ°ΠΏΠΊΡƒ Frameworks.
App
β”œβ”€ Pods
└─ Frameworks
   └─ TrustDefender.framework

Если Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ отсутствуСт ΠΏΠ°ΠΏΠΊΠ° Frameworks создайтС Π΅Ρ‘ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

  1. Если Π²ΠΎ врСмя запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ dyld: Library not loaded: @rpath/TrustDefender.framework/TrustDefender, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ General Ρƒ основного Ρ‚Π°Ρ€Π³Π΅Ρ‚Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ TrustDefender.framework Π² Embedded Binaries(Π² Xcode 10.3 ΠΈΠ»ΠΈ мСньшС), ΠΈΠ»ΠΈ Π² Frameworks, Libraries, and Embedded Content(Π² Xcode 11)

  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Build Phases -> New Run Script Phase, ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ скрипт ΠΈΠ· Ρ„Π°ΠΉΠ»Π° strip_framework.sh

  3. Если Π²ΠΎ врСмя сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС с ошибкой ΠΎ TrustDefender.framework/TrustDefender' does not contain bitcode, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ bitcode Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Build Settings Ρƒ основного Ρ‚Π°Ρ€Π³Π΅Ρ‚Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Быстрая интСграция

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ TokenizationModuleInputData (понадобится ΠΊΠ»ΡŽΡ‡ для клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° ЯндСкс.ΠšΠ°ΡΡΡ‹). Π’ этой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° (Π²Π°Π»ΡŽΡ‚Π° ΠΈ сумма) ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈ ΠΎΠΏΠ»Π°Ρ‚Π΅ (способы ΠΎΠΏΠ»Π°Ρ‚Ρ‹, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° ΠΈ описаниС Π·Π°ΠΊΠ°Π·Π°).

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сущностями YandexCheckoutPayments ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ зависимости Π² исходный Ρ„Π°ΠΉΠ»

import YandexCheckoutPayments
import YandexCheckoutPaymentsApi

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания TokenizationModuleInputData:

let clientApplicationKey = "<ΠšΠ»ΡŽΡ‡ для клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ>"
let amount = Amount(value: 999.99, currency: .rub)
let tokenizationModuleInputData =
          TokenizationModuleInputData(clientApplicationKey: clientApplicationKey,
                                      shopName: "ΠšΠΎΡΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹",
                                      purchaseDescription: """
                                                           ΠšΠΎΠΌΠ΅Ρ‚Π° ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ яркости, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ обращСния β€” 112 Π»Π΅Ρ‚
                                                           """,
                                      amount: amount,
                                      savePaymentMethod: .on)
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ TokenizationFlow с кСйсом .tokenization ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ TokenizationModuleInputData.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания TokenizationFlow:

let inputData: TokenizationFlow = .tokenization(tokenizationModuleInputData)
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ViewController ΠΈΠ· TokenizationAssembly ΠΈ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π° экран.
let viewController = TokenizationAssembly.makeModule(inputData: inputData,
                                                     moduleOutput: self)
present(viewController, animated: true, completion: nil)

Π’ moduleOutput Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TokenizationModuleOutput.

  1. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TokenizationModuleOutput.
extension ViewController: TokenizationModuleOutput {
  func tokenizationModule(_ module: TokenizationModuleInput,
                          didTokenize token: Tokens,
                          paymentMethodType: PaymentMethodType) {
    DispatchQueue.main.async { [weak self] in
        guard let self = self else { return }
        self.dismiss(animated: true)
    }
    // ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π² Π²Π°ΡˆΡƒ систСму
  }

  func didFinish(on module: TokenizationModuleInput,
                 with error: YandexCheckoutPaymentsError?) {
      DispatchQueue.main.async { [weak self] in
          guard let self = self else { return }
          self.dismiss(animated: true)
      }
  }
}

Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ SDK ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π² Π²Π°ΡˆΡƒ систСму. Π—Π°Ρ‚Π΅ΠΌ создайтС ΠΏΠ»Π°Ρ‚Π΅ΠΆ ΠΏΠΎ API ЯндСкс.ΠšΠ°ΡΡΡ‹, Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ payment_token ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² SDK. Бпособ подтвСрТдСния ΠΏΡ€ΠΈ создании ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° зависит ΠΎΡ‚ способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π±Ρ€Π°Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Он ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ вмСстС с Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ Π² paymentMethodType.

ДоступныС способы ΠΎΠΏΠ»Π°Ρ‚Ρ‹

БСйчас Π² SDK для iOS доступны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ способы ΠΎΠΏΠ»Π°Ρ‚Ρ‹:

.yandexMoney β€” ЯндСкс.Π”Π΅Π½ΡŒΠ³ΠΈ (ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ ΠΈΠ· кошСлька ΠΈΠ»ΠΈ привязанной ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ)
.bankCard β€” банковская ΠΊΠ°Ρ€Ρ‚Π° (ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ)
.sberbank β€” Π‘Π±Π΅Ρ€Π±Π°Π½ΠΊ Онлайн (с ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ смс)
.applePay β€” Apple Pay

Настройка способов ΠΎΠΏΠ»Π°Ρ‚Ρ‹

Π£ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ способы ΠΎΠΏΠ»Π°Ρ‚Ρ‹.
Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ создании TokenizationModuleInputData Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ tokenizationSettings ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ модСль Ρ‚ΠΈΠΏΠ° TokenizationSettings.

Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… способов ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Π½ΡƒΠΆΠ½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ настройка (см. Π½ΠΈΠΆΠ΅).
По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ всС доступныС способы ΠΎΠΏΠ»Π°Ρ‚Ρ‹.

// Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ пустой OptionSet PaymentMethodTypes
var paymentMethodTypes: PaymentMethodTypes = []

if <УсловиС для банковской ΠΊΠ°Ρ€Ρ‚Ρ‹> {
    // ДобавляСм Π² paymentMethodTypes элСмСнт `.bankCard`
    paymentMethodTypes.insert(.bankCard)
}

if <УсловиС для Π‘Π±Π΅Ρ€Π±Π°Π½ΠΊΠ° Онлайн> {
    // ДобавляСм Π² paymentMethodTypes элСмСнт `.sberbank`
    paymentMethodTypes.insert(.sberbank)
}

if <УсловиС для ЯндСкс.Π”Π΅Π½Π΅Π³> {
    // ДобавляСм Π² paymentMethodTypes элСмСнт `.yandexMoney`
    paymentMethodTypes.insert(.yandexMoney)
}

if <УсловиС для Apple Pay> {
    // ДобавляСм Π² paymentMethodTypes элСмСнт `.applePay`
    paymentMethodTypes.insert(.applePay)
}

let tokenizationSettings = TokenizationSettings(paymentMethodTypes: paymentMethodTypes)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ tokenizationSettings ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ TokenizationModuleInputData.

ЯндСкс Π”Π΅Π½ΡŒΠ³ΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ ΠΈΠ· кошСльков Π² ЯндСкс.Π”Π΅Π½ΡŒΠ³Π°Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° авторизация Π² ЯндСксС.

  1. ЗарСгистрируйтС своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ЯндСкс.OAuth ΠΈ сохранитС ID.

    • Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ прилоТСния.
    • Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ API ЯндСкс.ΠŸΠ°ΡΠΏΠΎΡ€Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Доступ ΠΊ Π»ΠΎΠ³ΠΈΠ½Ρƒ, ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ, ΠΏΠΎΠ»Ρƒ
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Info.plist ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>yandexauth</string>
    <string>yandexauth2</string>
</array>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>YandexLoginSDK</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>yx<ID из ЯндСкс.OAuth></string>
        </array>
    </dict>
</array>
  1. НастройтС Entitlements

Π’ своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Capabilities Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Associated Domains ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΄ΠΎΠΌΠ΅Π½ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ:

applinks:yx<ID из ЯндСкс.OAuth>.oauth.yandex.ru.

НапримСр, Ссли ваш ID ΠΈΠ· ЯндСкс.OAuth β€” 333, Π΄ΠΎΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

applinks:yx333.oauth.yandex.ru.

  1. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² AppDelegate.
func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    do {
        try YandexLoginService.activate(withAppId: /* ID из ЯндСкс.OAuth */)
    } catch {
        // process error
    }
    return true
}

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    YandexLoginService.processUserActivity(userActivity)
    return true
}

func application(_ app: UIApplication,
                 open url: URL,
                 options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
    return YandexLoginService.handleOpen(url, sourceApplication: options[.sourceApplication] as? String)
}

Π§Ρ‚ΠΎΠ±Ρ‹ провСсти ΠΏΠ»Π°Ρ‚Π΅ΠΆ:

  1. ΠŸΡ€ΠΈ создании TokenizationModuleInputData ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .yandexMoney Π² paymentMethodTypes.
  2. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½.
  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆ с Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API ЯндСкс.ΠšΠ°ΡΡΡ‹.

Банковская ΠΊΠ°Ρ€Ρ‚Π°

  1. ΠŸΡ€ΠΈ создании TokenizationModuleInputData ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .bankcard Π² paymentMethodTypes.
  2. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½.
  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆ с Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API ЯндСкс.ΠšΠ°ΡΡΡ‹.

Π‘Π±Π΅Ρ€Π±Π°Π½ΠΊ Онлайн

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SDK ΠΌΠΎΠΆΠ½ΠΎ провСсти ΠΏΠ»Π°Ρ‚Π΅ΠΆ Ρ‡Π΅Ρ€Π΅Π· Β«ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π±Π°Π½ΠΊΒ» Π‘Π±Π΅Ρ€Π±Π°Π½ΠΊΠ° β€” с ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ»Π°Ρ‚Ρ‹ ΠΏΠΎ смс:

  1. ΠŸΡ€ΠΈ создании TokenizationModuleInputData ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .sberbank Π² paymentMethodTypes.
  2. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½.
  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆ с Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API ЯндСкс.ΠšΠ°ΡΡΡ‹.

Apple Pay

  1. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Apple Pay, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ЯндСкс.КассС сСртификат, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Apple Π±ΡƒΠ΄Π΅Ρ‚ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ банковских ΠΊΠ°Ρ€Ρ‚.

Для этого:

  • ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ ΠΈ попроситС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для вас запрос Π½Π° сСртификат (.csr).
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ сСртификат Π² ΠΏΠ°Π½Π΅Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Apple (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .csr).
  • Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ сСртификат ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΈΡ‚Π΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция (см. Ρ€Π°Π·Π΄Π΅Π» 2 «ОбмСн сСртификатами с AppleΒ»)

  1. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Apple Pay Π² Xcode.

Π§Ρ‚ΠΎΠ±Ρ‹ провСсти ΠΏΠ»Π°Ρ‚Π΅ΠΆ:

  1. ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° TokenizationModuleInputData Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ apple pay identifier Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ applePayMerchantIdentifier.
let moduleData = TokenizationModuleInputData(
    ...
    applePayMerchantIdentifier: "<com.example...>")

НапримСр, Ссли ваш apple pay identifier β€” com.example.identifier, Ρ‚ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

let moduleData = TokenizationModuleInputData(
    ...
    applePayMerchantIdentifier: "com.example.identifier")
  1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½.
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆ с Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API ЯндСкс.ΠšΠ°ΡΡΡ‹.

ОписаниС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

TokenizationFlow

Enum, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ SDK.

Case Вип ОписаниС
tokenization TokenizationFlow ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ модСль TokenizationModuleInputData. Π›ΠΎΠ³ΠΈΠΊΠ° для Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ нСсколько способов ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Π½Π° Π²Ρ‹Π±ΠΎΡ€: Банковская ΠΊΠ°Ρ€Ρ‚Π°, ЯндСкс Π”Π΅Π½ΡŒΠ³ΠΈ, Π‘Π±Π΅Ρ€Π±Π°Π½ΠΊ-Онлайн, Apple Pay
bankCardRepeat TokenizationFlow ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ модСль BankCardRepeatModuleInputData. Π›ΠΎΠ³ΠΈΠΊΠ° для Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ сохранСнных способов ΠΎΠΏΠ»Π°Ρ‚Ρ‹ ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹

YandexCheckoutPaymentsError

Enum с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ ошибками, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ func didFinish(on module:, with error:)

Case Вип ОписаниС
paymentMethodNotFound Error По paymentMethodId Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сохранСнного способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹.

TokenizationModuleInputData

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
clientApplicationKey String ΠšΠ»ΡŽΡ‡ для клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° ЯндСкс.ΠšΠ°ΡΡΡ‹
shopName String НазваниС ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ»Π°Ρ‚Ρ‹
purchaseDescription String ОписаниС Π·Π°ΠΊΠ°Π·Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ»Π°Ρ‚Ρ‹
amount Amount ΠžΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий сумму Π·Π°ΠΊΠ°Π·Π° ΠΈ Π²Π°Π»ΡŽΡ‚Ρƒ

|

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
gatewayId String По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ссли Ρƒ вас нСсколько ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Ρ… шлюзов с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.
tokenizationSettings TokenizationSettings По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартный ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ со всСми способами ΠΎΠΏΠ»Π°Ρ‚Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° настройку Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ (способы ΠΎΠΏΠ»Π°Ρ‚Ρ‹ ΠΈ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ ЯндСкс.ΠšΠ°ΡΡΡ‹).
testModeSettings TestModeSettings По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. Настройки тСстового Ρ€Π΅ΠΆΠΈΠΌΠ°.
cardScanning CardScanning По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ банковскиС ΠΊΠ°Ρ€Ρ‚Ρ‹.
applePayMerchantIdentifier String По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. Apple Pay merchant ID (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· Apple Pay).
returnUrl String По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. URL страницы (поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ https), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ послС прохоТдСния 3-D Secure. НСобходим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ кастомной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ 3-D Secure. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ start3dsProcess(requestUrl:), Π½Π΅ Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.
isLoggingEnabled Bool По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ false. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСтСвых запросов.
userPhoneNumber String По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. Π’Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
customizationSettings CustomizationSettings По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†Π²Π΅Ρ‚ blueRibbon. Π¦Π²Π΅Ρ‚ основных элСмСнтов, ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ, поля Π²Π²ΠΎΠ΄Π°.

BankCardRepeatModuleInputData

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
clientApplicationKey String ΠšΠ»ΡŽΡ‡ для клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π° ЯндСкс.ΠšΠ°ΡΡΡ‹
shopName String НазваниС ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ»Π°Ρ‚Ρ‹
purchaseDescription String ОписаниС Π·Π°ΠΊΠ°Π·Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠΏΠ»Π°Ρ‚Ρ‹
paymentMethodId String Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сохранСнного способа ΠΎΠΏΠ»Π°Ρ‚Ρ‹
amount Amount ΠžΠ±ΡŠΠ΅ΠΊΡ‚, содСрТащий сумму Π·Π°ΠΊΠ°Π·Π° ΠΈ Π²Π°Π»ΡŽΡ‚Ρƒ

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
testModeSettings TestModeSettings По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. Настройки тСстового Ρ€Π΅ΠΆΠΈΠΌΠ°.
returnUrl String По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ nil. URL страницы (поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ https), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ послС прохоТдСния 3-D Secure. НСобходим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ кастомной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ 3-D Secure. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ start3dsProcess(requestUrl:), Π½Π΅ Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.
isLoggingEnabled Bool По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ false. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСтСвых запросов.
customizationSettings CustomizationSettings По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†Π²Π΅Ρ‚ blueRibbon. Π¦Π²Π΅Ρ‚ основных элСмСнтов, ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ, поля Π²Π²ΠΎΠ΄Π°.

TokenizationSettings

МоТно Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ список способов ΠΎΠΏΠ»Π°Ρ‚Ρ‹ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° ЯндСкс.ΠšΠ°ΡΡΡ‹ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
paymentMethodTypes PaymentMethodTypes По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ .all. Бпособы ΠΎΠΏΠ»Π°Ρ‚Ρ‹, доступныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
showYandexCheckoutLogo Bool По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ true. ΠžΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠ° ЯндСкс.ΠšΠ°ΡΡΡ‹. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏ отобраТаСтся.

TestModeSettings

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
paymentAuthorizationPassed Bool ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π° Π»ΠΈ платСТная авторизация ΠΏΡ€ΠΈ ΠΎΠΏΠ»Π°Ρ‚Π΅ ЯндСкс.Π”Π΅Π½ΡŒΠ³Π°ΠΌΠΈ.
cardsCount Int ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ привязанныС ΠΊΠ°Ρ€Ρ‚ ΠΊ ΠΊΠΎΡˆΠ΅Π»ΡŒΠΊΡƒ Π² ЯндСкс.Π”Π΅Π½ΡŒΠ³Π°Ρ….
charge Amount Π‘ΡƒΠΌΠΌΠ° ΠΈ Π²Π°Π»ΡŽΡ‚Π° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°.
enablePaymentError Bool ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ с ошибкой.

Amount

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
value Decimal Π‘ΡƒΠΌΠΌΠ° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°
currency Currency Π’Π°Π»ΡŽΡ‚Π° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°

Currency

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
rub String β‚½ - Российский Ρ€ΡƒΠ±Π»ΡŒ
usd String $ - АмСриканский Π΄ΠΎΠ»Π»Π°Ρ€
eur String € - Π•Π²Ρ€ΠΎ

CustomizationSettings

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
mainScheme UIColor По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†Π²Π΅Ρ‚ blueRibbon. Π¦Π²Π΅Ρ‚ основных элСмСнтов, ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ, поля Π²Π²ΠΎΠ΄Π°.

SavePaymentMethod

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΈΠΏ ОписаниС
on SavePaymentMethod Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для провСдСния Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄ΡƒΡ‚ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ способы ΠΎΠΏΠ»Π°Ρ‚Ρ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ сохранСниС. На экранС ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ сохранён.
off SavePaymentMethod НС ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.
userSelects SavePaymentMethod ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚, ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ‘ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, Π½Π° экранС ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° появится ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ.

Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ банковских ΠΊΠ°Ρ€Ρ‚

Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогли ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ банковскиС ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΏΡ€ΠΈ ΠΎΠΏΠ»Π°Ρ‚Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» CardScanning.
class CardScannerProvider: CardScanning {
    weak var cardScanningDelegate: CardScanningDelegate?

    var cardScanningViewController: UIViewController? {

        // Create and return scanner view controller

        viewController.delegate = self
        return viewController
    }
}
  1. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· вашСго инструмСнта для сканирования банковской ΠΊΠ°Ρ€Ρ‚Ρ‹.
    На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ CardIO:
extension CardScannerProvider: CardIOPaymentViewControllerDelegate {
    public func userDidProvide(_ cardInfo: CardIOCreditCardInfo!,
                               in paymentViewController: CardIOPaymentViewController!) {
        let scannedCardInfo = ScannedCardInfo(number: cardInfo.cardNumber,
                                              expiryMonth: "\(cardInfo.expiryMonth)",
                                              expiryYear: "\(cardInfo.expiryYear)")
        cardScanningDelegate?.cardScannerDidFinish(scannedCardInfo)
    }

    public func userDidCancel(_ paymentViewController: CardIOPaymentViewController!) {
        cardScanningDelegate?.cardScannerDidFinish(nil)
    }
}
  1. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° CardScannerProvider Π² TokenizationModuleInputData Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ cardScanning:.
let inputData = TokenizationModuleInputData(
    ...
    cardScanning: CardScannerProvider())

Настройка 3D Secure

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ 3-D Secure, Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ SDK послС получСния Ρ‚ΠΎΠΊΠ΅Π½Π°.
ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° ваш сСрвСр ΠΈ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.
Если ваш сСрвСр сообщил ΠΎ нСобходимости подтвСрТдСния ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ° (Ρ‚.Π΅. ΠΏΠ»Π°Ρ‚Ρ‘ΠΆ ΠΏΡ€ΠΈΡˆΡ‘Π» со статусом pending), Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ start3dsProcess(requestUrl:)

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ прохоТдСния 3-D Secure Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ didSuccessfullyPassedCardSec(on module:) ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TokenizationModuleOutput.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°:

  1. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ tokenization ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.
self.tokenizationViewController = TokenizationAssembly.makeModule(inputData: inputData,
                                                                 moduleOutput: self)
present(self.tokenizationViewController, animated: true, completion: nil)
  1. НС Π·Π°ΠΊΡ€Ρ‹Π²Π°ΠΉΡ‚Π΅ tokenization ΠΌΠΎΠ΄ΡƒΠ»ΡŒ послС получСния Ρ‚ΠΎΠΊΠ΅Π½Π°.
func tokenizationModule(_ module: TokenizationModuleInput,
                        didTokenize token: Tokens,
                        paymentMethodType: PaymentMethodType) {
    // ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° ваш сСрвСр.
}
  1. ΠŸΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ 3-D Secure, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Π΅ΠΆ.
func needsConfirmPayment(requestUrl: String) {
    self.tokenizationViewController.start3dsProcess(requestUrl: requestUrl)
}
  1. ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ прохоТдСния 3-D Secure Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄.
func didSuccessfullyPassedCardSec(on module: TokenizationModuleInput) {
    DispatchQueue.main.async { [weak self] in
        guard let self = self else { return }

        // Now close tokenization module
        self.dismiss(animated: true)
    }
}

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π£ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСх сСтСвых запросов.
Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ создании TokenizationModuleInputData ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ isLoggingEnabled: true

let moduleData = TokenizationModuleInputData(
    ...
    isLoggingEnabled: true)

ВСстовый Ρ€Π΅ΠΆΠΈΠΌ

Π£ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ SDK Π² тСстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅.
ВСстовый Ρ€Π΅ΠΆΠΈΠΌ Π½Π΅ выполняСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сСтСвых запросов ΠΈ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ SDK Π² тСстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

  1. Π‘ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ‚ΠΈΠΏΠΎΠΌ TestModeSettings.
let testModeSettings = TestModeSettings(paymentAuthorizationPassed: false,
                                        cardsCount: 2,
                                        charge: Amount(value: 999, currency: .rub),
                                        enablePaymentError: false)
  1. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² TokenizationModuleInputData Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ testModeSettings:
let moduleData = TokenizationModuleInputData(
    ...
    testModeSettings: testModeSettings)

Запуск Example

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Example ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

  1. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ git clone рСпозитория.
git clone https://github.com/yandex-money/yandex-checkout-payments-swift.git
  1. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ TrustDefender.framework Π² ΠΏΠ°ΠΏΠΊΡƒ Frameworks, которая находится Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ с ΠΏΠ°ΠΏΠΊΠΎΠΉ Pods (см. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ TrustDefender)
  2. Π’ консоли ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
gem install bundler
bundle
pod install
  1. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ YandexCheckoutPayments.xcworkspace.
  2. Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ схСму ExamplePods.

ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ интСрфСйса

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ†Π²Π΅Ρ‚ blueRibbon. Π¦Π²Π΅Ρ‚ основных элСмСнтов, ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ, поля Π²Π²ΠΎΠ΄Π°.

  1. Π‘ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ CustomizationSettings ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ customizationSettings ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° TokenizationModuleInputData.
let moduleData = TokenizationModuleInputData(
    ...
    customizationSettings: CustomizationSettings(mainScheme: /* UIColor */ ))

ΠŸΠ»Π°Ρ‚Ρ‘ΠΆ привязанной ΠΊ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ с дозапросом CVC/CVV

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ BankCardRepeatModuleInputData.
let bankCardRepeatModuleInputData = BankCardRepeatModuleInputData(
            clientApplicationKey: oauthToken,
            shopName: translate(Localized.name),
            purchaseDescription: translate(Localized.description),
            paymentMethodId: "24e4eca6-000f-5000-9000-10a7bb3cfdb2",
            amount: amount,
            testModeSettings: testSettings,
            isLoggingEnabled: true,
            customizationSettings: CustomizationSettings(mainScheme: .blueRibbon)
        )
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ TokenizationFlow с кСйсом .bankCardRepeat ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ BankCardRepeatModuleInputData.
let inputData: TokenizationFlow = .bankCardRepeat(bankCardRepeatModuleInputData)
  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ViewController ΠΈΠ· TokenizationAssembly ΠΈ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π° экран.
let viewController = TokenizationAssembly.makeModule(
    inputData: inputData,
    moduleOutput: self
)
present(viewController, animated: true, completion: nil)

ЛицСнзия

Yandex Checkout Payments SDK доступна ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ LICENSE Ρ„Π°ΠΉΠ» для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 99.0%
  • Other 1.0%