ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ΅ΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° iOS ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ.
Π ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ SDK Π²Ρ
ΠΎΠ΄ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ (ΡΠΎΡΠΌΠ° ΠΎΠΏΠ»Π°ΡΡ ΠΈ Π²ΡΡ, ΡΡΠΎ Ρ Π½Π΅ΠΉ ΡΠ²ΡΠ·Π°Π½ΠΎ).
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ SDK ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠΊΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠΏΠ»Π°ΡΡ Ρ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΎΠΉ ΠΊΠ°ΡΡΡ, ΡΠ΅ΡΠ΅Π· Apple Pay, Π‘Π±Π΅ΡΠ±Π°Π½ΠΊ ΠΠ½Π»Π°ΠΉΠ½ ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΡΠ΅Π»ΡΠΊΠ° Π² Π―Π½Π΄Π΅ΠΊΡ.ΠΠ΅Π½ΡΠ³Π°Ρ
.
- ΠΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
- ΠΠΎΠ΄ Π΄Π΅ΠΌΠΎ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅Ρ SDK
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- Yandex Checkout Payments SDK
- Changelog
- Migration guide
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ TrustDefender
- ΠΡΡΡΡΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ
- ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΠ»Π°ΡΡ
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
- Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ ΠΊΠ°ΡΡ
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° 3D Secure
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- Π’Π΅ΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ
- ΠΠ°ΠΏΡΡΠΊ Example
- ΠΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
- ΠΠ»Π°ΡΡΠΆ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ ΠΊ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ ΠΊΠ°ΡΡΠΎΠΉ Ρ Π΄ΠΎΠ·Π°ΠΏΡΠΎΡΠΎΠΌ CVC/CVV
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Migration guide
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ CocoaPods
gem install cocoapods
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» Podfile\
CocoaPods ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pod init
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Podfile Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²
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.
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
pod install
ΠΠ° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Carthage Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΉΠ» .framework
, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ Π² Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΠ΅
ΠΈ ΡΠΎΠΎΠ±ΡΠΈΡΠ΅ Π²Π°ΡΠ΅ΠΌΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ, ΡΡΠΎ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ SDK.
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ
TrustDefender.framework
Π² ΠΏΠ°ΠΏΠΊΡFrameworks
.
App
ββ Pods
ββ Frameworks
ββ TrustDefender.framework
ΠΡΠ»ΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ°ΠΏΠΊΠ°
Frameworks
ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΅Ρ Π²ΡΡΡΠ½ΡΡ.
-
ΠΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ
dyld: Library not loaded: @rpath/TrustDefender.framework/TrustDefender
, Π² ΡΠ°Π·Π΄Π΅Π»Π΅General
Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠ³Π΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ TrustDefender.framework Π²Embedded Binaries
(Π² Xcode 10.3 ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅), ΠΈΠ»ΠΈ Π²Frameworks, Libraries, and Embedded Content
(Π² Xcode 11) -
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π²
Build Phases
->New Run Script Phase
, ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°strip_framework.sh
-
ΠΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΎ
TrustDefender.framework/TrustDefender' does not contain bitcode
, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΊΠ»ΡΡΠΈΡΡ bitcode Π² ΡΠ°Π·Π΄Π΅Π»Π΅Build Settings
Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠ³Π΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅
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)
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅
TokenizationFlow
Ρ ΠΊΠ΅ΠΉΡΠΎΠΌ.tokenization
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅TokenizationModuleInputData
.
ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ TokenizationFlow
:
let inputData: TokenizationFlow = .tokenization(tokenizationModuleInputData)
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅
ViewController
ΠΈΠ·TokenizationAssembly
ΠΈ Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½.
let viewController = TokenizationAssembly.makeModule(inputData: inputData,
moduleOutput: self)
present(viewController, animated: true, completion: nil)
Π moduleOutput
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TokenizationModuleOutput
.
- Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
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
.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ ΠΈΠ· ΠΊΠΎΡΠ΅Π»ΡΠΊΠΎΠ² Π² Π―Π½Π΄Π΅ΠΊΡ.ΠΠ΅Π½ΡΠ³Π°Ρ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π² Π―Π½Π΄Π΅ΠΊΡΠ΅.
-
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π―Π½Π΄Π΅ΠΊΡ.OAuth ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ID.
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Π ΡΠ°Π·Π΄Π΅Π»Π΅ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΠΏΠΎΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΠΎΡΡΡΠΏ ΠΊ Π»ΠΎΠ³ΠΈΠ½Ρ, ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ, ΠΏΠΎΠ»Ρ
-
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² 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>
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ Entitlements
Π ΡΠ²ΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Capabilities
Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Associated Domains
ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΄ΠΎΠΌΠ΅Π½ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ:
applinks:yx<ID ΠΈΠ· Π―Π½Π΄Π΅ΠΊΡ.OAuth>.oauth.yandex.ru.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ID ΠΈΠ· Π―Π½Π΄Π΅ΠΊΡ.OAuth β 333
, Π΄ΠΎΠΌΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
applinks:yx333.oauth.yandex.ru.
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° Π² 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)
}
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆ:
- ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ
TokenizationModuleInputData
ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.yandexMoney
Π²paymentMethodTypes.
- ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆ Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ.
- ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ
TokenizationModuleInputData
ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.bankcard
Π²paymentMethodTypes
. - ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆ Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ SDK ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆ ΡΠ΅ΡΠ΅Π· Β«ΠΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ Π±Π°Π½ΠΊΒ» Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ° β Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ»Π°ΡΡ ΠΏΠΎ ΡΠΌΡ:
- ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ
TokenizationModuleInputData
ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.sberbank
Π²paymentMethodTypes
. - ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆ Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ.
- Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Apple Pay, Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Apple Π±ΡΠ΄Π΅Ρ ΡΠΈΡΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ ΠΊΠ°ΡΡ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΈ ΠΏΠΎΠΏΡΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π»Ρ Π²Π°Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (
.csr
). - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π² ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Apple (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
.csr
). - Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΈ ΠΏΡΠΈΡΠ»ΠΈΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2 Β«ΠΠ±ΠΌΠ΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ Ρ AppleΒ»)
- ΠΠΊΠ»ΡΡΠΈΡΠ΅ Apple Pay Π² Xcode.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆ:
- ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
TokenizationModuleInputData
Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ apple pay identifier Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡapplePayMerchantIdentifier
.
let moduleData = TokenizationModuleInputData(
...
applePayMerchantIdentifier: "<com.example...>")
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°Ρ apple pay identifier β com.example.identifier
, ΡΠΎ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
let moduleData = TokenizationModuleInputData(
...
applePayMerchantIdentifier: "com.example.identifier")
- ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆ Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ ΠΏΠΎ API Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ.
Enum
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ°Π±ΠΎΡΡ SDK.
Case | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
tokenization | TokenizationFlow | ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ
ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»Ρ TokenizationModuleInputData . ΠΠΎΠ³ΠΈΠΊΠ° Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ Π½Π° Π²ΡΠ±ΠΎΡ: ΠΠ°Π½ΠΊΠΎΠ²ΡΠΊΠ°Ρ ΠΊΠ°ΡΡΠ°, Π―Π½Π΄Π΅ΠΊΡ ΠΠ΅Π½ΡΠ³ΠΈ, Π‘Π±Π΅ΡΠ±Π°Π½ΠΊ-ΠΠ½Π»Π°ΠΉΠ½, Apple Pay |
bankCardRepeat | TokenizationFlow | ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ
ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»Ρ BankCardRepeatModuleInputData . ΠΠΎΠ³ΠΈΠΊΠ° Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΠΏΠ»Π°ΡΡ |
Enum
Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ func didFinish(on module:, with error:)
Case | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
paymentMethodNotFound | Error | ΠΠΎ paymentMethodId Π½Π΅ Π±ΡΠ»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΠΏΠ»Π°ΡΡ. |
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅:
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
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. Π¦Π²Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ, ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π°. |
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅:
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
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. Π¦Π²Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ, ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π°. |
ΠΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
paymentMethodTypes | PaymentMethodTypes | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ .all . Π‘ΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΠ»Π°ΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. |
showYandexCheckoutLogo | Bool | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ true . ΠΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΡΠΈΠΏΠ° Π―Π½Π΄Π΅ΠΊΡ.ΠΠ°ΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π»ΠΎΠ³ΠΎΡΠΈΠΏ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ. |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
paymentAuthorizationPassed | Bool | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΏΡΠΎΠΉΠ΄Π΅Π½Π° Π»ΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½Π°Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ ΠΎΠΏΠ»Π°ΡΠ΅ Π―Π½Π΄Π΅ΠΊΡ.ΠΠ΅Π½ΡΠ³Π°ΠΌΠΈ. |
cardsCount | Int | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΊΠ°ΡΡ ΠΊ ΠΊΠΎΡΠ΅Π»ΡΠΊΡ Π² Π―Π½Π΄Π΅ΠΊΡ.ΠΠ΅Π½ΡΠ³Π°Ρ . |
charge | Amount | Π‘ΡΠΌΠΌΠ° ΠΈ Π²Π°Π»ΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ°. |
enablePaymentError | Bool | ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆ Π·Π°Π²Π΅ΡΡΠ΅Π½ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ. |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
value | Decimal | Π‘ΡΠΌΠΌΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ° |
currency | Currency | ΠΠ°Π»ΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ° |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
rub | String | β½ - Π ΠΎΡΡΠΈΠΉΡΠΊΠΈΠΉ ΡΡΠ±Π»Ρ |
usd | String | $ - ΠΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠΉ Π΄ΠΎΠ»Π»Π°Ρ |
eur | String | β¬ - ΠΠ²ΡΠΎ |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
mainScheme | UIColor | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²Π΅Ρ blueRibbon. Π¦Π²Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ, ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π°. |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|---|
on | SavePaymentMethod | Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠ»Π°ΡΡΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΠ»Π°ΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅. ΠΠ° ΡΠΊΡΠ°Π½Π΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ½. |
off | SavePaymentMethod | ΠΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΠ»Π°ΡΡΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄. |
userSelects | SavePaymentMethod | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ, ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΏΠ»Π°ΡΡΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ, Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ. |
ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΠ΅ ΠΊΠ°ΡΡΡ ΠΏΡΠΈ ΠΎΠΏΠ»Π°ΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
CardScanning
.
class CardScannerProvider: CardScanning {
weak var cardScanningDelegate: CardScanningDelegate?
var cardScanningViewController: UIViewController? {
// Create and return scanner view controller
viewController.delegate = self
return viewController
}
}
- ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΎΠΉ ΠΊΠ°ΡΡΡ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ 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)
}
}
- ΠΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
CardScannerProvider
Π²TokenizationModuleInputData
Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡcardScanning:
.
let inputData = TokenizationModuleInputData(
...
cardScanning: CardScannerProvider())
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 3-D Secure, Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°ΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ SDK ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π°.
ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΠΎΠΊΠ΅Π½ Π½Π° Π²Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ»Π°ΡΡ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠΎΠ±ΡΠΈΠ» ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° (Ρ.Π΅. ΠΏΠ»Π°ΡΡΠΆ ΠΏΡΠΈΡΡΠ» ΡΠΎ ΡΡΠ°ΡΡΡΠΎΠΌ pending
), Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ start3dsProcess(requestUrl:)
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ 3-D Secure Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ didSuccessfullyPassedCardSec(on module:)
ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° TokenizationModuleOutput
.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°:
- Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ tokenization ΠΌΠΎΠ΄ΡΠ»Ρ.
self.tokenizationViewController = TokenizationAssembly.makeModule(inputData: inputData,
moduleOutput: self)
present(self.tokenizationViewController, animated: true, completion: nil)
- ΠΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΠΉΡΠ΅ tokenization ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π°.
func tokenizationModule(_ module: TokenizationModuleInput,
didTokenize token: Tokens,
paymentMethodType: PaymentMethodType) {
// ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΠΎΠΊΠ΅Π½ Π½Π° Π²Π°Ρ ΡΠ΅ΡΠ²Π΅Ρ.
}
- ΠΠΎΠΊΠ°ΠΆΠΈΡΠ΅ 3-D Secure, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆ.
func needsConfirmPayment(requestUrl: String) {
self.tokenizationViewController.start3dsProcess(requestUrl: requestUrl)
}
- ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ 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 Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- Π‘ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΠΈΠΏΠΎΠΌ
TestModeSettings
.
let testModeSettings = TestModeSettings(paymentAuthorizationPassed: false,
cardsCount: 2,
charge: Amount(value: 999, currency: .rub),
enablePaymentError: false)
- ΠΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π²
TokenizationModuleInputData
Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅testModeSettings:
let moduleData = TokenizationModuleInputData(
...
testModeSettings: testModeSettings)
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Example ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- Π‘Π΄Π΅Π»Π°ΡΡ
git clone
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
git clone https://github.com/yandex-money/yandex-checkout-payments-swift.git
- ΠΠΎΠ±Π°Π²ΠΈΡΡ TrustDefender.framework Π² ΠΏΠ°ΠΏΠΊΡ
Frameworks
, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Ρ ΠΏΠ°ΠΏΠΊΠΎΠΉPods
(ΡΠΌ. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ TrustDefender) - Π ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΏΠ°ΠΏΠΊΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
gem install bundler
bundle
pod install
- ΠΡΠΊΡΡΡΡ
YandexCheckoutPayments.xcworkspace
. - ΠΡΠ±ΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡ
Π΅ΠΌΡ
ExamplePods
.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²Π΅Ρ blueRibbon. Π¦Π²Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ, ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π°.
- Π‘ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ
CustomizationSettings
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡcustomizationSettings
ΠΎΠ±ΡΠ΅ΠΊΡΠ°TokenizationModuleInputData
.
let moduleData = TokenizationModuleInputData(
...
customizationSettings: CustomizationSettings(mainScheme: /* UIColor */ ))
ΠΠ»Π°ΡΡΠΆ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ ΠΊ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ ΠΊΠ°ΡΡΠΎΠΉ Ρ Π΄ΠΎΠ·Π°ΠΏΡΠΎΡΠΎΠΌ CVC/CVV
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅
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)
)
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅
TokenizationFlow
Ρ ΠΊΠ΅ΠΉΡΠΎΠΌ.bankCardRepeat
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅BankCardRepeatModuleInputData
.
let inputData: TokenizationFlow = .bankCardRepeat(bankCardRepeatModuleInputData)
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅
ViewController
ΠΈΠ·TokenizationAssembly
ΠΈ Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½.
let viewController = TokenizationAssembly.makeModule(
inputData: inputData,
moduleOutput: self
)
present(viewController, animated: true, completion: nil)
Yandex Checkout Payments SDK Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ LICENSE ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.