SDK для Android: UI & Core

Общая информация

Введение

SDK для Android: UI & Core — это набор средств разработки с открытым программным кодом, позволяющий подключать к платежной платформе JetPay мобильные Android-приложения.

SDK для Android: UI & Core обеспечивает взаимодействие мобильного приложения с платежной платформой для отправки и приема информации, необходимой для проведения платежей, а также предоставляет интерфейс для взаимодействия с пользователем. Кроме того, за счет открытого программного кода при использовании SDK для Android: UI & Core можно гибко настраивать пользовательский интерфейс, изменяя его в соответствии со спецификой вашего приложения.

SDK для Android: UI & Core можно встраивать в мобильные приложения, работающие на платформе Android версии 5.0 и выше. Библиотеки SDK для Android: UI & Core и примеры кода расположены на портале GitHub:

Возможности

SDK для Android: UI & Core предоставляет следующие возможности:

  • Проведение различных платежей с прямым использованием платежных карт и применением метода Google Pay, а также других платежных методов, доступных в проекте мерчанта. Поддерживаются следующие типы платежей:
    • одностадийная разовая оплата;
    • двухстадийная разовая оплата с блокировкой средств через SDK и последующим списанием через Gate или Dashboard;
    • повторяемая оплаты с регистрацией через SDK и последующим управлением списаниями через Gate или Dashboard.
    Прим.: При проведении платежей с использованием карт и метода Google Pay задействуется платежный интерфейс, описанный в этой статье, а при проведении платежей с использованием других платежных методов — платежная форма Payment Page.
  • Проверка действительности платежных карт путем выполнения платежа на нулевую сумму.
  • Контроль состояния платежа.
  • Поддержка различных вспомогательных процедур и дополнительных возможностей для повышения проходимости платежей, в том числе:
    • дополнение информации о платеже;
    • повторные попытки проведения платежа;
    • каскадное проведение платежа;
    • сбор данных о пользователях.
  • Поддержка различных дополнительных возможностей для повышения удобства пользователей, в том числе:
    • сохранение платежных данных пользователей;
    • изменение языка платежного интерфейса;
    • отправка пользователям уведомлений с информацией о товарных позициях по выполненным платежам.
  • Возможности индивидуального оформления платежного интерфейса, включая его стилизацию за счет использования логотипа и настройки цветовой палитры, а также более глубокую адаптацию к специфике приложения за счет работы с открытым программным кодом SDK.

Схема работы

В общем случае одностадийная оплата с использованием SDK для Android: UI & Core проводится по следующей схеме.

  1. Пользователь инициирует оплату в пользовательском интерфейсе мобильного приложения, щелкая кнопку оплаты или другим доступным способом.
  2. Приложение формирует набор всех параметров для создания платежного сеанса, с помощью SDK для Android: UI & Core этот набор преобразуется в строку для подписывания, после чего строка передается в серверную часть веб-сервиса мерчанта.
  3. В серверной части веб-сервиса мерчанта при необходимости могут выполняться проверка и дополнение параметров и обязательно формируется подпись к итоговому набору параметров, после чего подготовленные данные передаются обратно в SDK для Android: UI & Core.
  4. С помощью SDK для Android: UI & Core инициируется платежный сеанс в платежной платформе.
  5. На основе параметров вызова платежная платформа подготавливает платежный интерфейс и передает пользовательскому устройству данные для отображения этого интерфейса.
  6. В мобильном приложении пользователю отображается форма оплаты.
  7. Пользователь выбирает платежный метод (если он не был задан при открытии платежной сессии), вводит необходимую информацию и запускает оплату.
  8. SDK для Android: UI & Core отправляет в платежную платформу запрос на оплату.
  9. Платежная платформа регистрирует платеж и предпринимает другие действия, в том числе передает данные в платежную среду провайдерам и платежным системам.
  10. Платеж выполняется в платежной среде, после чего в платежную платформу поступает информация о результате.
  11. Платежная платформа обрабатывает итоговую информацию, после чего отправляет в серверную часть веб-сервиса оповещение (callback) c результатом оплаты.
  12. Платежная платформа отправляет в SDK для Android: UI & Core информацию о результате оплаты.
  13. Информация о результате отображается в пользовательском интерфейсе.

Платежная страница

При проведении платежа с использованием платежной карты и платежного метода Google Pay пользователю отображается платежная страница, предоставленная JetPay. Но при желании вы можете изменить базовый цвет пользовательского интерфейса и добавить свой логотип.

Подготовка к использованию

Порядок интеграции

Чтобы подключить веб-сервис к платежной платформе JetPay с использованием SDK для Android: UI & Core:

  1. Решите организационные вопросы, касающиеся взаимодействия с JetPay:
    1. Если у вас нет идентификатора и ключа для взаимодействия с JetPay — отправьте заявку на подключение.
    2. Если у вас есть идентификатор и ключ для взаимодействия с JetPay, сообщите специалистам технической поддержки о намерении интеграции с использованием SDK для Android: UI & Core и согласуйте порядок тестирования и запуска.
  2. Выполните подготовительные технические работы:
    1. Загрузите и подключите библиотеки SDK для Android: UI & Core.
    2. Обеспечьте сбор данных, необходимых для вызова платежной формы. Для вызова платежной формы как минимум необходимы: идентификаторы проекта, платежа и пользователя, а также сумма и валюта платежа.
    3. Обеспечьте подписывание данных в серверной части своего мобильного приложения.
    4. Позаботьтесь, чтобы ваш веб-сервис принимал и корректно реагировал на уведомления от SDK для Android: UI & Core, а также на оповещения от платежной платформы.
  3. Согласуйте со специалистами технической поддержки JetPay порядок и сроки интеграции, тестирования (в том числе с использованием доступных платежных методов) и запуска решения в работу.
    1. В процессе тестирования используйте идентификатор тестового проекта и данные тестовых карт.
    2. Чтобы перейти в рабочий режим, замените тестовый идентификатор на рабочий идентификатор, полученный от JetPay.

По любым вопросам о работе с SDK для iOS: UI & Core обращайтесь в службу технической поддержки JetPay (support@jetpay.kz).

Подключение библиотеки

Для приложений на базе Android версии 5.0 и выше библиотека SDK для Android: UI & Core подключается через MavenCentral.

Чтобы подключить библиотеку:

  1. Откройте в приложении модуль build.gradle.kts.
  2. Добавьте в секцию repositories репозиторий mavenCentral:
    allprojects {
        repositories {
            google()
            mavenCentral()
        }
    }
  3. Добавьте в секцию dependencies следующее:
    implementation "kz.jetpay:msdk-ui:LATEST_VERSION"

Подписывание

Подписывание данных должно выполняться в серверной части веб-сервиса с использованием секретного ключа, полученного от JetPay. Для работы с подписью могут использоваться готовые компоненты, такие как SDK для веб-сервисов на разных языках программирования, либо собственные решения, реализованные на стороне мерчанта. Подробно о подписывании см. Подписывание и проверка подписи.

Тестирование

Перед проведением реальных платежей через SDK для Android: UI & Core рекомендуется протестировать проведение платежей с использованием тестового проекта. Идентификатор тестового проекта и секретный ключ для него можно получить при подключении к тестовой среде JetPay. Также по согласованию со специалистами JetPay можно протестировать использование метода Google Pay и дополнительных возможностей, таких как каскадные платежи и сбор данных о пользователях.

Чтобы протестировать проведение платежей:

  1. Откройте в приложении модуль build.gradle.kts.
  2. Укажите идентификатор тестового проекта (projectId) и соответствующий ему секретный ключ (projectSecretKey).
  3. Запустите синхронизацию gradle.

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

Использование

Вызов платежной формы

SDK для Android: UI & Core поддерживает выполнение таких целевых действий как проведение одностадийных разовых оплат, блокировка средств пользователей в рамках проведения двухстадийных оплат, регистрация повторяемых оплат и проверка действительности платежных карт. Для инициирования таких действий требуется определенный набор параметров: обязательный минимум параметров передается в объекте JetPayPaymentInfo, в то время как остальные параметры могут быть переданы в объекте JetPayPaymentOptions, запрошены у пользователя, а также получены со стороны платежной платформы.

Для вызова платежной формы необходимо выполнить следующие действия:

  1. Создать объект JetPayPaymentInfo.
    • Этот объект должен содержать следующие обязательные параметры:
      • projectId (integer) — идентификатор проекта, полученный от JetPay;
      • paymentId (string) — идентификатор платежа, уникальный в рамках проекта;
      • paymentCurrency (string) — код валюты платежа в формате ISO-4217 alpha-3;
      • paymentAmount (integer) — сумма платежа в дробных единицах валюты;
      • customerId (string) — идентификатор пользователя в рамках проекта;
      • signature (string) — подпись запроса, составленная после указания всех целевых параметров.
    • Дополнительно могут использоваться и другие параметры, представленные в следующей таблице.
    val JetPayPaymentInfo = JetPayPaymentInfo(
          projectId = 77655,
          paymentId = "payment_322",
          paymentAmount = 100,
          paymentCurrency = "USD",
          paymentDescription = "Cool stuff shop payment payment",    //Описание платежа
          customerId = "customer_003",
          regionCode = "DE",      //Код страны проживания пользователя
          token = "o8i7u65y4t3rkjhgfdw3456789oikjhgfdfghjkl...", //Токен платежных данных
          languageCode = "de",    //Код языка отображения платежного интерфейса
          receiptData = "eyAKICAicG9zaXRpb25zIjpbIAxLAogICAgICAgICJhbW91bnQiOjU5OTAsCiAgQ==",
          //Данные уведомления с информацией о товарных позициях
          hideSavedWallets = false, // Параметр отображения сохраненных платежных данных
          forcePaymentMethod = "card" //Код предварительно выбранного платежного метода
       )
  2. Подписать параметры из объекта JetPayPaymentInfo.
    JetPayPaymentInfo.signature = SignatureGenerator.generateSignature(
           paramsToSign = JetPayPaymentInfo.getParamsForSignature(),
           secret = SECRET_KEY
       )
  3. Создать объект JetPayPaymentOptions, который должен содержать обязательный параметр actionType (string). В этом параметре необходимо указать целевое действие: тип операции Sale, Auth или Verify. Дополнительно также можно указать объекты и параметры, представленные в следующей таблице.

    Следующий пример помимо обязательных объекта JetPayPaymentInfo и параметра actionType содержит ряд дополнительных параметров, в том числе объект additionalFields с данными, которые отображаются в полях для сбора информации о пользователе.

    val paymentOptions = paymentOptions {
            paymentInfo = JetPayPaymentInfo
            actionType = JetPayActionType.Sale
            brandColor = "#800008"
            isDarkTheme = false
            logoImage = BitmapFactory.decodeResource(resources, R.drawable.example_logo)
            hideScanningCards = false 
            isTestEnvironment = true
            merchantId = BuildConfig.GPAY_MERCHANT_ID
            merchantName = "Example Merchant Name"
            screenDisplayModes {
              mode(JetPayScreenDisplayMode.HIDE_DECLINE_FINAL_SCREEN)
              mode(JetPayScreenDisplayMode.HIDE_SUCCESS_FINAL_SCREEN)
            }
            additionalFields {
              field {
                type = JetPayAdditionalFieldType.CUSTOMER_EMAIL
                value = "mail@example.com"
              }
              field {
              type = JetPayAdditionalFieldType.CUSTOMER_FIRST_NAME
                value = "firstName"
              }
            }
    }
  4. Создать объект JetPayPaymentSDK.
    val sdk = JetPayPaymentSDK(
            context = applicationContext,
            paymentOptions = paymentOptions,
            )

    При необходимости платежную форму можно открыть в тестовом режиме, чтобы получить информацию об ошибках, допущенных при указании параметров платежа, а при отсутствии ошибок протестировать проведение оплат с определенным результатом. Для этого в запросе на открытие платежной формы в объекте JetPayPaymentSDK следует передать значение JetPayPaymentSDK.JetPayMockModeType.SUCCESS для параметра mockModeType (если необходим результат — платеж проведен). Также можно использовать значения JetPayPaymentSDK.JetPayMockModeType.DECLINE (если необходим результат — платеж отклонен) и JetPayPaymentSDK.JetPayMockModeType.DISABLED (для открытия формы в рабочем режиме).

  5. Открыть платежный интерфейс.
    sdk.openPaymentScreen(this, 1234)

Проведение платежей

По умолчанию в SDK для Android: UI & Core настроено проведение разовых одностадийных оплат (с типом действия Sale). Для проведения оплат такого типа можно использовать приведенные выше примеры и дополнительно ничего не настраивать.

Вместе с тем при работе с SDK для Android: UI & Core можно проводить и двухстадийные оплаты (с блокировкой средств через SDK и последующим списанием). Для этого следует:

  1. Вызвать платежную форму, задав тип действия JetPayActionType.Auth в объекте paymentOptions:
    JetPayPaymentOptions.JetPayActionType.Auth;
  2. Когда потребуется, подтвердить списание средств через Dashboard (подробнее см. Проведение оплаты) или через Gate (с помощью запроса к конечной точке /v2/payment/card/capture).

Проверка платежных карт

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

Для такой проверки вызовите платежную форму с типом действия JetPayActionType.Verify в объекте paymentOptions:

JetPayPaymentOptions.JetPayActionType.Verify;

Получение информации о платеже

Для получения уведомлений о результатах проведения платежей используется метод onActivityResult.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
 
        when (resultCode) {
            JetPayPaymentSDK.RESULT_SUCCESS -> {
                Toast.makeText(this, "Payment was finished successfully", Toast.LENGTH_SHORT).show()
                Log.d("PaymentSDK", "Payment was finished successfully")
            }
            JetPayPaymentSDK.RESULT_CANCELLED -> {
                Toast.makeText(this, "Payment was cancelled", Toast.LENGTH_SHORT).show()
                Log.d("PaymentSDK", "Payment was cancelled")
            }
            JetPayPaymentSDK.RESULT_DECLINE -> {
                Toast.makeText(this, "Payment was declined", Toast.LENGTH_SHORT).show()
                Log.d("PaymentSDK", "Payment was declined")
            }
            JetPayPaymentSDK.RESULT_ERROR -> {
                val errorCode = data?.getStringExtra(JetPayPaymentSDK.EXTRA_ERROR_CODE)
                val message = data?.getStringExtra(JetPayPaymentSDK.EXTRA_ERROR_MESSAGE)
                Toast.makeText(this, "Payment was interrupted. See logs", Toast.LENGTH_SHORT).show()
                Log.d(
                    "PaymentSDK",
                    "Payment was interrupted. Error code: $errorCode. Message: $message"
                )
            }
        }
    }

Допустимые коды результатов проведения платежей:

  • RESULT_SUCCESS — платеж проведен;
  • RESULT_CANCELLED — платеж отменен;
  • RESULT_DECLINE — платеж отклонен;
  • RESULT_ERROR — возникла ошибка при проведении платежа.

Дополнительные возможности

Дополнение информации о платеже

В общем случае для проведения платежа в запросе достаточно передавать набор параметров, обязательных для инициирования этого платежа. Но в некоторых случаях со стороны платежной системы или провайдера могут запрашиваться дополнительные данные, необходимые для проведения конкретного платежа. Это может быть вызвано специфическими региональными требованиями, необходимостью дополнительной проверки на мошенничество или иными факторами. Подробная информация о процедуре дополнения информации о платеже представлена в отдельной статье.

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

Каскадное проведение платежей

В случаях, когда по каким-либо причинам попытка проведения платежа не завершилась успешно, можно использовать каскадное проведение платежей, которое включает в себя последовательные дополнительные попытки проведения платежа через резервных провайдеров без изменения платежного метода. Подключение этой возможности необходимо согласовывать со специалистами JetPay.

Если для используемого проекта подключена возможность каскадного проведения платежей, то после выполнения первой неуспешной попытки со стороны SDK для Android: UI & Core поступает уведомление, в котором содержится признак cascading_with_redirect = true. Пользователю при этом отображается страница с ошибкой и кнопкой для выполнения очередной попытки. Если в рамках дополнительной попытки не требуется аутентификация 3‑D Secure, то попытка выполняется без взаимодействия с пользователем, иначе — отображается страница с повторной аутентификацией.

Сбор данных о пользователях

В некоторых случаях вместе с обязательными данными актуально запрашивать у пользователей и дополнительные, например номера их телефонов и адреса электронной почты. Для подключения такой возможности со стороны мерчанта необходимо определить список запрашиваемых данных, а также обязательность их заполнения пользователями и сообщить эту информацию специалистам технической поддержки. Подробная информация об использовании возможности сбора дополнительных данных представлена в отдельной статье.

Управление языком платежного интерфейса

По умолчанию при работе с SDK для Android: UI & Core в платежном интерфейсе используется язык устройства пользователя, если он поддерживается для используемого проекта, или язык, определенный по умолчанию для остальных случаев (в общем случае — английский). Вместе с тем, если это актуально, можно задавать определенные языки для конкретных сеансов. Для этого в каждом таком случае при вызове платежной формы необходимо передавать соответствующий код языка в параметре languageCode (Подробнее см. Параметры вызова).

Внимание: При указании языка, не поддерживаемого для используемого проекта, платежная форма не открывается и пользователю отображается информация об ошибке.

Платформа позволяет подключать и использовать в интерфейсе SDK разные языки. Вот перечень кодов доступных для подключения языков:

  • de — немецкий;
  • en — английский;
  • es — испанский;
  • fr — французский.
  • hu — венгерский;
  • it — итальянский;
  • kk — казахский;
  • ru — русский;

Сохранение платежных данных

SDK для Android: UI & Core позволяет сохранять платежные данные пользователей для последующего проведения платежей без повторного указания пользователями реквизитов. Возможность сохранения платежных данных подключается для каждого проекта отдельно; со стороны мерчанта необходимо сообщить специалистам технической поддержки подходящий вариант сохранения: всегда или по выбору пользователя. Информация об этой возможности представлена в отдельной статье (подробнее).

В результате сохранения платежных данных для каждого платежного инструмента формируется идентификатор, ассоциированный с идентификатором конкретного пользователя (customerId). Для отображения пользователю сохраненных данных его платежных инструментов в объекте JetPayPaymentOptions необходимо передавать параметр hideSavedWallets со значением false.

Параметры вызова

Для работы с SDK для Android: UI & Core в объекте JetPayPaymentInfo можно использовать следующие дополнительные параметры.

Параметр Описание

paymentDescription
String

Описание платежа. Строка длиной не более 255 символов.

Пример: Fancy shoes purchase

receiptData
String

Данные уведомления с информацией о товарных позициях. Представляет собой JSON-объект, закодированный с использованием алгоритма Base 64.

Пример: eyAgCiAgICAgICJwb3NpdGlvbnMiOlsgIAogICAgICAgICB7ICAKICAgICAgI CAgICAgInF1YW50aXR5IjozLAogICAgICAgICAgICAiYW1vdW50IjoxMDAwMC wKICAgICAgICAgICAgInRheCI6MTgsCiAgICAg

token
String

Токен платежных данных. Представляет собой строку длиной не более 255 символов.

Пример: 6bbd9255e484f00cc778246c5b7489aa4c498b8bb5231e85942437c

hideSavedWallets
Boolean

Параметр, позволяющий управлять отображением сохраненных ранее платежных инструментов.

Возможные значения:

  • true — не отображать сохраненные данные.
  • false — отображать сохраненные данные.

forcePaymentMethod
String

Код предварительно выбранного платежного метода. Эти коды перечислены в разделе Коды поддерживаемых платежных методов на Payment Page.

Пример: card

JetPayThreeDSecureInfo
Object

Объект, включающий в себя дополнительные объекты и параметры, которые используются в процессе аутентификации 3‑D Secure 2

languageCode
String

Код языка отображения платежного интерфейса в формате ISO 639-1 alpha-2. Должен соответствовать одному из языков, поддерживаемых для используемого проекта.

Пример: EN

regionCode

String

Код страны проживания пользователя в формате ISO 3166-1 alpha-2.

Пример: GB

В объекте JetPayPaymentOptions можно использовать следующие дополнительные параметры.

Параметр Описание

merchantID
String

Идентификатор мерчанта в сервисе Google Pay.

merchantName
String

Название мерчанта в сервисе Google Pay.

logoImage
Bitmap

Файл с логотипом мерчанта в формате BMP.

brandColor
String

Цвет платежного интерфейса в шестнадцатеричном формате HEX.

Пример: #800080

isTestEnvironment
Boolean

Признак тестового платежа.

Возможные значения:

  • true — тестовый платеж;
  • false — платеж в рабочем режиме.

additionalFields
List

Дополнительные поля с информацией о пользователе. Содержит список параметров и может включать их значения.

Пример: JetPayAdditionalField(JetPayAdditionalFieldType.CUSTOMER_EMAIL,"mail@mail.com")

recipientInfo
Object — объект, содержащий сведения о получателе платежа

pan
String

Номер карты.

Пример: 5443011850290191

card_holder
String

Имя и фамилия (в соответствии с указанными на карте).

Пример: Sonya Svantesson

wallet_id
String

Номер электронного кошелька.

Пример: WID301185029011891

wallet_owner
String

Имя и фамилия получателя.

Пример: Sonya Svantesson

country
String

Код страны проживания в формате ISO 3166-1 alpha-2.

Пример: SE

address
String

Адрес проживания.

Пример: Albanovaegen 28

city
String

Город проживания.

Пример: Stockholm

state
String

Штат проживания.

Пример: MN

Параметры для работы с повторяемыми оплатами необходимо передавать в объекте recurrentData, который входит в объект JetPayPaymentOptions.

Параметр Описание

type
String

Указатель типа повторяемой оплаты :

  • C — экспресс-оплата (OneClick)
  • U — автооплата
  • R — регулярная оплата

period
String

Периодичность списаний регулярной оплаты.

Возможные значения:

  • D — ежедневно
  • W — еженедельно
  • M — ежемесячно
  • Q — ежеквартально
  • Y — ежегодно

expiry_day
String

День окончания действия повторяемой оплаты

expiry_month
String

Месяц окончания действия повторяемой оплаты

expiry_year
Int

Год окончания действия повторяемой оплаты

scheduled_payment_id
String

Идентификатор, который необходимо присвоить повторяемой оплате (для автоматического инициирования списаний).

Параметр следует передавать вместе с параметром start_date

start_date
String

Дата первого списания в формате dd-mm-yyyy (параметр обязательно используется в связке с параметром scheduled_payment_id)

time
String

Время выполнения последующих списаний (для регулярной оплаты) в формате hh:mm:ss; передается, если указан параметр period

schedule
Object

расписание проведения повторяемых оплат (можно задать со стороны мерчанта). Следует указать параметры amount и date

amount
Int

Фиксированная сумма последующих списаний в дробных единицах валюты

date
String

Дата списания в формате dd-mm-yyyy

В объекте JetPayThreeDSecureInfo доступны следующие дополнительные объекты и параметры.

Параметр Описание
threeDSecureInfo — объект класса JetPayThreeDSecureInfo, содержащий дополнительные объекты и параметры, используемые в процессе аутентификации 3‑D Secure 2
threeDSecurePaymentInfo — объект класса JetPayThreeDSecurePaymentInfo, содержащий информацию о деталях покупки пользователя и о предпочтительном для мерчанта варианте аутентификации

challengeIndicator
String

Указатель предпочтения по использованию варианта аутентификации challenge flow.

Возможные значения:
  • 01 — без предпочтений,
  • 02 — предпочтительно не выполнять,
  • 03 — предпочтительно выполнять,
  • 04 — обязательно выполнять

challengeWindow
String

Размер окна для открытия страницы аутентификации.

Возможные значения:
  • 01 — 250 x 400 пикселей,
  • 02 — 390 x 400 пикселей,
  • 03 — 500 x 600 пикселей,
  • 04 — 600 x 400 пикселей,
  • 05 — полноэкранный режим

preorderDate
String

Планируемая дата поступления товара или услуги в формате ДД-ММ-ГГГГ

preorderPurchase
String

Индикатор предварительного заказа.

Возможные значения:
  • 01 — не предварительный заказ,
  • 02 — предварительный заказ

reorder
String

Индикатор первичной или повторной покупки данного товара или услуги пользователем.

Возможные значения:
  • 01 — первичная покупка,
  • 02 — повторная покупка
threeDSecureGiftCardInfo — объект класса JetPayThreeDSecureGiftCardInfo, содержащий информацию об оплате предоплаченными или подарочными картами

amount
Int

Общая сумма оплаты предоплаченными или подарочными картами в дробных единицах валюты

currency
String

Код валюты оплаты предоплаченными или подарочными картами в формате ISO 4217 alpha-3 (например, GBP)

count
Int

Количество предоплаченных или подарочных карт, использованных для оплаты
threeDSecureCustomerInfo — объект класса JetPayThreeDSecureCustomerInfo, содержащий информацию о пользователе

addressMatch
String

Указатель совпадения платежного адреса пользователя с адресом доставки, указанным в объекте threeDSecureShippingInfo.

Возможные значения:
  • Y — адреса совпадают,
  • N — адреса не совпадают

billingRegionCode
String

Код штата, провинции или региона страны в формате ISO 3166-2, например MOS для Московской области.

homePhone
String

Номер домашнего телефона пользователя, может содержать только цифры, от четырех до двадцати четырех (например, 44991234567)

workPhone
String

Номер рабочего телефона пользователя, может содержать только цифры, от четырех до двадцати четырех (например, 44997654321)
threeDSecureAccountInfo — объект класса JetPayThreeDSecureAccountInfo, содержащий информацию об учетной записи пользователя на стороне мерчанта;

additional
String

Дополнительная информация об учетной записи пользователя, например ее идентификатор; в произвольном формате с использованием до шестидесяти четырех символов

activityDay
Int

Количество попыток проведения оплаты за последние 24 часа, не более трех символов

Пример: 999

activityYear
Int

Количество попыток проведения оплаты за последние 365 дней, не более трех символов.

Пример: 999

ageIndicator
String

Количество дней с момента создания учетной записи пользователя.

Возможные значения:
  • 01 — платеж проводится без аутентификации в учетной записи,
  • 02 — учетная запись создана в день проведения платежа,
  • 03 — менее 30 дней,
  • 04 — от 30 до 60 дней,
  • 05 — более 60 дней

authData
String

Дополнительная информация об аутентификации на стороне веб-сервиса в произвольном формате. Не более 255 символов

authMethod
String

Указатель способа последней аутентификации пользователя на стороне веб-сервиса.

Возможные значения:
  • 01 — доступ без аутентификации;
  • 02 — аутентификация с использованием данных, сохраненных на стороне мерчанта;
  • 03 — аутентификация с использованием Federated ID (например, Google Account или Facebook);
  • 04 — аутентификация с использованием аутентификатора, соответствующего стандартам Fast IDentity Online (FIDO)

authTime
String

Дата и время последней аутентификации пользователя на стороне веб-сервиса в формате ДД-ММ-ГГГГчч:мм

date
String

Дата создания учетной записи в формате ДД-ММ-ГГГГ

changeDate
String

Дата последних изменений в учетной записи, за исключением изменения или сброса пароля, в формате ДД-ММ-ГГГГ

changeIndicator
String

Количество дней с момента последних изменений в учетной записи, за исключением изменения или сброса пароля.

Возможные значения:
  • 01 — изменения в день проведения платежа,
  • 02 — менее 30 дней,
  • 03 — от 30 до 60 дней,
  • 04 — более 60 дней

passChangeDate
String

Дата последнего изменения или сброса пароля в формате ДД-ММ-ГГГГ

passChangeIndicator
String

Количество дней с момента последнего изменения или сброса пароля.

Возможные значения:
  • 01 — пароль не был изменен или сброшен,
  • 02 — пароль был изменен или сброшен в день проведения платежа,
  • 03 — менее 30 дней,
  • 04 — от 30 до 60 дней,
  • 05 — более 60 дней

paymentAge
String

Дата добавления платежных данных карты в формате ДД-ММ-ГГГГ

paymentAgeIndicator
String

Количество дней с момента сохранения данных платежной карты, используемой для проведения платежа, в учетной записи пользователя.

Возможные значения:
  • 01 — платеж проводится без аутентификации в учетной записи,
  • 02 — данные карты сохранены в день проведения платежа,
  • 03 — менее 30 дней,
  • 04 — от 30 до 60 дней,
  • 05 — более 60 дней

provisionAttempts
Int

Количество попыток сохранения новых платежных данных карты за последние 24 часа, не более трех символов (999)

purchaseNumber
Int

Количество покупок, совершенных через эту учетную запись за последние 6 месяцев, не более четырех символов (9999)

suspiciousActivity
String

Индикатор подозрительной активности.

Возможные значения:
  • 01 — без подозрений,
  • 02 — с подозрительной активностью
threeDSecureShippingInfo — объект класса JetPayThreeDSecureShippingInfo, содержащий информацию о доставке

address
String

Адрес доставки, не более 150 символов

addressUsage
String

Дата первого использования адреса доставки, указанного в параметрах этого объекта, в формате ДД-ММ-ГГГГ

addressUsageIndicator
String

Количество дней с момента первого использования адреса доставки, указанного в параметрах этого объекта.

Возможные значения:
  • 01 — указанный адрес используется впервые,
  • 02 — менее 30 дней назад,
  • 03 — от 30 до 60 дней назад,
  • 04 — более 60 дней назад

city
String

Название города доставки, не более 50 символов

country
String

Код страны доставки в формате ISO 3166-1 alpha-2

Пример: GB

deliveryEmail
String

Адрес электронной почты в случае доставки на этот адрес. Может содержать не более 255 символов

deliveryTime
String

Срок доставки.

Возможные значения:
  • 01 — электронная доставка в день покупки,
  • 02 — доставка в день покупки,
  • 03 — доставка на следующий день после покупки,
  • 04 — доставка более чем через один день после покупки

nameIndicator
String

Индикатор совпадения имени пользователя с именем получателя.

Возможные значения:
  • 01 — имена совпадают,
  • 02 — имена не совпадают

postal
String

Почтовый индекс доставки, не более 16 символов

regionCode
String

Код штата, провинции или региона страны в формате ISO 3166-2, например SPE для Санкт-Петербурга. При указании значения этого параметра также необходимо указать значение параметра country в объекте threeDSecureShippingInfo

type
String

Способ доставки, выбранный пользователем.

Возможные значения:
  • 01 — доставка на платежный адрес держателя карты;
  • 02 — доставка на другой подтвержденный адрес;
  • 03 — доставка на адрес, не совпадающий с платежным и не являющийся подтвержденным;
  • 04 — доставка в магазин;
  • 05 — электронная доставка;
  • 06 — без доставки (например, при покупке билетов на мероприятие);
  • 07 — другое
threeDSecureMpiResultInfo — объект класса ThreeDSecureMpiResultInfo, содержащий информацию о предыдущей аутентификации пользователя

acsOperationId
String

Идентификатор предыдущей операции пользователя на стороне эмитента, не более 36 символов

authenticationFlow
String

Указатель варианта предыдущего прохождения аутентификации пользователем.

Возможные значения:

  • 01 — frictionless flow,
  • 02 — challenge flow

authenticationTimestamp
String

Дата и время предыдущей успешной аутентификации пользователя