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