Banks of Indonesia

Обзор

Banks of Indonesia — метод интернет-банкинга для проведения платежей через банки Индонезии. Оплаты осуществляются через Payment Page и Gate, выплаты — через Gate.

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

Тип платёжного метода Интернет-банкинг
Регионы использования Индонезия
Валюты платежей IDR
Конвертация валют
Оплаты +
Выплаты +
Оплаты по сохранённым данным
Полные возвраты
Частичные возвраты
Опротестования
Особенности
  • Для работы с этим методом через Payment Page поддерживается каскадное проведение оплат. Информацию о поддержке этой возможности можно получить в разделе Каскадное проведение платежей и у курирующего менеджера ECommPay
  • Метод Banks of Indonesia входит в группу методов интернет-банкинга в Юго-Восточной Азии, для которых можно задавать дополнительные параметры при вызове Payment Page
  • При использовании этого метода все платежи в валюте IDR являются целочисленными. В запросах с указанием валюты IDR следует округлять суммы до целых чисел, иначе, в зависимости от провайдера, используемого для проведения платежа, дробная часть отсекается при обработке платежа в платёжной платформе. При указании в запросах других валют сумма платежа конвертируется на стороне ECommPay с округлением до 1 000,00 IDR
  • Доступны два способа выбора банка: на стороне Payment Page или на стороне провайдера. Подключаемый способ необходимо уточнять у курирующего менеджера ECommPay
  • В браузере Safari может не поддерживаться перенаправление на сервис банка. Подробности необходимо уточнять у курирующего менеджера ECommPay
Организация и стоимость подключения По согласованию с курирующим менеджером ECommPay
Прим.:

Для работы с методом Banks of Indonesia в настоящее время поддерживаются две технических реализации: новая, описанная в данном разделе, и старая, описанная в разделе ru_pm_banks_indonesia_old.html.

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

Схема работы

В проведении отдельного платежа с использованием метода Banks of Indonesia задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ECommPay, а также сервис одного из банков, поддерживающих работу с этим методом.



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

Интерфейсы Суммы, IDR Время **
Payment Page CMS Plug-ins Gate Dashboard (Old Dashboard) Минимум Максимум Базовое Предельное
Оплаты + + * * до 5 минут 48 часов
Выплаты + * * до 10 минут 48 часов

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

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

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

Проведение оплат с использованием метода Banks of Indonesia выполняется с перенаправлением пользователей на сайты банков, поддерживающих работу с этим методом, проведение выплат — с уведомлением пользователей со стороны веб-сервиса.

Рис.: Оплата через Payment Page с выбором банка на стороне Payment Page



Рис.: Оплата через Payment Page с выбором банка на стороне провайдера



Рис.: Оплата через Gate с перенаправлением на сайт банка



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



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



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

Проведение платежей с применением метода Banks of Indonesia осуществляется через банки, поддерживающие работу с этим методом. Банкам соответствуют свои идентификаторы, которые используются при инициировании оплат и выплат через Gate, а также при вызове Payment Page для отображения страницы с выбором метода оплаты.

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

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

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

{
  "general": {
    "project_id": 200,
    "payment_id": "ORDER_155860015",
    "signature": "K6jllym+PtObocZtr345st...=="
  },
  "payment": {
    "amount": 15000,
    "currency": "IDR"
  }
}
Табл. 1. Список банков
Банк ID Оплаты Выплаты
Bank Artha Graha 512 +
Bank BCA Syariah 555 +
Bank Bukopin 549 +
Bank Central Asia 140 + +
Bank Centratama Nasional 557 +
Bank Chinatrust Indonesia 566 +
Bank CIMB Niaga 507 +
Bank Commonwealth 567 +
Bank Danamon Indonesia 398 + +
Bank Danamon Syariah 558 +
Bank DBS Indonesia 514 +
Bank Hana 551 +
Bank HSBC 513 +
Bank International Indonesia (BII MayBank) 505 +
Bank Jabar Banten Syariah 546 +
Bank Mandiri 143 + +
Bank Mayapada International 519 +
Bank MayBank Indonesia 565 +
Bank MayBank Indonesia Syariah 559 +
Bank Mayora 556 +
Bank Mega 547 +
Bank Muamalat Indonesia 539 +
Bank Mutiara 518 +
Bank Nagari (BPD Sumbar) 526 +
Bank National Nobu 553 +
Bank Negara Indonesia 141 + +
Bank Negara Indonesia Syariah 548 +
Bank NTT 537 +
Bank Nusantara Parahyangan 538 +
Bank OCBC NISP 509 +
Bank Panin 506 +
Bank Permata 396 + +
Bank Permata Syariah 560 +
Bank Rakyat Indonesia 142 + +
Bank Rakyat Indonesia Syariah 545 +
Bank Saudara 543 +
Bank Sinarmas 540 +
Bank Sinamars Syariah 562 +
Bank Standard Chartered 515 +
Bank Sumut 525 +
Bank Syariah Mandiri 550 +
Bank Syariah Mega 554 +
Bank Tabungan Negara (BTN) 399 + +
Bank Tabungan Pensiunan Nasional /BTPN 544 +
Bank Tabungan Negara Syariah (BTN) 561 +
Bank UOB Buana Indonesia 508 +
Bank Windu Kencana 511 +
BPD Aceh 524 +
BPD BALI 536 +
BPD Jawa Barat (Bank BJB) 520 +
BPD Jawa Tengah 522 +
BPD Jawa Timur (Bank JATIM) 523 +
BPD Kalimantan Barat 531 +
BPD Kalimantan Selatan 530 +
BPD Kalimantan Timur 532 +
BPD Lampung 529 +
BPD Nusa Tenggara Barat 535 +
BPD Riau 527 +
BPD Sulawesi Selatan dan Barat 533 +
BPD Sulawesi Utara 534 +
BPD Sumatera Selatan 528 +
BPD Yogyakarta 521 +
CIMB Clicks Indonesia 397 + +
CIMB Niaga (CIMBN) 507 + +
CITIBank 510 +
Deutsche Bank AG 516 +
DOKU 564 +
ICB Bumiputera 552 +
OCBC NISP Syariah 563 +
Permata Bank (PMB) 396 + +
QNB Kesawan 541 +
RaboBank 517 +
Virtual Account Bank 400 +

Регионы проведения выплат

При проведении выплаты с использованием метода Banks of Indonesia обязательно учитывается регион банковского счёта пользователя. Для этого используется идентификатор региона, который передаётся в параметре region_id в запросе на выплату. Далее в таблице приведена информация о регионах и их идентификаторах.

Табл. 2. Список регионов
Регион ID
Aceh 236
Bali 237
Banten 238
Bengkulu 239
Gorontalo 240
Jakarta Raya 241
Jambi 242
Jawa 243
Jawa Barat 244
Jawa Tengah 245
Jawa Timur 246
Kalimantan 247
Kalimantan Barat 248
Kalimantan Selatan 249
Kalimantan Tengah 250
Kalimantan Timur 251
Kalimantan Utara 252
Kepulauan Bangka Belitung 253
Kepulauan Riau 254
Lampung 255
Maluku (регион) 256
Maluku (провинция) 257
Maluku Utara 258
Nusa Tenggara 259
Nusa Tenggara Barat 260
Nusa Tenggara Timur 261
Papua (регион) 262
Papua (провинция) 263
Papua Barat 264
Riau 265
Sulawesi 266
Sulawesi Barat 267
Sulawesi Selatan 268
Sulawesi Tengah 269
Sulawesi Tenggara 270
Sulawesi Utara 271
Sumatera 272
Sumatera Barat 273
Sumatera Selatan 274
Sumatera Utara 275
Yogyakarta 276

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

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

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

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

Доступны два способа выбора банка: на стороне Payment Page или на стороне провайдера.

Рис.: Схема проведения оплаты с выбором банка на Payment Page



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

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

Рис.: Схема проведения оплаты с выбором банка на стороне провайдера



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

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

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

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

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

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_amount — сумма платежа в дробных единицах валюты;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3.
  2. Обязательно указываются параметры с данными пользователя:
    • customer_first_name — имя,
    • customer_last_name — фамилия,
    • customer_email — адрес электронной почты пользователя,
    • customer_id — идентификатор пользователя в рамках проекта.
  3. По умолчанию Payment Page открывается на английском языке. Для изменения языка Payment Page и платёжной страницы сервиса Banks of Indonesia необходимо передавать код языка в параметре language_code. Далее приведен список поддерживаемых языков с их кодами, но точный список языков рекомендуется уточнять у курирующего менеджера ECommPay.
    • en — английский,
    • id — индонезийский,
    • ms — малайский,
    • my — бирманский,
    • th — тайский,
    • vi — вьетнамский,
    • zh — китайский.
  4. Валютой платежа может быть только IDR.
  5. При использовании платёжного метода Banks of Indonesia можно настраивать отображение страницы Payment Page с выбором метода оплаты.

    По умолчанию банки, поддерживающие проведение оплат методом Banks of Indonesia, объединены в группу и отображаются одной кнопкой Banks of Indonesia, поэтому выбор банка осуществляется в два этапа.

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

    При использовании платёжного метода Banks of Indonesia с выбором банка на стороне сервиса провайдера сначала выбирается метод Banks of Indonesia на Payment Page, а затем выполняется выбор конкретного банка на стороне сервиса провайдера. В данном случае можно настраивать отображение Payment Page с предварительно выбранным платёжным методом Banks of Indonesia. Для этого необходимо передать код online-indonesian-banks в параметре force_payment_method.

    Оплата через Payment Page с выбором банка на стороне Payment Page

    При использовании платёжного метода Banks of Indonesia с выбором банка на стороне Payment Page сначала выбирается метод Banks of Indonesia среди прочих, а затем на следующей странице с перечнем банков выбирается конкретный банк. Существует несколько вариантов отображения страницы Payment Page с выбором метода оплаты:

    • Отображение каждого банка группы отдельной кнопкой. Для этого необходимо передавать параметр split_banks со значением true в строке payment_methods_options.
      payment_methods_options={"online_indonesian_banks": {"split_banks": true}}
      
    • Отображение кнопок конкретных банков (одного или нескольких). В списке методов может присутствовать метод Banks of Indonesia. Для этого необходимо передавать идентификаторы банков в параметре banks_id. Для отображения нескольких банков необходимо перечислять идентификаторы этих банков через запятую c пробелом.
      payment_methods_options={"online_indonesian_banks": {"split_banks": true, "banks_id": [140, 141]}}
    • Отображение только банков группы без других методов. Для этого используется предварительный выбор метода Banks of Indonesia. Необходимо передавать код платежного метода online-indonesian-banks в параметре force_payment_method. Пользователю открывается страница с выбором банков, минуя страницу с выбором метода оплаты.
    • Отображение сайта конкретного банка. Для этого используется предварительный выбор метода Banks of Indonesia. Необходимо передавать код платежного метода online-indonesian-banks в параметре force_payment_method и идентификатор банка banks_id в параметре payment_methods_options. Перенаправление пользователя на сайта банка осуществляется без подтверждения готовности оплатить, минуя страницы с выбором метода оплаты и с выбором банков.

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

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

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

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

EPayWidget.run(
    { payment_id: 'X03936', 
      payment_amount: 20000000, 
      payment_currency: 'IDR', 
      project_id: 0,
      customer_id: '1',
      customer_first_name: 'John',
      customer_last_name: 'Johnson',
      customer_email: 'Johnson@mail.com',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KURLCvhtT4DqtOcZzUCwX6R\/ekpZhkIQg=="
    }
)

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

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

В параметре operation.sum_converted.amount указывается сконвертированная и/или округленная в большую сторону сумма в мажорных единицах валюты IDR.

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

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

 {
        "project_id": 200,
        "payment": {
            "id": "TEST_154383173598055",
            "type": "purchase",
            "status": "success",
            "date": "2018-12-03T10:50:29+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "description": "TEST_1543831735980"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 15788000002076,
            "type": "sale",
            "status": "success",
            "date": "2018-12-03T10:50:29+0000",
            "created_date": "2018-12-03T10:40:20+0000",
            "request_id": "72cb91e7586004",
            "sum_initial": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 200000,
                "currency": "IDR"
            },
            "provider": {
                "id": 1153,
                "payment_id": "",
                "date": "2018-12-03T10:44:27+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "Cug4rIB6OimEkwmMBi1OfYpapSpZrz00YrFyBErmi0OVw34WpHt5CzEA=="
    }

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

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

{
        "project_id": 200,
        "payment": {
            "id": "TEST_154356886034811111",
            "type": "purchase",
            "status": "decline",
            "date": "2018-11-30T14:11:13+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 1000,
                "currency": "IDR"
            },
            "description": "TEST_154356886034811111"
        },
        "operation": {
            "id": 9830000002095,
            "type": "sale",
            "status": "decline",
            "date": "2018-11-30T14:11:13+0000",
            "created_date": "2018-11-30T14:11:06+0000",
            "request_id": "3b14e5b0fd1",
            "sum_initial": {
                "amount": 1000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 10,
                "currency": "IDR"
            },
            "provider": {
                "id": 1153,
                "payment_id": "",
                "auth_code": ""
            },
            "code": "20101",
            "message": "Decline due to amount or frequency limit"
        },
        "signature": "cQbMiD0pON9eJc5ZugNK0iT5SwHc0feItZRcABrPdFA4EKQiyWj7NWQRmVyHzNTmOX6Zg5w=="
    }

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

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

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

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

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

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

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

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



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

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

  10. Пользователь перенаправляется на сайт банка.
  11. Пользователь выполняет необходимые действия для оплаты на сайте банка.
  12. На стороне сервиса банка выполняется обработка платежа.
  13. Пользователю отображается результат оплаты на сайте банка.
  14. Пользователь перенаправляется к веб-сервису.
  15. От сервиса банка к платёжной платформе направляется уведомление о результате оплаты.
  16. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  17. От веб-сервиса пользователю направляется результат оплаты.

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



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

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

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

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

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

  1. Должен использоваться запрос /v2/payment/banks/indonesia/sale, отправляемый методом POST. Этот запрос относится к группе запросов /v2/payment/banks/{payment_method}/sale.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — используемый IP-адрес,
      • id — идентификатор в рамках проекта,
      • first_name — имя,
      • last_name — фамилия,
      • email — адрес электронной почты;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • account — объект, содержащий сведения о банковском счёте пользователя:
      • bank_id — идентификатор банка. Данный параметр не является обязательным при использовании способа выбора банка на стороне сервиса провайдера.
    • return_url — объект, содержащий URL для перенаправления пользователя после оплаты:
      • success — URL для перенаправления пользователя после проведенной оплаты,
      • decline — URL для перенаправления пользователя после отклоненной оплаты.
  3. По умолчанию платёжная страница сервиса Banks of Indonesia открывается на английском языке. Для изменения языка платёжной страницы необходимо передать параметр customer.language со значением кода языка. Далее приведен список поддерживаемых языков с их кодами, но точный список языков рекомендуется уточнять у курирующего менеджера ECommPay.
    • en — английский,
    • id — индонезийский,
    • ms — малайский,
    • my — бирманский,
    • th — тайский,
    • vi — вьетнамский,
    • zh — китайский.
  4. В зависимости от провайдера, обрабатывающего платёж, для проведения оплаты могут потребоваться другие обязательные параметры, например, имя, фамилия и адрес электронной почты пользователя. В таком случае список параметров отправляется в оповещении на уточнение параметров. Подробнее см. в разделе Дополнение информации о платеже.
  5. Валютой платежа может быть только IDR. Сумма должна быть целочисленной, дробная часть округляться в большую сторону. Со стороны мерчанта необходимо предупреждать пользователей об округлении.
  6. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

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

{
    "general": {
      "project_id": 2990,
      "payment_id": payment_id,
      "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "payment": {
      "amount": 35000000,
      "currency": "IDR"
      },
    "customer": {
      "id":"2990",
      "ip_address": "248.121.176",
      "first_name": "Kon",
      "last_name": "Do",
      "email": "do@mail.com",
    },
    "account":{
      "bank_id": 140
    }, 
    "return_url":{
      "decline" : "http://return.url",
      "success" : "http://return.url"
    }
 }

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

Для перенаправления пользователя от веб-сервиса на сайт банка (или на страницу выбора банка) необходимо принять оповещение от платёжной платформы, содержащее ссылку для перенаправления в параметре redirect_data.url и данные для отправки в теле запроса redirect_data.body, и использовать эти параметры при открытии HTML-страницы банка методом, указанным в redirect_data.method.

Рис.: Фрагмент оповещения, содержащего токен на оплату


"redirect_data": {
              "method": "POST",
              "body": {
                "token": "eyJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJwYXiIwLjEifQ.xAQWCKO-
                          cZ7yRT_n0MjQ3MjY3NSwiaWgwMDk1LCJqdGkiOha2Rt4Cm5IRvoP1oP
                          N2mNOzVWp7LcHgDXa64ah4DtQsMRzrVFTwkiOha2Rt4Cm5IF0IjoxNTQ"
            },
             "encrypted": [],
             "url": "https://payment.allpay.site/api/transfer/v1/payIn/sendTokenForm"
    }

Рис.: Фрагмент оповещения, содержащий URL для перенаправления на страницу выбора банка


 "redirect_data": {
                    "body": {
                        "amount": "200000.00",
                        "currency": "IDR"
                    },
                    "method": "POST",
                    "url": "https://secure.example.asia/"
                }
            }

Формат оповещений о результатах оплат

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

В параметре operation.sum_converted.amount указывается сконвертированная и/или округленная в большую сторону сумма в мажорных единицах валюты IDR.

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

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

 {
        "project_id": 200,
        "payment": {
            "id": "TEST_154383173598055",
            "type": "purchase",
            "status": "success",
            "date": "2018-12-03T10:50:29+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "description": "TEST_1543831735980"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 15788000002076,
            "type": "sale",
            "status": "success",
            "date": "2018-12-03T10:50:29+0000",
            "created_date": "2018-12-03T10:40:20+0000",
            "request_id": "72cb91e7586004",
            "sum_initial": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 200000,
                "currency": "IDR"
            },
            "provider": {
                "id": 1153,
                "payment_id": "",
                "date": "2018-12-03T10:44:27+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "Cug4rIB6OimEkwmMBi1OfYpapSpZrz00eNLNIwE/eugWYrFyBErmi0OVw34WpHt5CzEA=="
    }

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

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

{
        "project_id": 200,
        "payment": {
            "id": "TEST_154356886034811111",
            "type": "purchase",
            "status": "decline",
            "date": "2018-11-30T14:11:13+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 1000,
                "currency": "IDR"
            },
            "description": "TEST_154356886034811111"
        },
        "operation": {
            "id": 9830000002095,
            "type": "sale",
            "status": "decline",
            "date": "2018-11-30T14:11:13+0000",
            "created_date": "2018-11-30T14:11:06+0000",
            "request_id": "3b14e5b0fd1",
            "sum_initial": {
                "amount": 1000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 10,
                "currency": "IDR"
            },
            "provider": {
                "id": 1153,
                "payment_id": "",
                "auth_code": ""
            },
            "code": "20101",
            "message": "Decline due to amount or frequency limit"
        },
        "signature": "cQbMiD0pON9eJc5ZugNK0iT5SwH8wQubo0+7RCZWuxc0feItZRcABrPdFA4EKQiyWj7NWQRmVyHzNTmOX6Zg5w=="
    }

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

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

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

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

Для выплаты через Gate с использованием метода Banks of Indonesia со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ECommPay и принять оповещение о результате выплаты. Однако, в зависимости от провайдера, обрабатывающего платёж, перед отправкой запроса следует обратиться к курирующему менеджеру ECommPay для подтверждения. Полная схема проведения выплаты представлена далее.



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

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

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

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

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

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

Таким образом, корректный запрос на выплату с применением метода Banks of Indonesia должен содержать идентификаторы проекта и платежа, подпись, сумму и валюту платежа, идентификатор и IP-адрес пользователя, а также данные о счёте пользователя: идентификатор банка, имя держателя, номер (для зачисления средств) и регион:

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

{
    "general": {
        "project_id": 2990,
        "payment_id": payment_id,
        "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVLhNN5e7aRfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "payment": {
      "amount": 35000000,
      "currency": "IDR"
      },
    "customer": {
      "id":"2990",
      "ip_address": "248.121.176"
    },
    "account":{
      "bank_id": 140,
      "customer_name": "Putra account",
      "number": "314159265358979",
      "region_id": 236,
      "branch":"Bank branch",
      "city": "Denpasar"
    }
}

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

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

В параметре operation.sum_converted.amount указывается сконвертированная и/или округленная в большую сторону сумма в мажорных единицах валюты IDR.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 200 для пользователя 1 была успешно проведена выплата в размере 200 000,00 IDR на счёт № 6419422222 банка Bank Central Asia.

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

 {
        "project_id": 200,
        "payment": {
            "id": "TESTPAYOUT7891022555",
            "type": "payout",
            "status": "success",
            "date": "2018-12-12T13:28:58+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "description": "test payout"
        },
        "account": {
            "number": "6419422222",
            "bank_id":140,
            "region_id": 236
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 15112000002236,
            "type": "payout",
            "status": "success",
            "date": "2018-12-12T13:28:58+0000",
            "created_date": "2018-12-12T13:22:15+0000",
            "request_id": "b54610e94a76",
            "sum_initial": {
                "amount": 20000000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 200000,
                "currency": "IDR"
            },
            "provider": {
                "id": 1153,
                "payment_id": "E80NPPQ6Z1YSYPZTPH0NBON42",
                "date": "2018-12-12T13:28:34+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "qV2FRs/wxoOaywQS0GYQDi+6spZFbiRXxt8zG10zy9TNiJLT0P/+EOrpMkoW80mynkaQfSAUJpfQ=="
    }

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

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

{
        "project_id": 200,
        "payment": {
            "id": "TESTPAYOUT789",
            "type": "payout",
            "status": "decline",
            "date": "2018-12-07T09:44:43+0000",
            "method": "Indonesian banks",
            "sum": {
                "amount": 5000,
                "currency": "IDR"
            },
            "description": ""
        },
        "account": {
            "number": "6419422222",
            "bank_id":140,
            "region_id": 236
        },
        "customer": {
            "id": "1"
        },
        "errors": [
            {
                "code": "3104",
                "message": "Payment Constraint Invalid Payout Amount",
                "description": "Gate. Operation was declined."
            }
        ],
        "operation": {
            "id": 533000002202,
            "type": "payout",
            "status": "decline",
            "date": "2018-12-07T09:44:43+0000",
            "created_date": "2018-12-07T09:44:43+0000",
            "request_id": "205d3536a91f4737d679ae44f5c707eaace0b009-7b37cb0b1b4d62a602dd42fa7d248258224fe3f6",
            "sum_initial": {
                "amount": 5000,
                "currency": "IDR"
            },
            "sum_converted": {
                "amount": 50,
                "currency": "IDR"
            },
            "provider": {
                "id": 1153,
                "payment_id": ""
            },
            "code": "3104",
            "message": "Payment Constraint Invalid Payout Amount"
        },
        "signature": "j4cxKDvx0EaDe4zKLbLcb8isoHFxBB/eV5hPzvsN+iFpGJELstSJw0bHot6v83rzDMlinxE915lAWGHKVjurpQ=="
    }

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

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

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

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

Для метода Banks of Indonesia доступно тестирование оплат через Payment Page и Gate, а также выплат через Gate.

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

При проведении тестовых платежей следует учитывать, что в запросах должен указываться идентификатор тестового проекта, а интерфейсы эмулятора платёжных форм Payment Page и Banks of Indonesia могут отличаться от рабочих.

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

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

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

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

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

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

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

  1. Отправить в платёжную платформу корректный тестовый запрос на открытие Payment Page.
  2. Если в запросе не был указан метод online-indonesian-banks — выбрать метод Banks of Indonesia на странице эмулятора.
  3. Если для выбора доступно несколько банков, то выбрать банк; если для выбора доступен только один банк, то щёлкнуть кнопку Оплатить.
  4. Щёлкнуть кнопку Success или Decline (в зависимости от запрашиваемой суммы).
  5. Принять оповещение с информацией о результате оплаты.

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

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

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

  1. Отправить в платёжную платформу корректный тестовый запрос на оплату (с указанием идентификатора банка в параметре bank_id, идентификатор следует уточнять у службы технической поддержки ECommPay).
  2. Принять оповещение с данными для перенаправления.
  3. Перейти по полученному URL и щёлкнуть кнопку Success или Decline (в зависимости от запрашиваемой суммы) — на странице эмулятора.
  4. Принять оповещение с информацией о результате оплаты.

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

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

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

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

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

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

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

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

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