yoomoney_flutter/Sberpay via SberSDK.md
2023-12-22 16:57:25 +03:00

9.9 KiB
Raw Blame History

Проведение платежа через SberSDK

Функциональность доступна ограниченному кругу наших клиентов, так как находится в тестировании. Чтобы попасть в число ранних пользователей необходимо связаться со своим менеджером и запросить доступ.

С помощью SDK можно провести и подтвердить платеж через актуальное приложение Сбербанка, если оно установленно, иначе с подтверждением по смс.

Настройка оплаты через SberPay с нуля

(!) Далее описание настройки метода SberPay, если ранее вы его не использовали.

В TokenizationModuleInputData необходимо передавать applicationScheme схема для возврата в приложение после успешной оплаты с помощью SberPay в приложении Сбербанка.

Пример applicationScheme:

let tokenizationModuleInputData = TokenizationModuleInputData(
    ...
    applicationScheme: "examplescheme://"

Чтобы провести платёж:

1. При создании TokenizationModuleInputData передайте значение PaymentMethod.sberbank в tokenizationSettings.

var tokenizationSettings = const TokenizationSettings(PaymentMethodTypes([
    PaymentMethod.sberbank
]));

var tokenizationModuleInputData =
          TokenizationModuleInputData(clientApplicationKey: "<Ключ для клиентских приложений>",
                                      title: "Космические объекты",
                                      subtitle: "Комета повышенной яркости, период обращения — 112 лет",
                                      amount: Amount(value: 999.9, currency: Currency.rub),
                                      shopId: "<Идентификатор магазина в ЮKassa)>",
                                      savePaymentMethod: SavePaymentMethod.on,
                                      tokenizationSettings: tokenizationSettings);

2. Запустите процесс токенизации, передав TokenizationModuleInputData

var result = await YookassaPaymentsFlutter.tokenization(tokenizationModuleInputData);

3. Получите токен

var result = await YookassaPaymentsFlutter.tokenization(tokenizationModuleInputData);
if (result is SuccessTokenizationResult) {
    var token = result.token;
    var paymentMethodType = result.paymentMethodType;
} else if (result is ErrorTokenizationResult) {
    // обработайте ошибку
}

4. Создайте платеж с токеном по API ЮKassa.

Для подтверждения платежа через приложение Сбербанка:

1. Добавьте уникальную схему диплинка

Для iOS в Info.plist добавьте следующие строки:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>${BUNDLE_ID}</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>examplescheme</string>
        </array>
    </dict>
</array>

Для android в ваш файл build.gradle в блок android.defaultConfig добавьте строку

android {
    defaultConfig {
        resValue "string", "ym_app_scheme", "exampleapp"
    }
}

или добавить в ваш strings.xml строку вида:

<resources>
    <string name="ym_app_scheme" translatable="false">exampleapp</string>
</resources>

где examplescheme - схема для открытия вашего приложения, которую вы указали в applicationScheme при создании TokenizationModuleInputData. Через эту схему будет открываться ваше приложение после успешной оплаты с помощью SberPay.

2. Для android подключите библиотеку профилирования формата .aar

Попросите у менеджера по подключению библиотеку профилирования формата .aar. Создайте папку libs в модуле где подключаете sdk и добавьте туда файл aar-файл. В build.gradle того же модуля в dependencies добавьте:

dependencies {
    implementation fileTree(dir: "libs", include: ["*.aar"])
}

3. Добавить в Info.plist новые схемы для обращения в сервисам Сбера

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>sbolidexternallogin</string>
    <string>sberbankidexternallogin</string>   
</array>

и расширенные настройки для http-соединений к сервисам Сбера

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
    <key>gate1.spaymentsplus.ru</key>
    <dict>
       <key>NSExceptionAllowsInsecureHTTPLoads</key>
       <true/>
    </dict>
    <key>ift.gate2.spaymentsplus.ru</key>
    <dict>
       <key>NSExceptionAllowsInsecureHTTPLoads</key>
       <true/>
    </dict>
    <key>cms-res.online.sberbank.ru</key>
       <dict>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
       </dict>
    </dict>
</dict>

4. Подтверждение платежа. При необходимости система может запросить процесс подтверждения платежа, при котором пользователь подтверждает транзакцию с помощью сервисов Сбера. Ссылку вы получаете от бекенда Кассы после проведения платежа на шаге 4.

var clientApplicationKey = "<Ключ для клиентских приложений>";
var shopId = "<Идентификатор магазина в ЮKassa)>";

await YookassaPaymentsFlutter.confirmation(confirmationUrl, PaymentMethod.sbp, clientApplicationKey, shopId);
// обработайте результат подтверждения на следущей строке (после возврата управления)

Завершение процесса YookassaPaymentsFlutter.confirmation не несет информацию о том, что пользователь фактически подтвердил платеж (он мог его пропустить). После получения результата рекомендуем запросить статус платежа.

Переход на новую версию SberPay

(!) Далее описание настройки новой версии метода SberPay, если ранее вы его уже использовали.

Сценарий оплаты через Sberpay теперь происходит не в мобильном приложения, а через встроенное Sber SDK.

Список изменений для android:

Попросите у менеджера по подключению библиотеку формата .aar. Создайте папку libs в модуле где подключаете sdk и добавьте туда файл B.aar. В build.gradle того же модуля в dependencies добавьте:

dependencies {
    implementation fileTree(dir: "libs", include: ["*.aar"])
}

Также необходимо в метод YookassaPaymentsFlutter.confirmation передать параметр clientApplicationKey - ключ для клиентских приложений из личного кабинета ЮKassa (раздел Настройки — Ключи API);

var clientApplicationKey = "<Ключ для клиентских приложений>";
var shopId = "<Идентификатор магазина в ЮKassa)>";

await YookassaPaymentsFlutter.confirmation(confirmationUrl, PaymentMethod.sbp, clientApplicationKey, shopId);

Список изменений для iOS:

  1. В вашем файле Info.plist заменить схему для обращений в сервисам Сбера
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>sberpay</string> 
</array>

на обновленную версию

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>sbolidexternallogin</string>
    <string>sberbankidexternallogin</string>   
</array>
  1. Добавить расширенные настройки для http-соединений к сервисам Сбера
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
    <key>gate1.spaymentsplus.ru</key>
    <dict>
       <key>NSExceptionAllowsInsecureHTTPLoads</key>
       <true/>
    </dict>
    <key>ift.gate2.spaymentsplus.ru</key>
    <dict>
       <key>NSExceptionAllowsInsecureHTTPLoads</key>
       <true/>
    </dict>
    <key>cms-res.online.sberbank.ru</key>
       <dict>
           <key>NSExceptionAllowsInsecureHTTPLoads</key>
           <true/>
       </dict>
    </dict>
</dict>