Подключение Unity-плагина
- Шаг 1. Подготовьте идентификаторы
- Шаг 2. Подключите плагин Yandex Pay InApps
- Шаг 3. Укажите Client ID
- Шаг 4. Добавьте Android Activity в манифест
- Шаг 5. Разрешите Android-зависимости с помощью External Dependency Manager
- Интеграция Unity-плагина
- Шаг 6. Разместите кнопку оплаты на сцене
- Шаг 7. Укажите данные продавца
- Шаг 8. Сформируйте данные для оплаты
- Шаг 9. Обработайте результат оплаты
- Шаг 10. Кастомизируйте кнопку оплаты
Требования к подключению
Версия Android: Android 7.0 (API Level 24) и выше.
Версия Unity: Unity 2022.3 и выше.
Шаг 1. Подготовьте идентификаторы
Перед началом интеграции получите идентификаторы, которые понадобятся при подключении SDK:
- Merchant ID — идентификатор магазина в личном кабинете Яндекс Пэй. Узнать Merchant ID
- Android package name (
applicationId) — уникальный идентификатор Android-приложения. Подробнее об Application ID - SHA256 Fingerprints — криптографический хэш сертификата Android-приложения. Получить SHA256 Fingerprints
- Client ID (
YANDEX_CLIENT_ID) — идентификатор приложения в сервисе Яндекс OAuth. Получить Client ID
1.1 Получение SHA256 Fingerprints
Получите значение хеша SHA256 Fingerprints с помощью утилиты keytool:
keytool -list -v -alias <your-key-name> -keystore <path-to-production-keystore>
После ввода команды значение хеша отобразится в блоке Certificate fingerprints: SHA256.
1.2 Получение Client ID
Чтобы получить Client ID, зарегистрируйте приложение в сервисе Яндекс OAuth — это нужно, чтобы покупатели при оплате через Яндекс Пэй могли авторизоваться с помощью своего Яндекс ID.
Важно
Аккаунт, с которого вы регистрируете приложение в Яндекс OAuth, должен в Яндекс ID состоять в организации и иметь права разработчика. Добавить аккаунт в организацию и выдать права может сотрудник с ролью Владелец или Администратор.
Как проверить наличие прав
-
Если аккаунт состоит организации, в Яндекс OAuth при нажатии на фото профиля отображается название организации:

-
Чтобы проверить наличие прав разработчика, в Яндекс ID перейдите в список сотрудников организации → профиль сотрудника → Права в сервисах → Яндекс ID для сайта:

-
Перейдите в сервис Яндекс OAuth, нажмите кнопку Создать, выберите вариант Для авторизации пользователей и перейдите к созданию.

-
В поле Название вашего сервиса укажите название, которое будет отображаться пользователям на экране авторизации, и загрузите иконку приложения.

-
В разделе Платформы приложений выберите Android-приложение и укажите его параметры:
- Android package name — уникальное имя приложения из
applicationIdв конфигурационном файле проекта; - SHA256 Fingerprints — значение хеша SHA256. Все буквы в хеше должны быть заглавными.

- Android package name — уникальное имя приложения из
-
Добавьте доступ к Яндекс Пэй: в разделе Права доступа к данным пользователей в поле Название доступа укажите и выберите Оплата через Yandex Pay.
Примечание
Доступ Управление заказами Yandex Pay Checkout не требуется. Если он у вас добавлен, удалите его.

-
Нажмите кнопку Продолжить → Всё верно, создать приложение и скопируйте значение поля Client ID.

-
В разделе Настройки личного кабинета Яндекс Пэй нажмите Добавить Client ID и укажите значение Client ID.

Там же в разделе Настройки нажмите Добавить приложения, выберите нужный Client ID, платформу приложения и укажите SHA256 и Android package name в полях SHA256 Fingerprint и Android package name соответственно.

Шаг 2. Подключите плагин Yandex Pay InApps
-
Подключите External Dependency Manager согласно документации.
-
Добавьте плагин Yandex Pay InApps в зависимости в Packages/manifest.json:
{
"dependencies": {
"com.yandex.pay.inapps": "https://github.com/yandex-pay-mobile/inapps-unity-plugin.git"
}
}
Шаг 3. Укажите Client ID
Укажите полученный Client ID в сборочном скрипте Assets/Plugins/Android/launcherTemplate.gradle в manifestPlaceholders в качестве значения YANDEX_CLIENT_ID:
android {
defaultConfig {
// Подставьте ваш Client ID
manifestPlaceholders["YANDEX_CLIENT_ID"] = "12345678901234567890"
}
}
Если такой файл отсутствует
- В окне Unity-редактора выберите пункт меню Edit → Project Settings→ Player и откройте вкладку Android.
- Откройте раздел Publishing Settings.
- В разделе Build включите опцию Custom Launcher Gradle Template.
Примечание
Для следующего шага также потребуется кастомный AndroidManifest.xml. Чтобы его создать, в разделе Build включите опцию Custom Main Manifest.
Шаг 4. Добавьте Android Activity в манифест
Добавьте YPayActivity с указанной темой в манифест Assets/Plugins/Android/AndroidManifest.xml:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application>
...
<activity android:name="com.yandex.pay.inapps.YPayActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
</application>
</manifest>
Если такой файл отсутствует
- В окне Unity-редактора выберите пункт меню Edit → Project Settings→ Player и откройте вкладку Android.
- Откройте раздел Publishing Settings.
- В разделе Build включите опцию Custom Main Manifest.
Шаг 5. Разрешите Android-зависимости с помощью External Dependency Manager
В окне Unity-редактора выберите пункт меню: Assets → External Dependency Manager → Android → Force Resolve.
Интеграция Unity-плагина
Важно
Дальнейшие шаги описаны для упрощенного вида интеграции. Плагин будет инициализироваться при появлении кнопки YPay Button и деинициализироваться при ее уничтожении. Оплата будет начинаться при нажатии на кнопку.
При наличии дополнительных требований к контролю над процессом оплаты используйте подход с программной интеграцией. Для инициализации, деинициализации плагина и начала оплаты потребуется вызывать соответствующие функции самостоятельно.
Смешивание двух подходов может привести к непредсказуемым результатам!
Шаг 6. Разместите кнопку оплаты на сцене
- Во вкладке Project Unity-редактора раскройте папку Packages.
- В списке подключенных пакетов найдите Yandex Pay InApps.
- Найдите шаблон кнопки в директории
Yandex Pay InApps/Runtime/Prefabs/YPay Buttonи перетащите его на сцену.
Примечание
Кнопка оплаты, как и все UI-элементы, должна находиться внутри объекта Canvas. Также для работы Canvas необходим дополнительный объект EventSystem. Подробнее об этом см. в документации Unity.

Шаг 7. Укажите данные продавца

В инспекторе Unity выберите объект YPay Button. В редакторе кнопки заполните следующие данные:
Merchant Id— Merchant ID магазина из личного кабинета Яндекс Пэй;Merchant Name— наименование продавца (магазина), которое будет отображаться у пользователя;Merchant Url— URL сайта продавца (магазина), который будет отображаться у пользователя.
Включите опцию Sandbox, если хотите использовать тестовое окружение.
Шаг 8. Сформируйте данные для оплаты
Разработайте класс, реализующий интерфейс IYPayDataProvider. Этот класс должен генерировать ключ платежной сессии и получать платежную ссылку из сервиса Яндекс Пэй.
Пример реализации
using System.Threading.Tasks;
using UnityEngine;
using YPay;
public class YPayDataProvider : MonoBehaviour, IYPayDataProvider
{
public string GetPaymentSessionKey()
{
// Генерация ключа платежной сессии
var sessionKeyGenerator = new SomeSessionKeyGenerator();
var sessionKey = sessionKeyGenerator.GenerateSessionKey();
return sessionKey;
}
public async Task<string> GetPaymentUrlAsync()
{
// Получение платежной ссылки из Pay API
var networkManager = new SomeNetworkManager();
var paymentUrl = await networkManager.GetPaymentUrlAsync();
return paymentUrl;
}
}
Добавьте созданный скрипт в качестве компонента к кнопке оплаты.
Примечание
Подробнее про генерацию платежной ссылки можно посмотреть в документации бэкенда.
Шаг 9. Обработайте результат оплаты
Разработайте класс, реализующий интерфейс IYPayResultListener.
Пример реализации
using UnityEngine;
using YPay;
public class YPayResultListener : MonoBehaviour, IYPayResultListener
{
public void OnPaymentResult(IYPayResult result)
{
// Обработка результата оплаты
switch (result)
{
case IYPayResult.Success success:
HandleSuccess(success.OrderId);
break;
case IYPayResult.Failure failure:
HandleError(failure.ErrorMessage);
break;
case IYPayResult.Cancelled cancelled:
HandleCancellation();
break;
}
}
}
Коды ошибок
В случае неуспешной оплаты, дополнительно возвращается код ошибки errorMsg:
| Код ошибки | Описание |
|---|---|
incorrect payment url |
Неверная платежная ссылка |
transaction error |
Ошибка проведения транзакции |
failed to parse order ID |
Не удалось получить orderId при возврате результата |
invalid intent parsing |
Не удалось получить результат оплаты |
invalid result code |
Неверный код результата оплаты |
unresolved payment strategy |
Не удалось обработать результат оплаты, так как ваше приложение было закрыто в фоновом режиме |
session key not provided |
Не был предоставлен ключ сессии |
config data not provided |
Не был предоставлен объект СonfigData |
payment data not provided |
Не был предоставлен объект PaymentData |
Добавьте созданный скрипт в качестве компонента к кнопке оплаты.
Шаг 10. Кастомизируйте кнопку оплаты
Кастомизируйте средствами Unity-редактора внешний вид кнопки оплаты в соответствии с вашими требованиями к дизайну.