ATM & Bank Transfer in Indonesia (Virtual Accounts)

Обзор

ATM & Bank Transfer in Indonesia (Virtual Accounts) — это самый популярный индонезийский альтернативный платёжный метод. При использовании этого метода пользователь переводит средства на виртуальный банковский счёт с помощью банкомата, мобильного приложения или сайта банка. Виртуальный счёт, номер которого состоит из 16 цифр, создаётся для каждого пользователя при оплате и используется для дифференциации платежей. ECommPay создаёт виртуальные счёта в межбанковской сети, каждый из которых уникален и используется только для одного платежа. Средства, полученные при помощи платежей, проведённых с использованием разных виртуальных счетов, объединяются на одном счёте мерчанта.

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

  • банкомат,
  • мобильное приложение банка,
  • сайт банка.

Большая часть (80 %) платежей в Индонезии проводятся с использованием виртуальных счетов. ECommPay предоставляет проведение платежей с использованием виртуальных счетов при участии крупных банков, работающих в Индонезии — Mandiri, Permata, Danamon, CIMB.

Для работы с этим методом доступно проведение оплат через Payment Page и Gate.

Для проведения оплат используется два канала. Номер подключённого канала необходимо уточнять у курирующего менеджера ECommPay.

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

Тип платёжного метода банковские переводы
Регионы использования ID
Валюты платежей IDR
Конвертация валют на стороне ECommPay; для подключения необходимо обратиться к курирующему менеджеру ECommPay
Оплаты +
Выплаты
Оплаты по сохранённым данным
Полные возвраты по запросу в службу технической поддержки ECommPay
Частичные возвраты по запросу в службу технической поддержки ECommPay
Опротестования
Особенности
  • доступно использование дополнительных параметров для предварительного выбора метода и банка при формировании Payment Page
  • в браузере Safari может не поддерживаться перенаправление пользователя на сайт провайдера. Подробности необходимо уточнять у курирующего менеджера ECommPay
Организация и стоимость подключения по согласованию с курирующим менеджером ECommPay

Схема работы

В проведении отдельного платежа с использованием метода ATM & Bank Transfer in Indonesia (Virtual Accounts) задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ECommPay, а также сервис провайдера.



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

Интерфейсы Суммы, IDR
Payment Page CMS Plug-ins Gate Dashboard (Old Dashboard) Минимум Максимум
Оплаты + + * *

* Информацию об ограничениях сумм необходимо уточнять у курирующего менеджера ECommPay.

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

Проведение оплат с использованием метода ATM & Bank Transfer in Indonesia (Virtual Accounts) выполняется с перенаправлением пользователей на сайт провайдера.

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



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



Поддержка со стороны банков

Проведение оплат с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) осуществляется через банки, поддерживающие работу с этим методом. Банкам соответствуют свои идентификаторы, которые используются при инициировании оплат и выплат через Gate, а также при вызове Payment Page для отображения страницы с выбором метода оплаты.

Далее в таблицах в ознакомительных целях представлена информация об этих банках, которую следует уточнять у курирующего менеджера ECommPay или по запросам /v2/info/banks/{payment_method}/{operationType}/list, отправляемым методом POST через Gate API: /v2/info/banks/indonesia/sale/list (для первого канала проведения оплат) и /v2/info/banks/indonesia-va/sale/list (для второго канала проведения оплат) для уточнения списка банков.

Табл. 1. Канал 1. Список банков
Банк ID
Bank Permata VA 433
Bank Mandiri VA 434
Bank Danamon VA 435
Bank CIMB VA 436
Табл. 2. Канал 2. Список банков
Банк ID
Permata Virtual Account 2961
Mandiri Virtual Account 2951
Maybank Virtual Account 2941
BNI Virtual Account 2931

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

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

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

Для оплаты через Payment Page с использованием метода ATM & Bank Transfer in Indonesia (Virtual Accounts) со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ECommPay и принять оповещение о результате оплаты. При этом метод ATM & Bank Transfer in Indonesia (Virtual Accounts) можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платежного метода).

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



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

  1. Пользователь на стороне веб-сервиса инициирует оплату.
  2. От веб-сервиса на заданный URL ECommPay передаётся запрос на проведение оплаты через Payment Page.
  3. Запрос на проведение оплаты поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. Осуществляется формирование Payment Page согласно настройкам проекта и параметрам вызова.
  6. Пользователю отображается сформированная платёжная форма.
  7. Пользователь выбирает один из банков, поддерживающих работу с платёжным методом ATM & Bank Transfer in Indonesia (Virtual Accounts).
  8. Запрос на проведение оплаты поступает в платёжную платформу.
  9. Выполняются дальнейшая обработка запроса и его отправка в сервис провайдера.
  10. На стороне провайдера выполняется обработка запроса на оплату.
  11. От сервиса провайдера к платёжной платформе передаются данные для перенаправления пользователя на сайт провайдера.
  12. Данные для перенаправления пользователя на сайт провайдера передаются к Payment Page.
  13. Пользователь перенаправляется на сайт провайдера, где ему отображается 16-значный код для оплаты и платёжная инструкция.
  14. Согласно инструкции, пользователь вводит код на сайте банка либо с использованием банкомата или мобильного приложения банка, и подтверждает оплату.
  15. На стороне провайдера выполняется обработка платежа.
  16. От сервиса провайдера к платёжной платформе направляется уведомление о результате оплаты.
  17. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  18. От платёжной платформы к Payment Page направляется результат проведения оплаты.
  19. Информация о результате оплаты отображается пользователю на Payment Page.

Информация о формате запросов и параметрах вызова Payment Page при работе с методом ATM & Bank Transfer in Indonesia (Virtual Accounts), а также о формате оповещений о результатах оплат приведена далее; общая информация о работе с API — в разделе Описание Payment Page API.

Канал 1. Формат запросов

При формировании запросов на открытие платёжной формы с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) необходимо учитывать следующее:

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_amount — сумма платежа в минорных единицах валюты;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • customer_id — идентификатор пользователя, уникальный в рамках проекта.
  2. Дополнительно рекомендуется указывать имя и адрес электронной почты пользователя в параметрах customer_first_name и customer_email. Если параметры отсутствуют в запросе, на Payment Page пользователю отображаются поля для ввода недостающих значений. Подробнее об уточнении параметров — в разделе Дополнение информации о платеже.
  3. По умолчанию Payment Page открывается на английском языке. Для изменения языка Payment Page и платёжной страницы сервиса ATM & Bank Transfer in Indonesia (Virtual Accounts) необходимо передавать код языка в параметре language_code. Далее приведен список поддерживаемых языков с их кодами, но точный список языков рекомендуется уточнять у курирующего менеджера ECommPay.
    • en — английский,
    • id — индонезийский,
    • ms — малайский,
    • my — бирманский,
    • th — тайский,
    • vi — вьетнамский,
    • zh — китайский.
  4. При использовании платёжного метода ATM & Bank Transfer in Indonesia (Virtual Accounts) можно настраивать отображение страницы Payment Page с выбором метода оплаты.

    По умолчанию банки, поддерживающие проведение оплат методом ATM & Bank Transfer in Indonesia (Virtual Accounts), объединены в группу и отображаются одной кнопкой ATM & Bank Transfer in Indonesia (Virtual Accounts), поэтому выбор банка осуществляется в два этапа. Сначала выбирается метод ATM & Bank Transfer in Indonesia (Virtual Accounts) среди прочих, а затем на следующей странице с перечнем банков выбирается конкретный банк. Существует несколько вариантов отображения страницы Payment Page с выбором метода оплаты:

    • Отображение поддерживаемых банков одной кнопкой Online Indonesian Banks среди прочих методов.
    • Отображение каждого поддерживаемого банка отдельной кнопкой. Для этого необходимо передавать параметр split_banks со значением true в строке payment_methods_options.
      payment_methods_options={"online_indonesian_banks": {"split_banks": true}}
      
    • Отображение только поддерживаемых банков одной кнопкой Online Indonesian Banks. Для этого используется предварительный выбор метода ATM & Bank Transfer in Indonesia (Virtual Accounts). Необходимо передавать код платежного метода online-indonesian-banks в параметре force_payment_method. Пользователю открывается страница с выбором банков.
    • Отображение кнопок конкретных банков (одного или нескольких). В списке методов может присутствовать метод ATM & Bank Transfer in Indonesia (Virtual Accounts). Для этого используется предварительный выбор метода ATM & Bank Transfer in Indonesia (Virtual Accounts), но с указанием конкретного банка. Для этого необходимо передавать код платежного метода online-indonesian-banks в параметре force_payment_method и идентификатор банка banks_id в параметре payment_methods_options. Для отображения нескольких банков необходимо перечислять идентификаторы этих банков через запятую c пробелом.
      payment_methods_options={"online_indonesian_banks": {"split_banks": true, "banks_id": [433, 434]}}

      Далее представлен пример запроса на открытие Payment Page на индонезийском языке с предварительно выбранным банком Mandiri.

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

      EPayWidget.run(
          { payment_id: 'X03936', 
            payment_amount: 20000000, 
            payment_currency: 'IDR', 
            project_id: 120,
            customer_id: '1',
            language_code: 'id',
            force_payment_method: 'online-indonesian-banks',
            payment_methods_options={"online_indonesian_banks": {"banks_id": [434]}},
            signature: "kUi2x9dKHAVNU0FYlSCQ9vySO\/RLCvhtT4DqtVUkDJrOcZzUCwX6R\/ekpZhkIQg=="
          }
      )
  5. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры открытия платежной формы Payment Page.
  6. После определения всех параметров необходимо составить подпись. Подробнее — в разделе Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) должен содержать идентификатор, сумму и валюту платежа, идентификаторы проекта, данные пользователя и подпись:

    { payment_id: 'X03936', 
      payment_amount: 20000000, 
      payment_currency: 'IDR', 
      project_id: 123,
      customer_first_name: 'Hasan',
      customer_email: 'hasan@example.com',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KURLCvhtT4DqtOcZzUCwX6R\/ekpZhkIQg=="
    }

Канал 2. Формат запросов

При формировании запросов на открытие платёжной формы с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) необходимо учитывать следующее:

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта.
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3.
    • payment_amount — сумма платежа в минорных единицах валюты. В запросах на оплаты с указанием валюты IDR необходимо округлять суммы до целых чисел. Если в запросе указывается иная валюта, то сумма платежа конвертируется на стороне ECommPay в эквивалентную сумму в валюте IDR и также округляется до целых чисел. При этом округление выполняется в большую сторону (например, если в результате конвертации получается сумма 200 000,05 IDR, то такая сумма округляется до 200 001,00 IDR).
    • customer_id — идентификатор пользователя, уникальный в рамках проекта.
  2. При использовании платёжного метода ATM & Bank Transfer in Indonesia (Virtual Accounts) можно настраивать отображение страницы Payment Page с выбором метода оплаты.

    По умолчанию банки, поддерживающие проведение оплат методом ATM & Bank Transfer in Indonesia (Virtual Accounts), объединены в группу и отображаются одной кнопкой ATM & Bank Transfer in Indonesia (Virtual Accounts), поэтому выбор банка осуществляется в два этапа. Сначала выбирается метод ATM & Bank Transfer in Indonesia (Virtual Accounts) среди прочих, а затем на следующей странице с перечнем банков выбирается конкретный банк. Существует несколько вариантов отображения страницы Payment Page с выбором метода оплаты:

    • Отображение поддерживаемых банков одной кнопкой ATM transfer Indonesia среди прочих методов.
    • Отображение каждого поддерживаемого банка отдельной кнопкой. Для этого необходимо передавать параметр split_banks со значением true в строке payment_methods_options.
      payment_methods_options={"indonesia_va": {"split_banks": true}}
      
    • Отображение только поддерживаемых банков одной кнопкой ATM transfer Indonesia. Для этого используется предварительный выбор метода ATM & Bank Transfer in Indonesia (Virtual Accounts). Необходимо передавать код платежного метода indonesia-va в параметре force_payment_method. Пользователю открывается страница с выбором банков.
    • Отображение кнопок конкретных банков (одного или нескольких). В списке методов может присутствовать метод ATM & Bank Transfer in Indonesia (Virtual Accounts). Для этого используется предварительный выбор метода ATM & Bank Transfer in Indonesia (Virtual Accounts), но с указанием конкретного банка. Для этого необходимо передавать код платежного метода indonesia-va в параметре force_payment_method и идентификатор банка banks_id в параметре payment_methods_options. Для отображения нескольких банков необходимо перечислять идентификаторы этих банков через запятую c пробелом.
      payment_methods_options={"indonesia_va": {"split_banks": true, "banks_id": [2961, 2951]}}

      Далее представлен пример запроса на открытие Payment Page с предварительно выбранным банком.

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

      EPayWidget.run(
          { payment_id: 'X03936', 
            payment_amount: 20000000, 
            payment_currency: 'IDR', 
            project_id: 120,
            customer_id: '1',
            force_payment_method: 'indonesia-va',
            payment_methods_options={"indonesia_va": {"banks_id": [2961]}},
            signature: "kUi2x9dKHAVNU0FY...vySO\/RLCvhtT4DqtVUkDJrOcZzUCwX6R\/ekpZhkIQg=="
          }
      )
  3. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры открытия платежной формы Payment Page.
  4. После определения всех параметров необходимо составить подпись. Подробнее — в разделе Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) должен содержать идентификатор, сумму и валюту платежа, идентификатор проекта и пользователя, а также подпись:

    { payment_id: 'X03936', 
      payment_amount: 20000000, 
      payment_currency: 'IDR', 
      project_id: 123,
      customer_id: 'customer1',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KURLCvhtT4DqtOcZzUCwX6R\/ekpZhkIQg=="
    }

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

Для оповещений о результатах оплат с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) используется стандартный формат, описание которого представлено в разделе Оповещения.

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

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

 {
        "project_id": 200,
        "payment": {
            "id": "9770802",
            "type": "purchase",
            "status": "success",
            "date": "2020-02-22T22:44:46+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "description": "test"
        },
        "account": {
            "number": "8856113600001045"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 52084000029401,
            "type": "sale",
            "status": "success",
            "date": "2020-02-22T22:44:46+0000",
            "created_date": "2020-02-22T17:30:42+0000",
            "request_id": "59b48b4c2d0a2b6a-00052085",
            "sum_initial": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1164,
                "payment_id": "644206",
                "auth_code": "",
                "date": "2020-02-22T22:44:45+0000"
            }
        },
        "signature": "Hekd6+86S592dGuYCHNLADZ8LaBC5/JSKObUxTvkUuCZL4phAiFQA=="
    }

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

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

{
        "project_id": 200,
        "payment": {
            "id": "9770802",
            "type": "purchase",
            "status": "decline",
            "date": "2020-02-22T22:44:46+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 1000,
                "currency": "IDR"
            },
            "description": "test"
        },
        "account": {
            "number": "8856113600001046"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 52084000029401,
            "type": "sale",
            "status": "decline",
            "date": "2020-02-22T22:44:46+0000",
            "created_date": "2020-02-22T17:30:42+0000",
            "request_id": "59b48b4c2d0a2b6a-00052085",
            "sum_initial": {
                "amount": 1000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "IDR"
            },
            "code": "20101",
            "message": "Decline due to amount or frequency limit",
        },
        "signature": "Hekd6+86S592dGuYCHNLADZ8LaBC5/JSKObUxTvkUuCZL4phAiFQA=="
    }

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

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

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

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

Для оплаты через Gate с использованием метода ATM & Bank Transfer in Indonesia (Virtual Accounts) со стороны веб-сервиса необходимо:

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

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

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



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

  1. Пользователь на стороне веб-сервиса инициирует оплату методом ATM & Bank Transfer in Indonesia (Virtual Accounts).
  2. От веб-сервиса на заданный URL ECommPay передаётся запрос на проведение оплаты через Gate.
  3. Запрос на проведение оплаты поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
  6. В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис провайдера.
  7. На стороне провайдера выполняется обработка запроса на оплату.
  8. От сервиса провайдера к платёжной платформе передаются данные для перенаправления пользователя на сайт провайдера.
  9. От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя на сайт провайдера.
  10. Пользователь перенаправляется на сайт провайдера, где ему отображается 16-значный код для оплаты и платёжная инструкция.
  11. Согласно инструкции, пользователь вводит код на сайте банка либо с использованием банкомата или мобильного приложения банка, и подтверждает оплату.
  12. На стороне провайдера выполняется обработка платежа.
  13. От сервиса провайдера к платёжной платформе направляется уведомление о результате оплаты.
  14. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  15. От веб-сервиса пользователю направляется информация о результате оплаты.

Информация о формате запросов и параметрах инициирования оплат через Gate при работе с методом ATM & Bank Transfer in Indonesia (Virtual Accounts), а также о форматах данных для перенаправления пользователей и о формате оповещений о результатах оплат приведена далее; общая информация о работе с API — в разделе Работа с API.

Канал 1. Формат запросов

При формировании запросов на оплату с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) необходимо учитывать следующее:

  1. Должен использоваться запрос к конечной точке /v2/payment/banks/indonesia/sale, отправляемый методом POST. Этот запрос относится к группе запросов /v2/payment/banks/{payment_method}/sale.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор в рамках проекта,
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в минорных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • account — объект, содержащий сведения о банковском счёте пользователя:
      • bank_id — идентификатор банка.
  3. Дополнительно рекомендуется указывать имя и адрес электронной почты пользователя. Если параметры отсутствуют в запросе, список недостающих параметров отправляется в оповещении на уточнение. Подробнее об уточнении параметров — в разделе Дополнение информации о платеже.

    Рекомендуется использовать следующие объекты и параметры:

    • customer — объект, содержащий сведения о пользователе:
      • first_name — имя пользователя,
      • email — адрес электронной почты;
  4. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) должен содержать идентификаторы проекта и платежа, подпись, сумму и валюту платежа, данные пользователя и идентификатор банка:

{
    "general": {
      "project_id": 2990,
      "payment_id": payment_id,
      "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "payment": {
      "amount": 35000000,
      "currency": "IDR"
      },
    "customer": {
      "first_name": "Hasan",
      "id": "123",
      "email": "hasan@example.com",
      "ip_address": "1.1.1.1"
    },
    "account":{
      "bank_id": 433
    }
 }

Канал 2. Формат запросов

При формировании запросов на оплату с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) необходимо учитывать следующее:

  1. Должен использоваться запрос к конечной точке /v2/payment/banks/indonesia-va/sale, отправляемый методом POST. Этот запрос относится к группе запросов /v2/payment/banks/{payment_method}/sale.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ECommPay при интеграции.
      • payment_id — идентификатор платежа, уникальный в рамках проекта.
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным).
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор в рамках проекта.
      • ip_address — используемый IP-адрес.
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в минорных единицах валюты. В запросах на оплаты с указанием валюты IDR необходимо округлять суммы до целых чисел. Если в запросе указывается иная валюта, то сумма платежа конвертируется на стороне ECommPay в эквивалентную сумму в валюте IDR и также округляется до целых чисел. При этом округление выполняется в большую сторону (например, если в результате конвертации получается сумма 200 000,05 IDR, то такая сумма округляется до 200 001,00 IDR).
      • currency — валюта платежа в формате ISO-4217 alpha-3.
    • account — объект, содержащий сведения о банковском счёте пользователя:
      • bank_id — идентификатор банка.
  3. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) должен содержать идентификаторы проекта, платежа и пользователя, подпись, сумму и валюту платежа:

{
    "general": {
      "project_id": 2990,
      "payment_id": payment_id,
      "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "payment": {
      "amount": 35000000,
      "currency": "IDR"
      },
    "customer": {
      "id": "12345",
      "ip_address": "1.1.1.1"
    },
    "account":{
      "bank_id": 2961
    }
 }

Форматы данных для перенаправления пользователей

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

  • Принять от платёжной платформы оповещение с объектом redirect_data.
  • Сформировать POST-запрос из параметров, переданных в объекте body, в кодировке x-www-form-urlencoded.
  • Осуществить перенаправление на URL, указанный в параметре url.

Далее приведён фрагмент оповещения, содержащего данные для перенаправления пользователя:

    "redirect_data": {
        "body": {
            "Data": "4dg65h72G63k68g61J6eK74I49h44i3dj41H43g50h30G30k30g33J26K43I75h73i74j49H44g3dh6dG65k72g63J68K61I6eh74i5fj31H30g26h43G75k73g74J49K50I3dh26i43j75H72g72
h3dG54k48g42J26K41I6dh6fi75j6eH74g3dh34G36k35g2eJ35K32I26h52i65j66H49g44h3dG34k30g30J30K30I30h30i30j31H30g26h54G72k61g6eJ73K54I69h6di65j3dH32g30h32G30k2dg30J34K2dI31h35i
20j31H33g3ah32G36k3ag34J33K26I52h65i74j75H72g6eh55G52k4cg3dJ68K74I74h70i3aj2fH2fg70h70G2ek74g65J72K6dI69h6ei61j6cH2eg74h65G73k74g2fJ70K72I6fh63i65j73H73g2fh63G6fk6dg70J6
cK65I74h65i2dj72H65g64h69G72k65g63J74K2fI30h66i35j62H64g36h61G30k63g75J68K73I31h37i69j34H32g6dh34G76k37g72J37K39I66h36i2fj31H30g35h65G39k63g36J61K66I38h39i66j63H33g62h64
G26k52g65J71K75I65h73i74j55H52g4ch3dG68k74g74J70K73I3ah2fi2fj65H36g61h30G31k65g63J39K2eI6eh67i72j6fH6bg2eh69G6fk2fg63J61K6cI6ch62i61j63H6bg2fh78G70k61g79J2fK26I42h61i6ej
6bH43g6fh64G65k3dg54J4dK42I2eh46i54j",
            "Remarks": "",
            "EncryptText": "8F4AC9ED17D1579A7DE5121B16A45B4F"
        },
        "method": "POST",
        "url": "http://example.test//payment"
    }

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

Для оповещений о результатах оплат с применением метода ATM & Bank Transfer in Indonesia (Virtual Accounts) используется стандартный формат, описание которого представлено в разделе Оповещения.

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

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

 {
        "project_id": 200,
        "payment": {
            "id": "9770802",
            "type": "purchase",
            "status": "success",
            "date": "2020-02-22T22:44:46+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "description": "test"
        },
        "account": {
            "number": "8856113600001045"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 52084000029401,
            "type": "sale",
            "status": "success",
            "date": "2020-02-22T22:44:46+0000",
            "created_date": "2020-02-22T17:30:42+0000",
            "request_id": "59b48b4c2d0a2b6a-00052085",
            "sum_initial": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1164,
                "payment_id": "644206",
                "auth_code": "",
                "date": "2020-02-22T22:44:45+0000"
            }
        },
        "signature": "Hekd6+86S592dGuYCHNLADZ8LaBC5/JSKObUxTvkUuCZL4phAiFQA=="
    }

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

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

{
        "project_id": 200,
        "payment": {
            "id": "9770802",
            "type": "purchase",
            "status": "decline",
            "date": "2020-02-22T22:44:46+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 1000,
                "currency": "IDR"
            },
            "description": "test"
        },
        "account": {
            "number": "8856113600001046"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 52084000029401,
            "type": "sale",
            "status": "decline",
            "date": "2020-02-22T22:44:46+0000",
            "created_date": "2020-02-22T17:30:42+0000",
            "request_id": "59b48b4c2d0a2b6a-00052085",
            "sum_initial": {
                "amount": 1000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "IDR"
            },
            "code": "20101",
            "message": "Decline due to amount or frequency limit",
        },
        "signature": "Hekd6+86S592dGuYCHNLADZ8LaBC5/JSKObUxTvkUuCZL4phAiFQA=="
    }

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

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

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

Как и при работе с другими платёжными методами, которые предоставляет ECommPay, при использовании метода ATM & Bank Transfer in Indonesia (Virtual Accounts) доступны разные способы анализа информации о платежах и операциях с применением этого метода — как в отдельности, так и в совокупности с другими методами.

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

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

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

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