Apple Pay

Обзор

Apple Pay — платёжный метод для оплаты товаров и услуг в приложениях iOS или на сайтах. При использовании Apple Pay аутентификация пользователей выполняется с помощью Face ID, Touch ID или пароля, а платежи проводятся с применением токенизированных учётных данных кредитных и дебетовых карт. Вместе с этими данными на пользовательских устройствах могут храниться и использоваться при проведении платежей дополнительные сведения, такие как данные счетов, адреса доставки и контактная информация. Для работы с Apple Pay в платёжной платформе доступны разовые и повторяемые оплаты через Payment Page и Gate, а также возвраты и проверка действительности карты пользователя через Gate.

Характеристика

Тип платёжного метода платежи с использованием электронных кошельков
Платёжные инструменты платёжные карты
Регионы использования список доступен по ссылке
Валюты платежей Все валюты, поддерживаемые платёжными системами American Express, Maestro, Mastercard и Visa в доступных регионах
Конвертация валют На стороне ecommpay
Оплаты +
Выплаты
Оплаты по сохранённым данным +
Полные возвраты +
Частичные возвраты +
Проверка действительности +
Опротестования +
Особенности
Организация и стоимость подключения По согласованию с курирующим менеджером ecommpay

Схема работы

В проведении отдельного платежа с использованием Apple Pay задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ecommpay, а также технические средства Apple Pay.



Основные операции

Интерфейсы Суммы Время**
Payment Page CMS Plug-ins Gate Dashboard минимум максимум базовое предельное
Оплаты + + * * * *
Оплаты по сохранённым данным + + * * * *
Полные возвраты + * *
Частичные возвраты + * *

* Дополнительную информацию необходимо уточнять у курирующего менеджера ecommpay.

** Базовое и предельное время определяются следующим образом:
  • Базовое время — среднее расчётное время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Это время, определяемое для условий штатной работы всех технических средств и каналов связи, а также типичных действий со стороны пользователя (там, где они необходимы). Базовое время рекомендуется использовать для реагирования на отсутствие оповещений о результате платежа и выполнения опроса состояния платежа.
  • Предельное время — максимально допустимое время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Если платёж не был проведён или отклонён за это время, он автоматически переводится в статус decline. Для индивидуальной настройки предельного времени следует обращаться к специалистам технической поддержки ecommpay.

Сценарии использования

Для проведения оплат с помощью Apple Pay пользователю достаточно один раз зарегистрировать свою карту на устройстве Apple Pay и после использовать Touch ID, Face ID, пароль или двойное нажатие на боковую кнопку (Apple Watch) для подтверждения оплаты.

Рис.: Оплата через Payment Page



Рис.: Оплата через Gate



Рис.: Возврат через Gate



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

Оплаты через Payment Page

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

Для оплаты через Payment Page с использованием метода Apple Pay со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате оплаты. При этом метод Apple Pay можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платёжных методов). Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Payment Page

  1. Пользователь на стороне веб-сервиса инициирует оплату.
  2. От веб-сервиса на заданный URL ecommpay передаётся запрос на открытие Payment Page.
  3. Запрос на открытие Payment Page поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. Осуществляется генерация Payment Page согласно настройкам проекта и параметрам вызова.
  6. Пользователю отображается сгенерированная платёжная форма.
  7. Пользователь выбирает для оплаты метод Apple Pay.
  8. От Payment Page к платёжной платформе передаётся запрос на создание платёжной сессии Apple Pay.
  9. От платёжной платформы к сервису Apple Pay передаётся запрос на создание платёжной сессии.
  10. На стороне Apple Pay выполняется обработка запроса и генерация данных для создания платёжной сессии.
  11. От сервиса Apple Pay к платёжной платформе передаются данные платёжной сессии.
  12. От платёжной платформы к Payment Page передаются данные для инициализации платёжной сессии.
  13. На Payment Page происходит инициализация платёжной сессии и пользователю отображается интерфейс или открывается приложение Apple Pay для подтверждения оплаты.
  14. Пользователь выполняет необходимые действия и подтверждает оплату.
  15. На стороне Apple Pay выполняется обработка данных, полученных от пользователя.
  16. Пользователь перенаправляется на страницу ожидания Payment Page.
  17. От сервиса Apple Pay к платёжной платформе передаются зашифрованные данные пользователя.
  18. Выполняются дальнейшая обработка запроса и его отправка в сервис международной платёжной системы.
  19. На стороне международной платёжной системы выполняется обработка платежа.
  20. От международной платёжной системы к платёжной платформе направляется результат оплаты.
  21. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  22. От платёжной платформы к Payment Page направляется результат проведения оплаты.
  23. Результат оплаты отображается пользователю на Payment Page.

Информация о формате запросов и параметрах вызова Payment Page при работе с Apple Pay, а также о формате оповещений о результатах оплат приведена далее; общая информация о работе с API см. в разделе Описание Payment Page API.

Формат запросов

При формировании запросов на открытие платёжной формы с применением метода Apple Pay необходимо учитывать следующее:

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах,
    • customer_id — идентификатор пользователя, уникальный в рамках проекта.
  2. Для предварительного выбора метода Apple Pay необходимо указывать код платёжного метода в параметре force_payment_method:
    • apple_pay_core — для открытия Payment Page с предварительно выбранным платёжным методом Apple Pay;
    • card — для открытия Payment Page с возможностью выбрать оплату с использованием платёжной карты, подключенной к сервису Apple Pay. В данном случае оба платёжных метода доступны пользователю.
  3. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры вызова платёжной формы.
  4. После определения всех параметров необходимо составить подпись. Подробную информацию см. в Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы с применением метода Apple Pay должен содержать идентификаторы проекта, платежа и пользователя, а также валюту и сумму платежа и подпись:

EPayWidget.run(
    { 
      payment_id: 'X03936', 
      payment_amount: 100000, 
      payment_currency: 'RUB', 
      project_id: 247, 
      customer_id: '123',
      signature: "mcsgn6KHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HASCQ9vySO\/RLCvhtT4DqtVUkDJrOc
                                                                ZzUCwX6R\/ekpZhkIQg=="
    }
)

Формат оповещений

Для оповещений о результатах оплат с применением метода Apple Pay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 580 была успешно проведена оплата в размере 1 000,00 RUB с использованием карты 480099******9286.

Рис.: Пример оповещения о проведённой оплаты

{
        "project_id": 580,
        "payment": {
            "id": "ECT_TEST_15671726468667687",
            "type": "purchase",
            "status": "success",
            "date": "2019-08-30T13:58:12+0000",
            "method": "etoken",
            "sum": {
                "amount": 100000,
                "currency": "RUB"
            },
            "description": "ECT_TEST_1567172646866"
        },
        "account": {
            "number": "480099******9286"
        },
        "operation": {
            "id": 47478000001698,
            "type": "sale",
            "status": "success",
            "date": "2019-08-30T13:58:12+0000",
            "created_date": "2019-08-30T13:58:06+0000",
            "request_id": "0a5cb476be3a55010fb050ec1c1cbd35361ac912a3",
            "sum_initial": {
                "amount": 100000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1187,
                "payment_id": "24fb3f30-000f-5000-8000-1c329d900c68",
                "date": "2019-08-30T13:58:09+0000",
                "auth_code": "591748"
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "5DtWEGy+dMGZZnm3Owjgw9ly67MbzypSxU2KS33RFCKlyphMTlWSNEuhc06gW
                                                       Q7IZpU6i9siv7+WD1u7AyIYdQ=="
    }
}

В следующем примере оплата была отклонена из-за недостатка средств на счёте карты.

Рис.: Пример оповещения об отказе в проведении оплаты

 {
        "account": {
            "number": "480623******2326"
        },
        "customer": {
            "id": "964282"
        },
        "payment": {
            "date": "2019-08-06T12:57:03+0000",
            "id": "10906183900",
            "method": "etoken",
            "status": "decline",
            "sum": {
                "amount": 1030000,
                "currency": "RUB"
            },
            "type": "purchase",
            "description": "test"
        },
        "project_id": 312,
        "country": "RU",
        "product_name": "Visa Rewards",
        "issuer_name": "Tinkoff Bank",
        "operation": {
            "id": 45047000000055,
            "type": "sale",
            "status": "decline",
            "date": "2019-08-06T12:57:03+0000",
            "created_date": "2019-08-06T12:57:00+0000",
            "request_id": "f92c3dfdf76133d5e1a9d26279b3b77b7da32e",
            "sum_initial": {
                "amount": 1030000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 1030000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1187,
                "payment_id": "5cb2f2fb-e4df-4807-8839-067f9366d506",
                "auth_code": ""
            },
            "code": "10105",
            "message": "Insufficient funds on card"
        },
        "signature": "9CIXvWMsKOcQsWEHKLsSVAyjRoWsamH6wOqYCdXre8kY9rpDixPlNKv8yVTP
                                                     5U5SRo8YNjIxHPjEEQSmLAtClQ=="
    }
}

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Оплаты через Gate

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

Для оплаты через Gate с использованием метода Apple Pay со стороны веб-сервиса необходимо:

  1. Отправить запрос на создание платёжной сессии, содержащий требуемые параметры и подпись, на рабочий URL ecommpay.
  2. Принять данные платёжной сессии и пользователя.
  3. Отправить запрос оплату, содержащий требуемые параметры и подпись, на рабочий URL ecommpay.
  4. Принять оповещение о результате оплаты.

Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Gate

  1. Пользователь на стороне веб-сервиса инициирует оплату через Apple Pay.
  2. От веб-сервиса на заданный URL ecommpay передаётся запрос на создание платёжной сессии Apple Pay.
  3. Запрос на создание платёжной сессии поступает в платёжную платформу.
  4. Выполняется обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. От платёжной платформы к сервису Apple Pay передаётся запрос на создание платёжной сессии.
  6. На стороне Apple Pay выполняется обработка запроса на создание платёжной сессии.
  7. От сервиса Apple Pay к платёжной платформе передаются данные платёжной сессии.
  8. От платёжной платформы к веб-сервису отправляется оповещение с данными для создания платёжной сессии.
  9. На стороне веб-сервиса происходит инициализация платёжной сессии и пользователю отображается интерфейс или открывается приложение Apple Pay для подтверждения оплаты.
  10. Пользователь выполняет необходимые действия и подтверждает оплату.
  11. На стороне Apple Pay выполняется обработка данных, полученных от пользователя.
  12. Пользователь перенаправляется на страницу ожидания веб-сервиса.
  13. От сервиса Apple Pay к веб-сервису передаются зашифрованные данные пользователя.
  14. От веб-сервиса на заданный URL ecommpay передаётся запрос проведение оплаты через Apple Pay.
  15. Запрос на проведение оплаты поступает в платёжную платформу.
  16. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  17. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
  18. В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис международной платёжной системы.
  19. На стороне международной платёжной системы выполняется обработка платежа.
  20. От международной платёжной системы к платёжной платформе направляется уведомление о результате оплаты.
  21. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  22. От веб-сервиса пользователю направляется результат оплаты.

Информация о формате запросов и параметрах инициализации оплат методом Apple Pay через Gate, а также о формате оповещений о результатах оплат приведена далее, общая информация о работе с API см. в разделе Работа с API.

Формат запросов на создание платёжной сессии

При работе с запросами на создание платёжной сессии с Apple Pay необходимо учитывать следующее:

  1. Должен использоваться запрос /v2/session/applepay, отправляемый методом POST.
  2. В запросе должны использоваться следующие параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
      • validation_url — URL для проверки;
      • domain_name — доменное имя веб-сервиса мерчанта;
      • display_name — название проекта для отображения, должен содержать не более 64 символов;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным).

Пример корректного запроса на создание платёжной сессии с Apple Pay представлен далее.

Рис.: Пример запроса на создание платёжной сессии

{
  "general" : {
    "project_id": 175,
    "signature": "VJ/h5ogVuQ6oMNLLxvvKe3Ef6Jw7wV8bt1cPYZcSQduYBT6o+Se5mDLXHChlDZrjJX...==",
    "validation_url": "https://apple-pay-gateway.apple.com/paymentservices/startSession",
    "domain_name": "appay.eu.ngrok.io",
    "display_name": "test payment"
  }
}

Формат запросов на проведение оплаты

При работе с запросами на проведение оплаты необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST:
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные идентификационные сведения запроса:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа, уникальный в рамках проекта,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • id — идентификатор в рамках проекта,
      • ip_address — IP-адрес;
    • payment — сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • etoken — сведения о токене от Apple Pay:
      • token — токен, полученный от Apple Pay в формате JSON после идентификации пользователя и указываемый в виде строки. В значении этого параметра могут приводиться такие сведения, как идентификатор платежа на стороне Apple Pay, тип международной платёжной системы и различные служебные данные.

        Рис.: Пример JSON-структуры токена, который должен передаваться в виде строки

        {
           "paymentData":{
              "version":"EC_v1",
              "data":"perkYfGgfMXL/lTG DCSDfR7x4Qz2E/p7WZqBBJJ+/z2iWUIEBNDsovnwhwTeVXAAAAAAAA==",
              "header":{
                 "ephemeralPublicKey":"MWnwEQ==",
                 "publicKeyHash":"tl+QgkoijbTvIomdnCLsdfbvwauh5656we9wvth2+1w=",
                 "transactionId":"u85785def5ce96a8ada846sre2v6r6yry5htj93e50152"
              }
           },
           "paymentMethod":{
              "displayName":"Visa 1005",
              "network":"Visa",
              "type":"debit"
           },
           "transactionIdentifier":"TFDG767HGSFDSJ7AL4435393E5882652"
        }

        Рис.: Пример значения параметра token в виде строки

        "token": "{"paymentData":{"version":"EC_v1","data":"perkYfGgfMXL/lTGDCSDfR7x4Qz2E/p7WZqBBJJ+/z2iWUIEBNDsovnwhwTeVXAAAAAAAA==","header":{"ephemeralPublicKey":"MWnwEQ==","publicKeyHash":"tl+QgkoijbTvIomdnCLsdfbvwauh5656we9wvth2+1w=","transactionId":"u85785def5ce96a8ada846sre2v6r6yry5htj93e50152"}},"paymentMethod":{"displayName":"Visa 1005","network":"Visa","type":"debit"},"transactionIdentifier":"TFDG767HGSFDSJ7AL4435393E5882652"}"
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, IP-адрес пользователя, валюту и сумму платежа, а также токен от Apple Pay:

{
  "general": {
    "project_id": 580,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  },
  "customer": {
    "ip_address": "83.220.236.84",
    "id": "123"
  },
  "payment": {
    "amount": 1000,
    "currency": "RUB"
  },
  "etoken": {
        "token": "..."
    }
}

Формат запросов на подтверждение оплаты в две стадии

При работе с запросами на подтверждение оплаты необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST на /v2/payment/applepay/capture для подтверждения списания оплаты в две стадии.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные идентификационные сведения запроса:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа, по которому необходимо подтвердить списание,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • payment — сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
  3. Валюта и сумма платежа должны совпадать со значениями, переданными в запросе на авторизацию.
  4. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, валюту и сумму платежа:

Рис.: Пример запроса на подтверждение оплаты

{
  "general": {
    "project_id": 580,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  },
  "payment": {
    "amount": 1000,
    "currency": "RUB"
  }

Формат запросов на отмену оплаты в две стадии

При работе с запросами на отмену оплаты необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST на /v2/payment/applepay/cancel для отмены проведения оплаты в две стадии.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные идентификационные сведения запроса:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа, по которому необходимо отменить списание,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на отмену оплаты с применением метода Apple Pay должен содержать идентификаторы проекта и платежа и подпись:

Рис.: Пример запроса на отмену оплаты

{
  "general": {
    "project_id": 580,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  }

Формат оповещений

Для оповещений о результатах оплат с применением метода Apple Pay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 580 была успешно проведена оплата в размере 1 000,00 RUB с использованием карты 480099******9286.

Рис.: Пример оповещения о проведённой оплаты

{
        "project_id": 580,
        "payment": {
            "id": "TEST_15671726468667687",
            "type": "purchase",
            "status": "success",
            "date": "2019-08-30T13:58:12+0000",
            "method": "etoken",
            "sum": {
                "amount": 100000,
                "currency": "RUB"
            },
            "description": "ECT_TEST_1567172646866"
        },
        "account": {
            "number": "480099******9286"
        },
        "operation": {
            "id": 47478000001698,
            "type": "sale",
            "status": "success",
            "date": "2019-08-30T13:58:12+0000",
            "created_date": "2019-08-30T13:58:06+0000",
            "request_id": "0a5cb476be3a55010fb050ec1c1cbd35361ac912a3",
            "sum_initial": {
                "amount": 100000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1187,
                "payment_id": "24fb3f30-000f-5000-8000-1c329d900c68",
                "date": "2019-08-30T13:58:09+0000",
                "auth_code": "591748"                
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "5DtWEGy+dMGZZnm3Owjgw9ly67MbzypSxU2KS33RFCKlyphMTlWSNEuhc06gW
                                                       Q7IZpU6i9siv7+WD1u7AyIYdQ=="
    }
}

В следующем примере оплата была отклонена из-за недостатка средств на счёте карты.

Рис.: Пример оповещения об отказе в проведении оплаты

 {
        "account": {
            "number": "480623******2326"
        },
        "customer": {
            "id": "964282"
        },
        "payment": {
            "date": "2019-08-06T12:57:03+0000",
            "id": "10906183900",
            "method": "etoken",
            "status": "decline",
            "sum": {
                "amount": 1030000,
                "currency": "RUB"
            },
            "type": "purchase",
            "description": "test"
        },
        "project_id": 312,
        "country": "RU",
        "product_name": "Visa Rewards",
        "issuer_name": "Tinkoff Bank",
        "operation": {
            "id": 45047000000055,
            "type": "sale",
            "status": "decline",
            "date": "2019-08-06T12:57:03+0000",
            "created_date": "2019-08-06T12:57:00+0000",
            "request_id": "f92c3dfdf76133d5e1a9d26279b3b77b7da32e",
            "sum_initial": {
                "amount": 1030000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 1030000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1187,
                "payment_id": "5cb2f2fb-e4df-4807-8839-067f9366d506",
                "auth_code": ""
            },
            "code": "10105",
            "message": "Insufficient funds on card"
        },
        "signature": "9CIXvWMsKOcQsWEHKLsSVAyjRoWsamH6wOqYCdXre8kY9rpDixPlNKv8yVTP
                                                     5U5SRo8YNjIxHPjEEQSmLAtClQ=="
    }
}

Дополнительные материалы

Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:

Повторяемые оплаты через Payment Page

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

Платёжный метод Apple Pay предоставляет возможность проводить повторяемые оплаты — регулярные оплаты со списаниями по запросу. Подробная информация представлена в разделе Повторяемая оплата со списаниями по запросам. Через Payment Page доступна регистрация повторяемой оплаты, для этого со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, а также данные для регистрации повторяемой оплаты в объекте recurring, на рабочий URL ecommpay и принять оповещение о результате. В оповещении о регистрации повторяемой оплаты вы получите её идентификатор, который нужно использовать для проведения или отмены регулярной оплаты через Gate. Подробная информация об этом представлена в разделе Повторяемые оплаты через Gate.

Информация о формате запросов и параметрах вызова Payment Page при работе с Apple Pay, а также о формате оповещений о результатах оплат приведена далее; общая информация о работе с API см. в разделе Описание Payment Page API.

Формат запросов

При формировании запросов на открытие платёжной формы для регистрации повторяемой оплаты с применением метода Apple Pay необходимо учитывать следующее:

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах;
    • customer_id — идентификатор пользователя в рамках проекта.
  2. Для регистрации повторяемой оплаты необходимо передать объект recurring, содержащий признак регистрации и необходимую информацию. Для регистрации регулярной оплаты в запросе необходимо передать информацию о периодичности, сумме, начале и конце совершения регулярной оплаты. Полный список параметров, которые можно передать в объекте recurring представлен в разделе Регистрация повторяемых оплат.
  3. Для предварительного выбора метода Apple Pay необходимо указывать код платёжного метода в параметре force_payment_method:
    • apple_pay_core — для открытия Payment Page с предварительно выбранным платёжным методом Apple Pay;
    • card — для открытия Payment Page с возможностью выбрать оплату с использованием платёжной карты, подключенной к сервису Apple Pay. В данном случае оба платёжных метода доступны пользователю.
  4. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры вызова платёжной формы.
  5. После определения всех параметров необходимо составить подпись. Подробную информацию см. в Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы для регистрации повторяемой оплаты с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, признак регистрации и информацию повторяемой оплаты, валюту и сумму платежа и подпись:

EPayWidget.run(
    { 
      payment_id: 'X03936', 
      payment_amount: 100000, 
      payment_currency: 'RUB', 
      project_id: 208, 
      customer_id: '123',
      force_payment_method: 'apple_pay_core',
      recurring={"register":true,"type":"R","expiry_year":2025,"expiry_month":"01","period":"D","time":"10:00:00","start_date":"15-11-2020","scheduled_payment_id":"A2323"},
      signature: "mcsgn6KHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HASCQ9vySO...=="
    }
)

Формат оповещений

Для оповещений о результатах регистрации повторяемой оплаты с применением метода Apple Pay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 208 для пользователя была успешно зарегистрирована повторяемая оплата.

Рис.: Пример оповещения о успешной регистрации повторяемой оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "purchase",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "account": {
            "number": "489537******3478"
        },
        "recurring": {
            "id": 1000030038,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "created_date": "2018-11-20T08:44:41+0000",
            "request_id": "07fd7ade7cf010",
            "sum_initial": {
                "amount": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Повторяемые оплаты через Gate

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

Платёжный метод Apple Pay предоставляет возможность проводить повторяемые оплаты — регулярные оплаты со списаниями по запросу. Подробная информация представлена в разделе Повторяемая оплата со списаниями по запросам.

Информация о формате запросов и параметрах инициализации повторяемых оплат методом Apple Pay через Gate, а также о формате оповещений о результатах приведена далее, общая информация о работе с API см. в разделе Работа с API.

Регистрация повторяемой оплаты через Gate

Для регистрации повторяемых оплат со стороны веб-сервиса необходимо отправить запрос на оплату, содержащий требуемые параметры и подпись, а также признак регистрации повторяемой оплаты recurring.register: true, на рабочий URL ecommpay и принять оповещение о результате. В оповещении о регистрации повторяемой оплаты вы получите её идентификатор, который можно использовать для проведения или отмены регулярных оплат.

Подробнее о проведении оплаты через Gate с помощью метода Apple Pay см. в разделе Оплаты через Gate.

Формат запросов

При работе с запросами на регистрацию повторяемой оплаты с применением метода Apple Pay необходимо учитывать следующее:

  1. Должны использоваться запросы, отправляемые методом POST на следующие URL: /v2/payment/applepay/sale или /v2/payment/applepay/auth.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор в рамках проекта,
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3.
    • recurring — объект, содержащий сведения о повторяемой оплате (условия проведения регулярной оплаты хранятся на стороне мерчанта):
      • register — признак регистрации платежа как повторяемой оплаты,
      • type—тип повторяемой оплаты: R (для регулярной оплаты), C (для экспресс-оплаты), или U (для автооплаты), подробную информацию см. в разделе Общая информация,
      • scheduled_payment_id—идентификатор следующей повторяемой оплаты,
      • start_date — дата начала регулярной оплаты, в формате ДД-ММ-ГГГГ (должна быть как минимум на один день позже, чем дата регистрации),
      • amount — сумма платежа,
      • period — период выполнения регулярной оплаты,
      • interval — интервал выполнения регулярной оплаты,
      • time — время выполнения регулярной оплаты в формате hh:mm:ss (UTC0).
  3. Для регистрации регулярных оплат в запросе необходимо также передать информацию о периодичности, сумме, начале и конце совершения регулярных оплат.
  4. Дополнительно могут использоваться все параметры, указанные в спецификации.

Корректный запрос на регистрацию повторяемой оплаты с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму платежа, а также признак регистрации и условия проведения списаний при регулярной оплате.

Рис.: Пример запроса на регистрацию регулярной оплаты

 {
  "general": {
    "project_id": 208,
    "payment_id": "TEST_15427007172789",
    "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2...==",
  },
  "customer": {
    "ip_address": "1.1.1.1",
    "id": "123"
  },
  "payment": {
    "amount": 1000,
    "currency": "RUB"
  },
  "recurring": {
    "register": true,
    "type": "R",
    "amount": 1000,
    "interval": 1,
    "cycle": "week",
    "start_date": "21-11-2018"
  }
}

Проведение повторяемой оплаты

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

Формат запросов

При работе с запросами на проведение повторяемой оплаты с применением метода Apple Pay необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST на следующие URL: /v2/payment/applepay/recurring.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма,
      • currency — валюта платежа в формате ISO-4217 alpha-3.
    • recurring — объект, содержащий сведения о повторяемой оплате:
      • id — идентификатор зарегистрированной повторяемой оплаты.
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Корректный запрос на проведение повторяемой оплаты с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму платежа, а также идентификатор зарегистрированной регулярной оплаты.

Рис.: Пример запроса на проведение регулярной оплаты

 {
  "general": {
    "project_id": 208,
    "payment_id": "TEST_15427007172789",
    "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2...==",
  },
  "customer": {
    "ip_address": "1.1.1.1"
  },
  "payment": {
    "amount": 1000,
    "currency": "RUB"
  },
  "recurring": {
    "id": 1234567890
  }
}

Отмена проведения повторяемой оплаты

До момента истечения срока выполнения регулярных оплат их можно отменить. Также для изменения условий выполнения регулярной оплаты её необходимо отменить и отправить запрос на создание новой.

Формат запросов

При работе с запросами на отмену повторяемой оплаты с применением метода Apple Pay необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST на следующие URL: /v2/payment/applepay/recurring/cancel
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • recurring — объект, содержащий сведения о повторяемой оплате:
      • id — идентификатор зарегистрированной повторяемой оплаты;
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

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

Рис.: Пример запроса на отмену регулярной оплаты

 {
  "general": {
    "project_id": 208,
    "payment_id": "TEST_15427007172789",
    "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2v8...==",
  },
  "recurring": {
    "id": 1234567890
  }
}

Формат оповещений

Для оповещений о результатах действий с повторяемыми оплатами с применением метода Apple Pay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 208 для пользователя была успешно зарегистрирована повторяемая оплата.

Рис.: Пример оповещения о успешном проведении повторяемой оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "account": {
            "number": "489537******3478"
        },
        "recurring": {
            "id": 1000030038,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "created_date": "2018-11-20T08:44:41+0000",
            "request_id": "07fd7ade7cf010",
            "sum_initial": {
                "amount": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

В следующем примере оповещение свидетельствует о том, что проведение регулярной оплаты успешно отменено.

Рис.: Пример оповещения об отмене проведения регулярной оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "account": {
            "number": "489537******3478"
        },
        "recurring": {
            "id": 1000030038,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "type": "recurring_cancel",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "created_date": "2018-11-20T08:44:41+0000",
            "request_id": "07fd7ade7cf010",
            "sum_initial": {
                "amount": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

В следующем примере оповещение свидетельствует о том, что проведение регулярной оплаты было отклонено.

Рис.: Пример оповещения о неуспешном проведении регулярной оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "errors": [
            {
                "code": "2701",
                "message": "Rules Failed Code",
                "description": "fatal: RULES_FAILED_CODE"
            }
        ],
        "recurring": {
            "id": 1000700,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "type": "recurring",
            "status": "decline",
            "date": "2018-11-20T08:44:46+0000",
            "created_date": "2018-11-20T08:44:41+0000",
            "request_id": "07fd7ade7cf010",
            "sum_initial": {
                "amount": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "2701",
            "message": "Rules Failed Code"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

Дополнительные материалы

Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:

Возвраты через Gate

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

Apple Pay поддерживает проведение полных и частичных возвратов. Для проведения возврата через Gate с использованием метода Apple Pay со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема проведения возврата представлена далее.



Рис.: Проведение возврата через Gate

  1. Пользователь запрашивает возврат средств в веб-сервисе.
  2. От веб-сервиса мерчанта на заданный URL ecommpay передаётся запрос на проведение возврата через Gate.
  3. Gate перенаправляет запрос в платёжную платформу ecommpay для дальнейшей обработки.
  4. На стороне платёжной платформы ecommpay выполняются необходимые проверка и первичная обработка запроса.
  5. От платёжной платформы в веб-сервис передается ответ с результатом первичной обработки запроса. Подробнее см. в разделе Формат ответа.
  6. Обработанный запрос передается в сервис международной платёжной системы.
  7. На стороне международной платёжной системы выполняется обработка платежа.
  8. От международной платёжной системы к платёжной платформе направляется оповещение о результате.
  9. От платёжной платформы к веб-сервису направляется оповещение о результате.
  10. Пользователь получает от веб-сервиса информацию о поступлении запрошенных средств.

Информация о формате запросов и параметрах инициализации возвратов методом Apple Pay через Gate, а также о формате оповещений о результатах возвратов приведена далее, общая информация о работе с API см. в разделе Работа с API.

Формат запросов

При работе с запросами на возврат с применением метода Apple Pay необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST на /v2/payment/applepay/refund.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения о запросе:
      • project_id — идентификатор проекта;
      • payment_id — идентификатор платежа;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о возврате :
      • description — комментарий или описание возврата,
      • amount — сумма возврата в дробных единицах валюты (обязательный при частичном возврате),
      • currency — валюта возврата в формате ISO-4217 alpha-3 (обязательный при частичном возврате).
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на частичный возврат с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, подпись, сумму и валюту платежа, описание возврата и IP-адрес пользователя:

Рис.: Пример запроса на частичный возврат

{
   "general": {    
    "project_id": 239,    
    "payment_id": "refund_02",   
    "signature": "of8k9xerKSK4XL1QFaDH3p9Mh0CIcjmOwSwKJ7KLTZYO56lCv+f1M0Sf/7eg=="
  },  
   "customer": {    
     "ip_address": "1.2.3.4" 
  },  
   "payment": {    
     "amount": 50000,    
     "currency": "RUB",
     "description": "refund_02"
 }
}

Формат оповещений

Для оповещений о результатах возврата с применением метода Apple Pay используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 260 для пользователя был успешно проведён возврат в размере 10,00 RUB на карту 480114******3791.

Рис.: Пример оповещения о проведенном возврате

{
        "project_id": 260,
        "payment": {
            "id": "TEST_15792507735",
            "type": "purchase",
            "status": "refunded",
            "date": "2020-01-20T08:31:36+0000",
            "method": "etoken",
            "sum": {
                "amount": 1000,
                "currency": "RUB"
            },
            "description": ""
        },
        "customer": {
            "id": "1888"
        },
        "account": {
            "number": "480114******3791"
        },
        "operation": {
            "id": 69512000019571,
            "type": "refund",
            "status": "success",
            "date": "2020-01-20T08:31:36+0000",
            "created_date": "2020-01-20T08:31:35+0000",
            "request_id": "e0069513"
            "sum_initial": {
                "amount": 1000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "RUB"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1911,
                "payment_id": "0000438583",
                "auth_code": ""
                }
            },
        "signature": "beJ1deUiEDd+7zuo6YrfSRxbOn8BYDLI9RR3yliH3B91LcBan4+2VkRrxn2NYOexr7goJzgEQj34sKAStuW8Fg=="
    }

В следующем примере возврат был отклонён, так как значение суммы в запросе на возврат больше суммы в инитной оплате.

Рис.: Пример оповещения об отказе в проведении возврата

{
        "project_id": 260,
        "payment": {
            "id": "TEST_1579250773501",
            "type": "purchase",
            "status": "success",
            "date": "2020-01-20T08:31:36+0000",
            "method": "etoken",
            "sum": {
                "amount": 100,
                "currency": "RUB"
            },
            "description": ""
        },
        "customer": {
            "id": "1888"
        },
        "account": {
            "number": "480114******3791"
        },
        "operation": {
            "sum_initial": {
                "amount": 1000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "RUB"
            },
            "code": "3283",
            "message": "Refund amount more than init amount",
            "provider": {
                "id": 1911,
                "payment_id": "0000438582",
                "auth_code": ""
            },
            "id": 69512000019571,
            "type": "refund",
            "status": "decline",
            "date": "2020-01-20T08:31:36+0000",
            "created_date": "2020-01-20T08:31:35+0000",
            "request_id": "e0069142"
        },
        "signature": "beJ1deUiEDd+7zuo6YrfSRxbOn8BYDLI9RR3yliH3B91LcBan4+2VkRrxn2NYOexr7goJzgEQj34sKAStuW8Fg=="
    }
}

Дополнительные материалы

Для организации работы с возвратами через Gate также могут быть полезны следующие материалы:

Проверка действительности карты

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

Для проверки действительности карты через Gate с использованием Apple Pay метода со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Схема проведения проверки действительности карты через сервис Apple Pay аналогична стандартной проверке, описание которой представлено в разделе Проверка платёжных инструментов.

Формат запросов на проверку действительности карты

При работе с запросами на проверку действительности карты через сервис Apple Pay необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST на /v2/payment/applepay/account_verification.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные идентификационные сведения запроса:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • ip_address — IP-адрес;
    • payment — сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • etoken — сведения о токене от Apple Pay:
      • token — токен, полученный от Apple Pay в формате JSON после идентификации пользователя и указываемый в виде строки. В значении этого параметра могут приводиться такие сведения, как идентификатор платежа на стороне Apple Pay, тип международной платёжной системы и различные служебные данные.

        Рис.: Пример JSON-структуры токена, который должен передаваться в виде строки

        {
           "paymentData":{
              "version":"EC_v1",
              "data":"perkYfGgfMXL/lTG DCSDfR7x4Qz2E/p7WZqBBJJ+/z2iWUIEBNDsovnwhwTeVXAAAAAAAA==",
              "header":{
                 "ephemeralPublicKey":"MWnwEQ==",
                 "publicKeyHash":"tl+QgkoijbTvIomdnCLsdfbvwauh5656we9wvth2+1w=",
                 "transactionId":"u85785def5ce96a8ada846sre2v6r6yry5htj93e50152"
              }
           },
           "paymentMethod":{
              "displayName":"Visa 1005",
              "network":"Visa",
              "type":"debit"
           },
           "transactionIdentifier":"TFDG767HGSFDSJ7AL4435393E5882652"
        }

        Рис.: Пример значения параметра token в виде строки

        "token": "{"paymentData":{"version":"EC_v1","data":"perkYfGgfMXL/lTGDCSDfR7x4Qz2E/p7WZqBBJJ+/z2iWUIEBNDsovnwhwTeVXAAAAAAAA==","header":{"ephemeralPublicKey":"MWnwEQ==","publicKeyHash":"tl+QgkoijbTvIomdnCLsdfbvwauh5656we9wvth2+1w=","transactionId":"u85785def5ce96a8ada846sre2v6r6yry5htj93e50152"}},"paymentMethod":{"displayName":"Visa 1005","network":"Visa","type":"debit"},"transactionIdentifier":"TFDG767HGSFDSJ7AL4435393E5882652"}"
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на проверку действительности карты с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, IP-адрес пользователя, валюту и сумму платежа, а также токен от Apple Pay:

{
  "general": {
    "project_id": 238,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  },
  "customer": {
    "ip_address": "83.220.236.84"
  },
  "payment": {
    "amount": 0,
    "currency": "RUB"
  },
  "etoken": {
        "token": "..."
    }
}

Формат оповещений

Для оповещений о результатах проведения проверки действительности карты используется стандартный формат, описание которого представлено в разделе Проверка платёжных инструментов.

Дополнительные материалы

Для организации работы с операциями через Gate также могут быть полезны следующие материалы:

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

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

Для метода Apple Pay доступно тестирование оплат в одну и две стадии через Payment Page и Gate. Также доступно тестирование проверки действительности карты через Gate. При тестировании оплат через Gate веб-сервис мерчанта должен соответствовать следующим условиям:

  • Домен сайта зарегистрирован в сервисах Apple. Для регистрации домена необходимо обратиться в службу технической поддержки ecommpay support@ecommpay.com
  • Сайт поддерживает функциональность запуска скрипта для начала сессии Apple согласно документации.

Также при тестировании следует учитывать другие особенности работы с методом Apple Pay, указанные в таблице Характеристика

Тестирование может выполняться в рамках тестового проекта, для подключения и отключения этой функциональности необходимо обращаться к специалистам технической поддержки ecommpay support@ecommpay.com.

При проведении тестовых платежей следует учитывать, что в запросах должен указываться идентификатор тестового проекта, а интерфейсы эмулятора платёжных форм Payment Page и страницы аутентификации 3‑D Secure могут отличаться от рабочих. Вместе с тем для проведения тестовых платежей необходимо использовать действительные платёжные карты, предварительно зарегистрированные в сервисе Apple. Это никак не влияет на проведение реальных платежей с использованием этих карт, но позволяет выполнять полноценное тестирование.

Статусы тестовых платежей

При тестировании оплат в одну и две стадии их итоговые статусы определяются исходя из сумм, указанных в запросах:

  • success — при указании суммы 1000;
  • decline — при указании суммы 2000, 5000 или 10001.

При тестировании проверки действительности карты статус этой проверки определяется исходя из сумм, указанных в запросах:

  • success — при указании суммы 0;
  • decline — при указании любой другой суммы.

Оплата в одну стадию через Payment Page

Для проведения тестовой оплаты в одну стадию через Payment Page необходимо:

  1. Отправить в платёжную платформу корректный тестовый запрос на открытие Payment Page.
  2. Если в запросе не был указан метод apple_pay_core — выбрать метод Apple Pay на странице эмулятора.
  3. Подтвердить оплату.
  4. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Payment Page представлена в пункте Оплаты через Payment Page.

Оплата в одну стадию через Gate

Для проведения тестовой оплаты через Gate необходимо:

  1. Отправить в платёжную платформу корректный тестовый запрос на создание платёжной сессии.
  2. Принять данные платёжной сессии и пользователя.
  3. Подтвердить оплату.
  4. Отправить в платёжную платформу корректный тестовый запрос на оплату.
  5. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Gate представлена в пункте Оплаты через Gate.

Оплата в две стадии с блокировкой средств через Payment Page и подтверждением или отменой через Gate

Для проведения тестовой оплаты в две стадии с блокировкой через Payment Page и подтверждением или отменой через Gate необходимо:

  1. Отправить в платёжную платформу корректный тестовый запрос на открытие Payment Page.
  2. Если в запросе не был указан код предварительного выбора метода card или apple_pay_core — выбрать оплату методом Apple Pay на странице эмулятора.
  3. Подтвердить оплату.
  4. Принять оповещение с информацией о результате блокировки.
  5. Отправить запрос на подтверждение или отмену оплаты.
  6. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Payment Page и Gate представлена в пунктах Оплаты через Payment Page и Оплаты через Gate.

Оплата в две стадии с блокировкой средств и подтверждением или отменой через Gate

Для проведения тестовой оплаты в две стадии с блокировкой и подтверждением или отменой через Gate необходимо:

  1. Отправить в платёжную платформу корректный тестовый запрос на создание платёжной сессии.
  2. Принять данные платёжной сессии и пользователя.
  3. Отправить в платёжную платформу корректный тестовый запрос на оплату.
  4. Подтвердить оплату.
  5. Принять оповещение с информацией о результате блокировки.
  6. Отправить запрос на подтверждение или отмену оплаты.
  7. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Gate представлена в пункте Оплаты через Gate.

Проверка действительности карты через Gate

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

Подробная информация о проведении проверки действительности карты с использованием метода Apple Pay через Gate представлена в пункте Проверка действительности карты.

Анализ результатов проведения платежей

Как и при работе с другими платёжными методами, которые предоставляет ecommpay, при использовании метода Apple Pay доступны разные способы анализа информации о платежах и операциях с применением этого метода — как в отдельности, так и в совокупности с другими методами.

Всю необходимую информацию можно получать и анализировать средствами Dashboard, в том числе с помощью аналитических панелей на вкладке Analytics.

Также можно выгружать нужную информацию для последующего анализа с помощью специализированных аналитических средств сторонних разработчиков:

  • Dashboard позволяет выгружать данные в форматах CSV и XLS с помощью инструментов на вкладке Платежи. При этом можно выполнять разовые выгрузки информации на локальный компьютер и задействовать периодическую выгрузку и отправку информации на заданные адреса электронной почты.
  • Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы /operations/get.

С любыми вопросами о возможностях анализа можно обращаться в службу технической поддержки ecommpay.