Acquiring SDK ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΠΊΠ²Π°ΠΉΡΠΈΠ½Π³ Tinkoff Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Android.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ SDK:
- ΠΡΠΈΠ΅ΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΡ );
- Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ ΠΊΠ°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°;
- Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ ΠΈΠ»ΠΈ NFC;
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΡ ΠΊΠ°ΡΡΠ°Ρ ;
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΌΠΈ ΠΊΠ°ΡΡΠ°ΠΌΠΈ;
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ;
- ΠΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΊΡΠ°Π½ΠΎΠ² SDK;
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠ°ΡΡΠ°ΠΌΠΈ;
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π‘ΠΈΡΡΠ΅ΠΌΡ Π±ΡΡΡΡΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ
- ΠΠΏΠ»Π°ΡΠ° ΡΠ΅ΡΠ΅Π· Tinkoff Pay
- ΠΠΏΠ»Π°ΡΠ° ΡΠ΅ΡΠ΅Π· Mir Pay
- ΠΠΏΠ»Π°ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Yandex Pay
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Tinkoff Acquiring SDK Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Android Π²Π΅ΡΡΠΈΠΈ 7.0 ΠΈ Π²ΡΡΠ΅ (API level 24).
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ SDK Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² build.gradle Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
implementation 'ru.tinkoff.acquiring:ui:$latestVersion'
implementation 'ru.tinkoff.acquiring:threeds-sdk:$latestVersion'
implementation 'ru.tinkoff.acquiring:threeds-wrapper:$latestVersion'
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π½Π΅Π΄ΡΠΈΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Card-IO, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² build.gradle
implementation 'ru.tinkoff.acquiring:cardio:$latestVersion'
Π’Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² network-security-config ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ
ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΎΡ ΠΌΠΈΠ½ΡΠΈΡΡ ΠΈ Π΄ΠΎΠΏ. ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΎΡ ΡΠΈΠ½ΡΠΊΠΎΡΡ. ΠΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² sample
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠ½ ΡΠ°ΠΊ:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config>
<trust-anchors>
<certificates src="system" />
<certificates src="@raw/acq_tinkoff_root_cert" />
<certificates src="@raw/acq_ministry_of_digital_development_root_cert" />
</trust-anchors>
</base-config>
</network-security-config>
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Ρ SDK Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ:
- Terminal key
- Public key
ΠΠΎΡΠΎΡΡΠ΅ Π²ΡΠ΄Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Ρ
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΡ
SDK ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ (debug/prod). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ - ΡΠ΅ΠΆΠΈΠΌ prod. Π§ΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ debug ΡΠ΅ΠΆΠΈΠΌ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
AcquiringSdk.isDeveloperMode = true // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ URL, Π΄Π΅Π½ΡΠ³ΠΈ Ρ ΠΊΠ°ΡΡ Π½Π΅ ΡΠΏΠΈΡΡΠ²Π°ΡΡΡΡ
AcquiringSdk.isDebug = true // Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΊ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ ΠΊ API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π΅ΠΊΠΈΠΉ ΡΠΎΠΊΠ΅Π½ (ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π·Π°ΠΏΡΠΎΡΠ°).
ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠΊΠ΅Π½Π° Π² ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
(Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌ. kDoc AcquiringSdk.tokenGenerator
):
AcquiringSdk.tokenGenerator = SampleAcquiringTokenGenerator(password) // Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΎΠΊΠ΅Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ
// Π ΡΠ΅Π»ΡΡ
Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ TinkoffAcquiring
val tinkoffAcquiring = TinkoffAcquiring(applicationContext, "TERMINAL_KEY", "PUBLIC_KEY") // ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ SDK ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΎΠ΄Π°Π²ΡΠ°
ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ:
tinkoffAcquiring.initSbpPaymentSession()
tinkoffAcquiring.initTinkoffPayPaymentSession()
tinkoffAcquiring.initMirPayPaymentSession()
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ TinkoffAcquiring.checkTerminalInfo() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ ΡΠ΅ΡΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½ΠΈΡ .
ΠΠ°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΊΡΠ°Π½ Ρ ΡΠΎΡΠΌΠΎΠΉ ΠΎΠΏΠ»Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ PaymentOptions ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠΏΠ»Π°ΡΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΊΠ°Π·Π°, Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΡΠ°Π½Π° ΠΎΠΏΠ»Π°ΡΡ. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠ²ΠΎΠΉ ΠΈΠ»ΠΈ CardScannerDelegate). ΠΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ²Π΅ΡΠ»ΠΎΠΉ ΠΈ ΡΡΠΌΠ½ΠΎΠΉ ΡΠ΅ΠΌΡ. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΡΠΊΡΠ°Π½Π° ΠΈ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈΠ· Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅.
val paymentOptions =
PaymentOptions().setOptions {
orderOptions { // Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΊΠ°Π·Π°
orderId = "ORDER-ID" // ID Π·Π°ΠΊΠ°Π·Π° Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅
amount = Money.ofRubles(1000) // ΡΡΠΌΠΌΠ° Π΄Π»Ρ ΠΎΠΏΠ»Π°ΡΡ
title = "ΠΠΠΠΠΠΠΠ ΠΠΠΠ’ΠΠΠ" // Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°, Π²ΠΈΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
description = "ΠΠΠΠ‘ΠΠΠΠ ΠΠΠΠ’ΠΠΠ" // ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°, Π²ΠΈΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
recurrentPayment = false // ΡΠ»Π°Π³ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆ ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΠΌ [1]
successURL = "URL" // URL, ΠΊΡΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ»Π°ΡΡ (ΡΠΌ. ΠΏΠΎΠ»Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ)
failURL = "URL" // URL, ΠΊΡΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ»Π°ΡΡ (ΡΠΌ. ΠΏΠΎΠ»Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ)
}
customerOptions { // Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ
checkType = CheckType.NO.toString() // ΡΠΈΠΏ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΡ
customerKey = "CUSTOMER_KEY" // ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π΅Π³ΠΎ ΠΊΠ°ΡΡΡ
email = "[email protected]" // E-mail ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠ± ΠΎΠΏΠ»Π°ΡΠ΅
}
featuresOptions { // Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΊΡΠ°Π½Π° ΠΎΠΏΠ»Π°ΡΡ
cameraCardScanner =
CardScannerDelegateImpl() // ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ CardScannerWrapper
}
}
ΠΠ°ΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ MainFormContract#Contract, ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ActivityResultLauncher#launch
val byMainFormPayment = registerForActivityResult(MainFormLauncher.Contract, ActivityResultCallback {})
byMainFormPayment.launch(MainFormContract.StartData(paymentOptions))
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° Π²Π΅ΡΠ½Π΅ΡΡΡ Π² ActivityResultCallback:
- ΠΏΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ MainFormLauncher.Success - ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ paymentId ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°, ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ cardId - id ΠΊΠ°ΡΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆ, ΡΠΈΠΏ String ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ rebillId - rebillId ΠΊΠ°ΡΡΡ, Π΅ΡΠ»ΠΈ Π±ΡΠ» ΡΠΎΠ²Π΅ΡΡΠ΅Π½ ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΠΉ ΠΏΠ»Π°ΡΠ΅ΠΆ
- ΠΏΡΠΈ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ (MainFormLauncher.Error) ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Throwable (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ)
- ΠΏΡΠΈ ΠΎΡΠΌΠ΅Π½Π΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° (MainFormLauncher.Canceled)
ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΠ°, ΡΠΊΠ°Π·Π°Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ receipt Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ PaymentOptions#orderOptions ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ additionalData. ΠΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΈ ΠΈΡ Π½Π°Π»ΠΈΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° API Init, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
val paymentOptions =
PaymentOptions().setOptions {
orderOptions {
receipt = myReceipt
additionalData = dataMap
// Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΊΠ°Π·Π°
}
customerOptions {
// Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ
}
featuresOptions {
// Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΊΡΠ°Π½Π° ΠΎΠΏΠ»Π°ΡΡ
}
}
val byMainFormPayment = registerForActivityResult(MainFormContract.Contract)
byMainFormPayment.launch(MainFormContract.StartData(paymentOptions))
[1] Π Π΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΠΉ ΠΏΠ»Π°ΡΠ΅ΠΆ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠ°ΡΡΡ, Π±Π΅Π· Π²Π²ΠΎΠ΄Π° Π΅Π΅ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠΎΠ². ΠΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ΅.
[2] ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²Π²ΠΎΠ΄Π°, Ρ.ΠΊ. ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ.
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΊΡΠ°Π½Π° ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ΅Π³Π΅ΡΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ AttachCardLauncher#Contract. Π ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ - ΡΠΈΠΏ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ, Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΠΎ-Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΡΠΊΡΠ°Π½ΠΎΠΌ ΠΎΠΏΠ»Π°ΡΡ):
val attachCardOptions =
AttachCardOptions().setOptions {
setTerminalParams("TERMINAL_KEY", "PUBLIC_KEY")
customerOptions { // Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ
customerKey = "CUSTOMER_KEY" // ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π΅Π³ΠΎ ΠΊΠ°ΡΡΡ
checkType = CheckType.NO.toString() // ΡΠΈΠΏ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΡ
email = "[email protected]" // E-mail ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅
}
featuresOptions { // Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΊΡΠ°Π½Π° ΠΎΠΏΠ»Π°ΡΡ
useSecureKeyboard = true
cameraCardScanner = CameraCardIOScanner()
theme = themeId
}
}
attachCard = registerForActivityResult(AttachCard.Contract, ActivityResultCallback {})
attachCard.launch(options)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π²Π΅ΡΠ½Π΅ΡΡΡ Π² ActivityResultCallback Π² Π²ΠΈΠ΄Π΅ AttachCard.Result:
- ΠΏΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ (AttachCard.Success) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ cardId - id ΠΊΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π°, ΡΠΈΠΏ String
- ΠΏΡΠΈ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ (AttachCard.Error) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° error ΡΠΈΠΏΠ° Throwable (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ)
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Π‘ΠΈΡΡΠ΅ΠΌΡ Π±ΡΡΡΡΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΠΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅.
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ QR ΠΊΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΎΠΏΠ»Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΡΡΠΈΡΠ°
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π½Π° ΠΊΠ»ΠΈΠΊ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΈ Π²ΡΠ·Π²Π°ΡΡ Π² Π½Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ TinkoffAcquiring#openStaticQrScreen ΠΠ΅ΡΠΎΠ΄ openStaticQrScreen ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: activity, localization - Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, requestCode - Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΏΠ»Π°ΡΡ ΡΠΎΠ²Π°ΡΠ° ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΌ ΠΏΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ QR ΠΊΠΎΠ΄Ρ Π½Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² SDK, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π² onActivityResult Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΊΡΠ°Π½ Π°ΠΊΡΠΈΠ²ΠΈΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΠ»ΠΈ ΠΎΡΠΌΠ΅Π½Π° (Π·Π°ΠΊΡΡΡΠΈΠ΅ ΡΠΊΡΠ°Π½Π°).
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Tinkoff Pay ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΠΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅.
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΎΠΏΠ»Π°ΡΡ ΡΠ΅ΡΠ΅Π· Tinkoff Pay ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π΄Π»Ρ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ:
ΠΠΏΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Tinkoff Pay ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ
- Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΡΠ°Π½ΠΎΠ² ΠΈΠ· SDK;
- Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ²ΠΎΠΈΡ
ΡΠΊΡΠ°Π½ΠΎΠ² ΠΈ
TpayProcess
ΠΈΠ· SDK.
ΠΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ±ΡΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅:
- ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄
TinkoffAcquiring.checkTerminalInfo
, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠΏΠ»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡenableTinkoffPay()
. - ΠΡΠ»ΠΈ
enableTinkoffPay()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρtrue
, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΎΠΏΠ»Π°ΡΡ Tinkoff Pay Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Design Guidelines.
- ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ ΡΠ΅ΡΡΠΈΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΡΠ°Π½ ΠΎΠΏΠ»Π°ΡΡ SDK:
TinkoffAcquiring.initTinkoffPayPaymentSession()
val tpayPayment = registerForActivityResult(TpayLauncher.Contract, ActivityResultCallback {})
// Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΡΠΊΡΠ°Π½ΠΎΠΌ ΠΎΠΏΠ»Π°ΡΡ
val paymentOptions = PaymentOptions()
.setOptions {
orderOptions { ... }
customerOptions { ... }
featuresOptions { ... }
setTerminalParams("TERMINAL_KEY", "PUBLIC_KEY")
}
tpayPayment.launch(
StartData(
paymentOptions,
version // Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° checkTerminalInfo()
)
)
- Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΏΠ»Π°ΡΡ Π²Π΅ΡΠ½Π΅ΡΡΡ Π² ActivityResultCallback Π² Π²ΠΈΠ΄Π΅ TpayLauncher.Result
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ΅ΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Mir Pay ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ Tinkoff Pay, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ MirPayLauncher
ΠΈΠ»ΠΈ MirPayProcess
- ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΡ ΡΠ΅ΡΡΠΈΡ
TinkoffAcquiring.initTinkoffPayPaymentSession()
- ΠΠ°ΠΏΡΡΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΡΠ°Π½Π° ΠΎΠΏΠ»Π°ΡΡ Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ
TpayProcess#get
ΠΈ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡTpayProcess#start
(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡversion
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΡΠ°Π³Π΅ 1. ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΡΠ°ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠΏΠ»Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»Π΅TpayProcess#state
(ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠΌ), ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅onUiNeeded
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡstate.deepLink
Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΡΠΎΡΠΌΠΎΠΉ ΠΎΠΏΠ»Π°ΡΡ. - ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠ°ΡΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ
TinkoffAcquiring.sdk.getState
(Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌpaymentId
ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΌ Π²state.paymentId
Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π³Π΅); Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°ΡΡΠΎΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ°ΡΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½ΡΠΆΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π° Π²Π°ΡΠ΅ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ (ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² - ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ°ΡΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° ΠΏΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΎΠ½Π°).
AcquiringSdk ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ Yandex Pay Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΊΠ°ΡΡ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Yandex Pay Π²ΠΌΠ΅ΡΡΠ΅ Ρ AcquiringSdk Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ:
- ΠΠΎΠ»ΡΡΠΈΡΡ Π² Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅ Yandex Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
YANDEX_CLIENT_ID
- Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ
YANDEX_CLIENT_ID
Π² ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠΊΡΠΈΠΏΡΠ΅ build.gradle Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²manifestPlaceholders
:
android {
defaultConfig {
manifestPlaceholders = [
// ΠΠΎΠ΄ΡΡΠ°Π²ΡΡΠ΅ Π²Π°Ρ yandex_client_id
YANDEX_CLIENT_ID: "12345678901234567890",
]
}
}
- ΠΠΎΠ±Π°Π²ΠΈΡΡ Π² build.gradle
implementation 'ru.tinkoff.acquiring:yandexpay:$latestVersion'
ΠΡΠ°ΠΉΠ½Π΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ru.tinkoff.acquiring:yandexpay
Π²ΠΌΠ΅ΡΡΠ΅ Ρ com.yandex.pay:core
Π² ΡΠ°ΠΌΠΊΠ°Ρ
Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ
ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
- ΠΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΈΠ΅ΠΌ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· Yandex Pay Π² ΠΠΈΡΠ½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅ΡΠ΅.
- ΠΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΠΎΡΡΡΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Yandex Pay ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄
TinkoffAcquiring#checkTerminalInfo
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΎΠΏΠ»Π°ΡΡ,ΠΈΠ·Π²Π»Π΅ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Yandex Pay ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅TerminalInfo#mapYandexPayData
. - ΠΠ½ΠΎΠΏΠΊΠ° Yandex Pay ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Π° Π²ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅
YandexButtonFragment
. Π Π°Π·ΠΌΠ΅ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°-ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΠΈΠ½Π΅. Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°TinkoffAcquiring.createYandexPayButtonFragment
. ΠΠΎΡΠ»Π΅ Π²ΡΠ±ΠΎΡΠ° ΠΊΠ°ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠΏΠ»Π°ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² pages.
SDK ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ 2 Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΡΡΡΡΠΊΡΡ ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΡΡ.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° Π±Π΅Π· ΠΎΡΠΊΡΡΡΠΈΡ ΡΠΊΡΠ°Π½Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ ΠΎΠΏΠ»Π°ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°.
ΠΠ»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠΏΠ»Π°ΡΡ, ΠΈ ΡΠ°Π·Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΠΎΠ½ΠΈ Π»Π΅ΠΆΠ°Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ ru.tinkoff.acquiring.sdk.payment
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ°:
PaymentByCardProcess.init(sdk, application) // ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ°
val process = PaymentByCardProcess.get()
process.start(cardData, paymentOptions) // Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°
scope.launch {
process.state.collect { handle(it) } // ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°
}
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² sample ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° Π±Π΅Π· Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Init ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ paymentId
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Launcher
-Ρ ΡΠΊΡΠ°Π½ΠΎΠ² ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ UI, ΡΠΎ Π² Process
-Ρ ΠΎΠΏΠ»Π°ΡΡ.
SDK ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ:
Π―Π²Π»ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Tinkoff Acquiring API. ΠΠΎΠ΄ΡΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΡΡΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ Π² API. ΠΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Android SDK ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² standalone Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ - AcquiringSdk - ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Tinkoff Acquiring API. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΠΊΠ»ΡΡΠΈ ΠΏΡΠΎΠ΄Π°Π²ΡΠ° (ΡΠΌ. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ ΡΠ°Π±ΠΎΡΠ΅).
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
implementation 'ru.tinkoff.acquiring:core:$latestVersion'
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ»Π°ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
TinkoffAcquiring - ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΡΠΊΡΠ°Π½ ΠΎΠΏΠ»Π°ΡΡ ΠΏΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ QR ΠΊΠΎΠ΄Ρ
- ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠΏΠ»Π°ΡΡ
TPayLauncher - ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΡΠΊΡΠ°Π½ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠΏΠ»Π°ΡΡ ΡΠ΅ΡΠ΅Π· Tinkoff Pay TpayProcess - ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠΏΠ»Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΠΎΠΉ UI
Π° ΡΠ°ΠΊ ΠΆΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠΏΠ»Π°ΡΡ.
ΠΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ ΡΠ΅Π»Π΅ΡΠΎΠ½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Card-IO.
ΠΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ yandexPay
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Tinkoff Acquiring SDK ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Card-IO Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡΠΎΠ΄Π°ΠΆΠ΅ ΠΊΠ½ΠΈΠ³.
-keep class ru.tinkoff.acquiring.sdk.localization.** { *; }
-keep class ru.tinkoff.acquiring.sdk.requests.** { *; }
-keep class ru.tinkoff.acquiring.sdk.models.** { *; }
-keep class ru.tinkoff.acquiring.sdk.yandexpay.models.** { *; } // Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π»ΠΈ ΡΠ½Π΄Π΅ΠΊΡ
-keep class ru.rtln.tds.sdk.** { *; }
-keep class org.spongycastle.**
-keep class org.bouncycastle.**
- ΠΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΠΏΡΠΎΡΡΠ±Π° ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π½Π° [email protected]
- ΠΠ°Π³ΠΈ ΠΈ feature-ΡΠ΅ΠΊΠ²Π΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π» issues
- ΠΠΎΠ»Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ api