SDK для Android (legacy)
SDK для Android — это набор средств разработки для подключения мобильных приложений, работающих на платформе Android, к платёжной платформе ecommpay. В этом разделе представлена информация о работе с SDK для Android с примерами кода на языках программирования Java и Kotlin.
SDK для Android может встраиваться в мобильные приложения, работающие на платформе Android версии 4.4 (уровень API — 19) или выше и поддерживающие AndroidX. Для корректного отображения платёжной формы разрешение экрана мобильного устройства должно быть не менее 480x800 пикселей.
- Библиотеки для Android: https://github.com/ITECOMMPAY/paymentpage-sdk-android/releases/
- Примеры кода: https://github.com/ITECOMMPAY/paymentpage-sdk-android/
Общая информация
Возможности
- Google Pay — оплаты с использованием платёжных карт. Информация об особенностях проведения оплат с использованием метода Google Pay через SDK для Android представлена в разделе Оплата с использованием альтернативных платёжных методов.
- Skrill Wallet — оплаты с использованием электронных кошельков во всех странах.
- DOKU Wallet — оплаты с использованием электронных кошельков в Индонезии.
- Malaysian Online Banking — оплаты с использованием интернет-банкинга через банки Малайзии.
- Thai Online Banking — оплаты с использованием интернет-банкинга через банки Таиланда.
- Alipay — оплаты с использованием электронных кошельков в Китае.
- Neteller — оплаты с использованием электронных кошельков.
- Open banking в странах Европы — оплаты с использованием интернет-банкинга в следующих странах: Австрия, Бельгия, Великобритания, Венгрия, Германия, Греция, Латвия, Литва, Нидерланды, Румыния, Франция, Эстония.
Также поддерживается проведение платежей с использованием методов, информация о которых представлена в разделе Методы. По вопросам, связанным с подключением этих платёжных методов, следует обращаться к курирующему менеджеру ecommpay.
- Поддержка русского, английского, испанского, итальянского, немецкого и французского языков. Платёжная форма может отображаться на языке интерфейса мобильного устройства пользователя или на том языке, который для платёжной формы указывается со стороны мерчанта. При этом необходимо учитывать следующее:
- Если со стороны мерчанта указывается поддерживаемый SDK для Android язык, платёжная форма отображается на указанном языке.
- Если со стороны мерчанта указывается не поддерживаемый SDK для Android язык, платёжная форма отображается на английском языке.
- Если со стороны мерчанта язык не указывается, платёжная форма отображается на языке интерфейса мобильного устройства, если этот язык поддерживается SDK для Android, или на английском языке, если язык интерфейса мобильного устройства не поддерживается SDK для Android.
- Поддержка индивидуального дизайна и настройка цветового оформления платёжной формы (подробнее).
- Поддержка разных способов ввода данных карты (подробнее):
- вручную,
- сканируя карту,
- выбирая сохранённую карту,
- используя предварительно выбранную карту.
- Сбор или указание дополнительных данных о пользователе (подробнее).
- Уточнение дополнительных параметров, обязательных для проведения оплаты (подробнее).
- Поддержка аутентификации 3‑D Secure 2. Протокол 3‑D Secure 2 является новой версией протокола 3‑D Secure (Three-Domain Secure), который обеспечивает безопасное проведение интернет-оплат с использованием платёжных карт (Аутентификация 3‑D Secure).
- Поддержка повторных попыток оплаты в случае ошибок (подробнее).
- Получение информации о платеже: на всех страницах платёжной формы доступна кнопка информации, при выборе которой отображаются данные о сумме, идентификаторе и дате проведения платежа, а также описание платежа.
- Отправка электронного товарного чека пользователю (подробнее).
Состав
SDK для Android содержит файл с библиотеками ecommpaySDK.aar
и примеры работы на языках программирования Java и Kotlin.
Схема работы
Проведение платежей с использованием SDK для Android выполняется следующим образом:
- В клиентской части мобильного приложения формируется объект с необходимыми параметрами для проведения платежа.
- В серверной части мобильного приложения вычисляется подпись на основании параметров платежа.
- В клиентской части формируется итоговый запрос на проведение платежа и с помощью библиотеки отправляется в платёжную платформу ecommpay.
- В платёжной платформе выполняется обработка платежа.
- От платёжной платформы к клиентской части отправляется результат выполнения платежа.
- От платёжной платформы на заданный URL отправляется оповещение.
Подключение и использование
Для использования SDK для Android необходимо:
- Решить организационные вопросы, касающиеся взаимодействия с ecommpay:
- Если у компании нет идентификатора и ключа для взаимодействия с ecommpay — отправить заявку на подключение.
- Если у компании есть идентификатор и ключ для взаимодействия с ecommpay — сообщить специалистам технической поддержки о намерении интеграции с использованием SDK для Android и согласовать с ними порядок тестирования и запуска.
- Выполнить подготовительные технические работы:
- Обеспечить подписывание данных на стороне серверной части мобильного приложения.
- Скачать и подключить SDK для Android.
- Доработать клиентскую часть мобильного приложения для инициирования платежей необходимых типов и обработки результатов этих платежей.
- Протестировать и запустить в работу обновлённое приложение.
- Для тестирования следует использовать тестовый идентификатор проекта и данные тестовых карт, предоставленные специалистами технической поддержки ecommpay.
- Для перевода в рабочий режим следует изменить тестовое значение идентификатора проекта на рабочее значение, полученное от ecommpay.
При возникновении вопросов о работе с SDK для Android следует обращаться в службу технической поддержки ecommpay support@ecommpay.com.
Интерфейс платёжной формы
Обеспечение работы с подписью
Для обеспечения защиты информации при взаимодействиях с ecommpay передаваемые сообщения должны подписываться. Получение данных для подписывания должно выполняться в клиентской части приложения с помощью SDK для Android, а генерация подписи — в серверной части с использованием секретного ключа.
- Вычислить код HMAC для полученной строки на основе алгоритма SHA-512 и секретного ключа.
- Выполнить кодировку результата по алгоритму Base64.
- Строка для подписывания.
customer_id:5;payment_amount:30;payment_currency:EUR;payment_id:payment1;project_id:115
- Значение секретного ключа —
12345
. - Результат генерации подписи.
RTUC1Awbk1Wgc6ddAeVsxLxHfhM3T9X79SBwiWXSWiWMyUSAobIxLQTdiRWvdtMQOY6VdjRAVTj6L3zIH6iwLQ==
Реализацию алгоритмов следует выбирать с учётом технологий, используемых в серверной части приложения. Подробная информация о генерации подписи представлена в разделе о работе с подписью к данным.
Подключение библиотек
Подключение библиотек к проекту
- Загрузить файл
ecommpaySDK.aar
. - Добавить в проект библиотеки из загруженного файла. В Android Studio 3.0 для этого необходимо перейти в раздел Import .JAR/.AAR Package и указать расположение файла
ecommpaySDK.aar
.
, выбрать - Открыть файл модуля приложения (
build.gradle
). - Добавить параметры компиляции в секцию
android {}
:compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
- Добавить зависимости в секцию
dependencies {}
, если они не содержатся в этой секции.implementation project(path: ':ecommpaySDK') implementation 'io.card:android-sdk:5.5.1' implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.0.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.google.code.gson:gson:2.8.4' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.lifecycle:lifecycle-viewmodel:2.0.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.0.0'
- Добавить разрешения в файл манифеста
AndroidManifest.xml
.<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Подключение библиотек через MavenCentral
Для SDK для Android версии 1.10.0 и выше поддерживается подключение библиотек через MavenCentral. Для подключения библиотек через MavenCentral необходимо:
- Открыть файл модуля приложения (
build.gradle
). - Указать в секции
repositories {}
репозиторийmavenCentral
:allprojects { repositories { google() jcenter() mavenCentral() } }
Вызов платёжной формы
Вызов в Java
Для вызова платёжной формы необходимо выполнить следующие действия:
- Создать объект
ECMPPaymentInfo
. Этот объект должен содержать обязательные параметры для открытия платёжной формы:- projectID — идентификатор проекта, полученный от ecommpay при интеграции;
- paymentID — идентификатор платежа, уникальный в рамках проекта;
- paymentAmount — сумма платежа в дробных единицах;
- paymentCurrency — валюта платежа в формате ISO-4217 alpha-3;
- для оплат с прямым использованием платёжных карт —
customerEmail
илиcustomerPhone
(по крайней мере один из этих параметров).
Пример объекта
ECMPPaymentInfo
, который содержит только обязательные параметры:ECMPPaymentInfo paymentInfo = new ECMPPaymentInfo( 115, // идентификатор проекта, полученный от ecommpay при интеграции "internal_payment_id_1", // идентификатор платежа, уникальный в рамках проекта 1999, // сумма платежа в дробных единицах "USD" // валюта платежа в формате ISO-4217 alpha-3 );
Дополнительно могут использоваться следующие объекты и параметры:
- recurrentInfo — объект с информацией о повторяемой оплате (подробнее).
- paymentDescription — описание платежа (данный параметр доступен не только мерчанту, но и пользователю; если параметр paymentDescription передан в запросе, он отображается в платёжной форме в диалоговом окне с информацией о платеже; если параметр не передан в запросе, пользователю он не виден).
- customerID — идентификатор пользователя, уникальный в рамках проекта.
- regionCode — код страны пользователя в формате ISO 3166 alpha-2.
- ActionType — тип действия. Допустимые значения:
Sale
(по умолчанию),Auth
,Verify
иTokenize
. - token — токен карты.
- forcePaymentMethod — идентификатор платежного метода, который откроется в платёжной форме по умолчанию без возможности выбора пользователем другого платёжного метода. Список идентификаторов приведен в разделе Коды платёжных методов.
- hideSavedWallets — параметр, позволяющий управлять отображением сохранённых ранее платёжных инструментов и при необходимости скрывать сохранённые платёжные инструменты в платёжной форме. Возможные значения:
true
— сохранённые ранее платёжные инструменты скрыты, они не отображаются при открытии платёжной формы.false
— сохранённые ранее платёжные инструменты отображаются при открытии платёжной формы.
- ECMPScreenDisplayMode — объект, позволяющий управлять отображением финальной страницы оплаты и при необходимости скрывать её. В объекте возможно передавать следующие параметры:
hide_success_final_page
— финальная страница с сообщением о совершённом платеже не отображается в платёжной форме,hide_decline_final_page
— финальная страница с сообщением об отклонённом платеже не отображается в платёжной форме.
Пример передачи в запросе параметров
hide_success_final_page
иhide_decline_final_page
:// Init ECMPPaymentInfo paymentInfo.addEcmpScreenDisplayMode("hide_success_final_page") .addEcmpScreenDisplayMode("hide_decline_final_page");
Пример объектаECMPPaymentInfo
, который содержит необязательные параметры (описание платежа, идентификатор и страну пользователя):ECMPPaymentInfo paymentInfo = new ECMPPaymentInfo( 115, // идентификатор проекта, полученный от ecommpay при интеграции "internal_payment_id_1", // идентификатор платежа, уникальный в рамках проекта 1999, // сумма платежа в дробных единицах "USD", // валюта платежа в формате ISO-4217 alpha-3 "T-shirt with dog print", // описание платежа "10", // идентификатор пользователя, уникальный в рамках проекта "US" // код страны в формате ISO 3166 alpha-2 );
- Получить строку для подписывания указанных параметров.
paymentInfo.getParamsForSignature();
- Передать сгенерированную строку в серверную часть приложения.
- Сгенерировать подпись на стороне серверной части приложения и передать её в клиентскую часть.
- Добавить подпись в объект
paymentInfo
.paymentInfo.setSignature(signature);
- Вызвать платёжную форму.
startActivityForResult(ECMPActivity.buildIntent(this, paymentInfo), PAY_ACTIVITY_REQUEST);
Вызов в Kotlin
Для вызова платёжной формы необходимо выполнить следующие действия:
- Создать объект
ECMPPaymentInfo
. Этот объект должен содержать обязательные параметры для открытия платёжной формы:- projectID — идентификатор проекта, полученный от ecommpay при интеграции;
- paymentID — идентификатор платежа, уникальный в рамках проекта;
- paymentAmount — сумма платежа в дробных единицах;
- paymentCurrency — валюта платежа в формате ISO-4217 alpha-3.
Пример объекта
ECMPPaymentInfo
, который содержит только обязательные параметры:val paymentInfo = ECMPPaymentInfo( 115, // идентификатор проекта, полученный от ecommpay при интеграции "internal_payment_id", // идентификатор платежа, уникальный в рамках проекта 1999, // сумма платежа в дробных единицах "USD") // валюта платежа в формате ISO-4217 alpha-3
Внимание: С 12 августа 2024 года в связи с вступлением в силу новых требований платёжной системы Visa расширяется набор параметров, необходимых для аутентификации 3‑D Secure при проведении оплат с использованием карт этой платёжной системы. Для таких случаев становится обязательным передавать по крайней мере один из следующих параметров:customerEmail
илиcustomerPhone
. Эти параметры необходимо указывать в объектеECMPPaymentInfo
.Вместе с тем, рекомендуется передавать эти и ряд других параметров (с информацией о платёжном адресе пользователя) для проведения оплат с использованием карт всех платёжных систем, поскольку по данным платёжной системы Visa полноценное использование таких параметров может существенно (вплоть до 6 %) повышать проходимость платежей и кардинально (вплоть до 65 %) снижать число операций, признаваемых мошенническими после их выполнения. К параметрам с информацией о платёжном адресе пользователя относятся код страны в формате ISO 3166-1 alpha-2 (
billingCountry
), индекс (billingPostal
), название города (billingCity
) и название улицы (billingAddress
).Дополнительно могут использоваться следующие объекты и параметры:
- recurrentInfo — объект с информацией о повторяемой оплате (подробнее).
- paymentDescription — описание платежа (данный параметр доступен не только мерчанту, но и пользователю; если параметр paymentDescription передан в запросе, он отображается в платёжной форме в диалоговом окне с информацией о платеже; если параметр не передан в запросе, пользователю он не виден).
- customerID — идентификатор пользователя, уникальный в рамках проекта.
- regionCode — код страны пользователя в формате ISO 3166 alpha-2.
- ActionType — тип действия. Допустимые значения:
Sale
(по умолчанию),Auth
,Verify
иTokenize
. - token — токен карты.
- forcePaymentMethod — идентификатор платежного метода, который откроется в платёжной форме по умолчанию без возможности выбора пользователем другого платёжного метода. Список идентификаторов приведен в разделе Коды платёжных методов.
- hideSavedWallets — параметр, позволяющий управлять отображением сохранённых ранее платёжных инструментов и при необходимости скрывать сохранённые платёжные инструменты в платёжной форме. Возможные значения:
true
— сохранённые ранее платёжные инструменты скрыты, они не отображаются при открытии платёжной формы.false
— сохранённые ранее платёжные инструменты отображаются при открытии платёжной формы.
- ECMPScreenDisplayMode — объект, позволяющий управлять отображением финальной страницы оплаты и при необходимости скрывать её. В объекте возможно передавать следующие параметры:
hide_success_final_page
— финальная страница с сообщением о совершённом платеже не отображается в платёжной форме,hide_decline_final_page
— финальная страница с сообщением об отклонённом платеже не отображается в платёжной форме.
Пример передачи в запросе параметров
hide_success_final_page
иhide_decline_final_page
:// Init ECMPPaymentInfo paymentInfo.addEcmpScreenDisplayMode("hide_success_final_page") .addEcmpScreenDisplayMode("hide_decline_final_page");
Пример объекта
ECMPPaymentInfo
, который содержит необязательные параметры (описание платежа, идентификатор и страну пользователя):val paymentInfo = ECMPPaymentInfo( 115, // идентификатор проекта, полученный от ecommpay при интеграции "internal_payment_id", // идентификатор платежа, уникальный в рамках проекта 1999, // сумма платежа в дробных единицах "USD", // валюта платежа в формате ISO-4217 alpha-3 "T-shirt with dog print", // описание платежа "10", // идентификатор пользователя, уникальный в рамках проекта "US") // код страны в формате ISO 3166 alpha-2
- Получить строку для подписывания указанных параметров.
paymentInfo.getParamsForSignature();
- Передать сгенерированную строку в серверную часть приложения.
- Сгенерировать подпись на стороне серверной части приложения и передать её в клиентскую часть.
- Добавить подпись в объект
paymentInfo
.paymentInfo.signature = signature
- Вызвать платёжную форму.
startActivityForResult( ECMPActivity.buildIntent(this, paymentInfo), PAY_ACTIVITY_REQUEST)
Приём результатов
Для получения кода ответа о проведении платежа необходимо переопределить метод onActivityResult в том окне (activity), где вызывается ECMPActivity.
Код результата | Константа результата | Значение | Описание |
---|---|---|---|
0 | RESULT_SUCCESS | Success | Платёж проведён |
100 | RESULT_DECLINE | General decline | Проведение платежа отклонено из-за получения общей ошибки от платёжной платформы |
301 | RESULT_CANCELLED | Cancelled | Проведение платежа отменено пользователем |
501 | RESULT_FAILED | Internal error | Возникла внутренняя ошибка |
Обработка оповещений
Обзор
При работе с SDK для Android поддерживается использование оповещений, отправляемых платёжной платформой ecommpay напрямую к веб-сервису мерчанта, и оповещений, передаваемых вначале от платёжной формы к SDK для Android, а затем — от SDK для Android к мобильному приложению мерчанта. В первом случае набор параметров, передаваемых в оповещении, может отличаться в зависимости от установленных настроек (подробнее: Оповещения). Во втором случае передаётся строго определённый набор параметров — данные о статусе, типе и идентификаторе платежа, дате проведения платежа, используемом платёжном методе, сумме и валюте платежа:
{
"payment": {
"status": "success",
"type": "purchase",
"id": "12345",
"date": "2020-09-11T14:49:18+0000",
"method": "card",
"sum": 1000,
"currency": "USD"
}
}
Далее представлена информация об этих оповещениях.
Оповещения платёжной платформы
При проведении платежа платёжная платформа отправляет оповещения на указанный URL. Этот URL необходимо сообщить службе технической поддержки ecommpay. Подробная информация об оповещениях представлена в разделе Оповещения.
Оповещения SDK для Android
Мобильное приложение мерчанта может принимать от SDK для Android оповещения, которые передаются к SDK для Android от платёжной платформы. Оповещение отправляется мерчанту до того, как пользователю в платёжной форме отображается страница с информацией о результате проведения платежа.
Информация о платеже передаётся через широковещательные сообщения, которые поступают в приложение мерчанта от SDK для Android. Для получения этой информации мерчанту необходимо выполнить следующие шаги:
- Создать приёмник широковещательных сообщений — объект BroadcastReceiver.
- При поступлении в BroadcastReceiver широковещательных сообщениях от SDK для Android, с помощью ключа
ECPCallbackType.ECMP_CALLBACK_PAYMENT_RESULT.getValue()
получать из объекта Intent информацию о платеже. Ключ представляет собой константу, предоставляемую ECMPActivity.
Далее представлены примеры реализации BroadcastReceiver для получения информации о результате проведения платежа.
Управление платёжными данными
При оплате с помощью платёжной карты пользователю необходимо ввести данные карты на платёжной форме. Кроме традиционного способа ввода данных (вручную) SDK для Android позволяет сканировать карту, использовать сохранённую карту или токен карты для оплаты.
Оплата с использованием сохранённых данных
Пользователь может сохранить реквизиты карты при совершении оплаты. Тогда при проведении последующих платежей пользователю достаточно лишь выбрать карту из списка сохранённых и ввести значение CVV.
Для обеспечения возможности сохранения данных карты и проведения оплаты по сохранённым данным пользователя в объект ECMPPaymentInfo
необходимо добавить параметр customerID, который позволяет привязать список карт к определённому пользователю на стороне платёжной платформы. При проведении данного типа платежей SDK для Android отправляет запрос в платёжную платформу на получение списка сохранённых карт пользователя и при наличии таковых выводит их на платёжной форме. Если пользователь исключает карту из списка сохранённых, то SDK для Android отправляет запрос в платёжную платформу на удаление данных из списка сохранённых платёжных инструментов.
Оплата с использованием токенов
SDK для Android предоставляет возможность проводить платежи по токену карты. В этом случае на стороне серверной части приложения необходимо обеспечить хранение данных карты пользователя и её токена. Если заданный токен соответствует карте пользователя, то при проведении оплаты пользователю отображается форма оплаты с предварительно выбранной картой и заполненными данными этой карты, кроме CVV.
При использовании токена для проведения оплат параметр token должен быть включён в список параметров для подписывания.
Для оплаты по токену необходимо задать токен в объекте paymentInfo
:
paymentInfo.setToken(token);
Автоматическая генерация токена
Автоматическая генерация токена происходит при проведении первой успешной оплаты по карте, а также при успешной блокировке средств. Сгенерированный токен и время его создания возвращаются в оповещении о проведении платежа.
Генерация токена по запросу
Tokenize
в типе действия:Сгенерированный токен и время его создания возвращаются в оповещении о генерации токена.
Проведение платежей
Базовый вариант оплаты
По умолчанию в SDK для Android настроено проведение разовых одностадийных оплат (тип действия Sale
). Для проведения данного типа оплат можно использовать приведённые примеры и дополнительно ничего не настраивать.
Разовая двухстадийная оплата
- Задать значение
Auth
в типе действия. - Подтвердить списание средств через Dashboard или с помощью запроса на /v2/payment/card/capture.
Подробная информация о проведении оплат с предварительной блокировкой представлена в разделе Блокировка средств.
Повторяемая оплата
SDK для Android поддерживает проведение повторяемых оплат. Такие оплаты бывают трёх типов: OneClick, автооплаты и регулярные оплаты. Подробнее о повторяемых оплатах — в разделе Общая информация.
- Создать объект
ECMPRecurrentInfo
. -
Дополнительно можно задать:
-
Сумму списания. По умолчанию сумма списания равна сумме платежа. Задать другую сумму списания можно в объекте
recurrentInfo
: -
Дат и сумм списания. По умолчанию при повторяемых оплатах средства списываются с карты строго фиксированно по времени и сумме, но можно задать собственное расписание в объекте
recurrentInfo
:
-
- Добавить объект
ECMPRecurrentInfo
в объектECMPPaymentInfo
.
Проверка действительности карты
Проверка действительности платёжного инструмента используется в случае необходимости проверки карты пользователя без списания средств, а также для сохранения данных карты с целью дальнейшего использования. При проверке карты выполняется списание с карты нулевой суммы.
Для проведения верификации карты необходимо задать Verify
в типе действия:
Оплата с использованием альтернативных платёжных методов
SDK для Android поддерживает проведение оплат с использованием альтернативных платёжных методов: Google Pay, Skrill Wallet, DOKU Wallet, Banks of Malaysia, Banks of Thailand, Alipay, Neteller, а также оплат с использованием интернет-банкинга в странах Европы. В большинстве случаев пользователь перенаправляется к сервису платёжного метода для завершения оплаты. Описание каждого из этих методов представлено в отдельной статье, а далее также приведено описание особенностей работы с методом Google Pay.
Схема взаимодействия (для случая с перенаправлением) представлена далее.
Для проведения платежей с использованием альтернативных платёжных методов требуется связаться со специалистами службы технической поддержки ecommpay для включения данной возможности в рамках проекта. Также можно настроить передачу данных о пользователе (подробнее).
Google Pay
- Зарегистрироваться в сервисе Google Pay Business Console и получить идентификатор мерчанта в сервисе Google Pay (Google merchant ID).
- Принять и соблюдать Правила допустимого использования Google Pay API, а также принять условия, приведённые в Пользовательском соглашении Google Pay API.
- Связаться со специалистами технической поддержки ecommpay для подключения метода Google Pay в рамках требуемых проектов.
После этого можно проводить оплаты с использованием Google Pay. Все основные процедуры — вызов платёжной формы, приём результатов и обработка оповещений — выполняются при этом так же, как и при работе с другими методами, а при формировании запросов необходимо учитывать следующее:
- В запросах на открытие платёжной формы необходимо указывать идентификатор мерчанта в сервисе Google Pay (merchantId) и объект PaymentDataRequest, который используется для подключения приложения мерчанта к Google Pay API и описан в документации Google Pay API. Необходимо учесть, что в объекте PaymentDataRequest.transactionInfo должны использоваться следующие параметры:
- totalPriceStatus — статус итоговой суммы платежа; должно передаваться значение
FINAL
, подтверждающее, что итоговая сумма платежа соответствует сумме, отображённой пользователю; - totalPrice — сумма платежа в дробных единицах валюты; эта сумма должна соответствовать сумме, указанной в объекте PaymentDataRequest.PaymentInfo;
- currencyCode — код валюты платежа в формате ISO-4217 alpha-3.
Далее представлены примеры данных из запросов на открытие платёжной формы, содержащих идентификатор мерчанта merchantId и объект PaymentDataRequest.
Java
{ PaymentInfo paymentInfo = PaymentInfo() ... PaymentDataRequest paymentDataRequest = generatePaymentRequest(); paymentInfo.setPaymentDataRequest(paymentDataRequest); paymentInfo.setMerchantId("your merchant id"); ... } private PaymentDataRequest generatePaymentRequest() { return PaymentDataRequest.fromJson( "your json object"); }
Kotlin
{ val paymentInfo = PaymentInfo() ... val paymentDataRequest = generatePaymentRequest(); paymentInfo.setPaymentDataRequest(paymentDataRequest); paymentInfo.setMerchantId("your merchant id"); ... } private fun generatePaymentRequest() -> PaymentDataRequest { return PaymentDataRequest.fromJson( "your json object"); }
- totalPriceStatus — статус итоговой суммы платежа; должно передаваться значение
- Для использования метода Google Pay в качестве предварительно выбранного необходимо передать параметр forcePaymentMethod со значением
google_pay_host
. При этом отображение кнопки метода Google Pay в приложении мерчанта необходимо настроить в соответствии с фирменным стилем Google.
Сбор данных о пользователе
Для проведения платежа с использованием платёжной формы обычно требуется минимальный набор параметров, при этом для сбора данных о пользователях можно передавать и (или) запрашивать дополнительные данные, например, телефон или электронную почту пользователя. Подробнее — Сбор данных о пользователях.
paymentInfo
необходимо задать список дополнительных параметров и их значение. В этом случае переданные данные отображаются на платёжной форме в соответствующих полях.Индивидуальный дизайн
- использовать светлую или тёмную тему,
- настраивать оформление отдельных элементов.
Использование темы
Настройка оформления отдельных элементов
overlayColor
— цвет затемнения открытой области платёжной формы,statusBarColor
— цвет строки состояния,modalBackgroundColor
— цвет фона модального окна,fullScreenBackgroundColor
— цвет фона платёжной формы в полноэкранном режиме,headingTextColor
— цвет текста заголовка,menuTextColor
— цвет текста кнопок в заголовке модального окна,fieldTextColor
— цвет текста дополнительных полей, названий платёжных методов, данных на странице с информацией о результате проведения платежа,fieldPlaceholderTextColor
— цвет заполнителей полей,fieldImageTintColor
— цвет иконок в полях ввода при оплате новой картой и в поле CVV,fieldBackgroundColor
— цвет кнопок платёжных систем и поля CVV,fieldUnderlineSelectedColor
— цвет нижней линии полей ввода при выборе поля в фокус,fieldUnderlineDefaultColor
— цвет нижней линии полей ввода по умолчанию,fieldUnderlineErrorColor
— цвет нижней линии полей ввода при неуспешной проверке заполненного поля,navigationBarItemsColor
— цвет кнопок панели навигации,navigationBarColor
— цвет панели навигации,primaryTintColor
— основной цвет кнопок и иконок платёжной формы,secondaryTintColor
— вспомогательный цвет платёжной формы,actionButtonDisableBackgroundColor
— цвет заблокированной кнопки,actionButtonDisableTextColor
— цвет текста на заблокированной кнопке,actionButtonTextColor
— цвет текста на активной кнопке,supportiveTextColor
— цвет вспомогательного текста,secureKeyboardTextColor
— цвет цифр экранной клавиатуры,showShadow
— включение тени кнопок платежных методов и сохранённых карт на странице выбора платёжных методов,showLightLogo
— включение светлых логотипов при использовании тёмной темы.