# Indonesian Online Banking {#pm_indonesia} статья о работе с платёжным методом Indonesian Online Banking, который позволяет проводить платежи в индонезийских рупиях с использованием банковских счетов в Индонезии и для которого в платформе Ecommpay поддерживаются оплаты и выплаты **На уровень выше:**[Банковские платежи](ru_pm_bankpayments.md) ## Обзор {#ru_pm_indonesia_overview} статья о работе с платёжным методом Indonesian Online Banking, который позволяет проводить платежи в индонезийских рупиях с использованием банковских счетов в Индонезии и для которого в платформе Ecommpay поддерживаются оплаты и выплаты ### Введение {#section_ql3_5fj_stb .section} Indonesian Online Banking — метод, позволяющий проводить платежи в индонезийских рупиях с использованием банковских счетов в Индонезии. Для этого метода в платёжной платформе Ecommpay поддерживаются оплаты и выплаты. В этой статье представлена информация о работе с методом Indonesian Online Banking: обзорный раздел с общими сведениями и последующие разделы с информацией о действиях, необходимых со стороны мерчанта для решения разных задач. ### Характеристика {#section_tbf_2zk_ggb .section} |Тип платёжного метода|банковские платежи| |Платёжные инструменты|банковские счета| |Регионы использования|[ID](references/ru/countries/ID.md)| |Валюты платежей|[IDR](references/ru/currencies/IDR.md)| |Конвертация валют|на стороне Ecommpay| |Разовые оплаты|+| |Повторяемые оплаты|–| |Полные возвраты|–| |Частичные возвраты|–| |Выплаты|+| |Опротестования|–| |Особенности|- при работе с Payment Page поддерживаются разные варианты выбора банка, [подробнее](pm_indonesia.md#section_p5j_fgl_ggb) - При использовании этого метода все платежи в валюте [IDR](references/ru/currencies/IDR.md) являются целочисленными. В запросах с указанием валюты [IDR](references/ru/currencies/IDR.md) следует округлять суммы до целых чисел, иначе дробная часть отсекается при обработке платежа в платёжной платформе. При указании в запросах других валют сумма платежа конвертируется на стороне Ecommpay с округлением до 1 000,00 [IDR](references/ru/currencies/IDR.md) - в браузере Safari может не поддерживаться перенаправление на сервис банка. Подробности необходимо уточнять у курирующего менеджера Ecommpay | |Организация и стоимость подключения|по согласованию с курирующим менеджером Ecommpay; дополнительную информацию можно получить в [Ecommpay shop](https://ecommpay.com/shop/payment-methods/online-banking-indonesia/)| ### Схема работы {#section_tsp_gzk_ggb .section} В проведении отдельного платежа с использованием метода Indonesian Online Banking задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа Ecommpay, а также технические средства сервиса одного из банков. ![](images/pm/ru_banks_indonesia_functional.svg) ### Основные операции {#section_rnx_4cl_ggb .section} Для проведения платежей и выполнения операций с использованием метода Indonesian Online Banking могут применяться различные интерфейсы платёжной платформы. Так, оплаты могут проводиться через Payment Page, Gate и Dashboard \(с применением платёжных ссылок\), а выплаты — через Gate и Dashboard. При этом, независимо от используемых интерфейсов, для этого метода характерны следующие свойства и ограничения. ||Суммы, [IDR](references/ru/currencies/IDR.md)|Время¹| |минимум|максимум|базовое|предельное| |--|---------------------------------------------|------| |-------|--------|-------|----------| |Оплаты|100 000,00|25 000 000,00|\*|\*| |Выплаты|100 000,00|10 000 000,00|\*|\*| **Прим.:** 1. Ограничения по времени выполнения операций зависят от банков, поддерживающих оплату этим методом. Базовое и предельное время определяются следующим образом: - Базовое время — среднее расчётное время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Это время определяется для условий штатной работы всех технических средств и каналов связи, а также типичных действий со стороны пользователя. Базовое время рекомендуется использовать для реагирования на отсутствие оповещений о результате платежа и выполнения опроса состояния платежа \([подробнее](ru_Gate_payment_status_request.md#)\). - Предельное время — максимально допустимое время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Если платёж не был проведён или отклонён за это время, он автоматически переводится в статус `decline`. Для индивидуальной настройки предельного времени следует обращаться к специалистам технической поддержки Ecommpay. ### Сценарии использования {#section_fgt_sdl_ggb .section} Проведение оплат с использованием метода Indonesian Online Banking осуществляется с перенаправлением пользователей к сервису банка, проведение выплат — с уведомлением пользователей через веб-сервис мерчанта. Пользовательский сценарий оплаты через Payment Page \(в базовом варианте с выбором пользователем метода и банка и перенаправлением с итоговой страницы платёжной формы к веб-сервису\) выглядит следующим образом. ![](images/pm/pp_scenario/ru_pp_customer_scenario_indonesia_1.svg "Переход к оплате") ![](images/pm/pp_scenario/ru_pp_customer_scenario_indonesia_2.svg "Выбор метода") ![](images/pm/pp_scenario/ru_pp_customer_scenario_indonesia_3.svg "Выбор банка") ![](images/pm/pp_scenario/ru_pp_customer_scenario_indonesia_4.svg "Аутентификация") ![](images/pm/pp_scenario/ru_pp_customer_scenario_indonesia_5.svg "Подтверждение платежа") ![](images/pm/pp_scenario/ru_pp_customer_scenario_indonesia_6.svg "Возвращение к форме") ![](images/pm/pp_scenario/ru_pp_customer_scenario_indonesia_7.svg "Возвращение к веб-сервису") Общие сценарии проведения оплат и выплат можно представить следующим образом. ![](images/pm/ru_banks_overview_pp.svg "Оплата через Payment Page") ![](images/pm/ru_banks_overview_gate_purchase.svg "Оплата через Gate") ![](images/pm/ru_banks_overview_gate_payout.svg "Выплата через Gate") Вместе с тем, к особенностям работы с методом Indonesian Online Banking можно отнести то, что для каждого платежа с использованием этого метода должен быть выбран конкретный банк. При работе через Payment Page, как правило, выбор банка осуществляется пользователем уже в платёжной форме, но при вызовах Payment Page с предварительным выбором метода и банка, а также при инициировании оплат и выплат через Gate банк должен быть выбран на стороне веб-сервиса и в запросах должен указываться идентификатор этого банка. Возможные варианты выбора банка при работе через Payment Page описаны в разделе [Оплаты через Payment Page](pm_indonesia.md#) этой статьи, а способы работы с идентификаторами банков — в следующем подразделе, [Поддержка со стороны банков](pm_indonesia.md#section_rqp_zdl_ggb). ### Поддержка со стороны банков {#section_rqp_zdl_ggb .section} В следующей таблице в ознакомительных целях приведены названия и идентификаторы банков, поддерживающих работу с методом Indonesian Online Banking. |Банк|ID|Оплаты|Выплаты| |----|--|------|-------| |Bank Artha Graha|2871|–|+| |Bank Bukopin|549|–|+| |Bank Central Asia|140|+|+| |Bank CIMB Niaga|507|–|+| |Bank Commonwealth|567|–|+| |Bank Danamon Indonesia|398|–|+| |Bank HSBC|513|–|+| |Bank Mandiri|143|+|+| |Bank Maspion|2891|–|+| |Bank MayBank Indonesia|565|–|+| |Bank Mega|547|–|+| |Bank Mestika|2901|–|+| |Bank Negara Indonesia|141|+|+| |Bank OCBC NISP|509|–|+| |Bank Panin|506|–|+| |Bank Permata|396|–|+| |Bank Rakyat Indonesia|142|+|+| |Bank Rakyat Indonesia Syariah|545|–|+| |Bank Sinar Mas|2911|–|+| |Bank Sumut|525|–|+| |Bank Tabungan Pensiunan Nasional /BTPN|544|–|+| |Bank UOB Buana Indonesia|508|–|+| |OCBC Indonesia|2921|–|+| Поскольку со временем состав доступных банков может меняться, для получения актуальной информации рекомендуется использовать POST-запрос к конечным точкам `/v2/info/banks/indonesia/sale/list` \(для оплат\) и `/v2/info/banks/indonesia/payout/list` \(для выплат\), которые относятся к группе конечных точек [/v2/info/banks/\{payment\_method\}/\{operationType\}/list](https://api-developers.ecommpay.com/api-specification/requests-for-information/post-v2-info-banks-payment-method-operation-type-list) Gate API.В этом запросе должны указываться идентификатор проекта, идентификатор, валюта и сумма платежа и подпись к этим данным; при этом рекомендуется передавать реальные данные о платеже, но допускается и указание произвольных значений. ```language-json { "general": { "project_id": 200, "payment_id": "ORDER_155860015", "signature": "K6jllym+PtObocZtr345st...==" }, "payment": { "amount": 15000, "currency": "IDR" } } ``` ```language-json [ { "id": 507, // Индентификатор банка "abbr": "CIMB", // Служебная аббревиатура банка, используемая в платформе "name": "BANK CIMB NIAGA", // Основное (международное) название банка "nativeName": "Bank CIMB Niaga", // Локальное (национальное или региональное) название банка "currencies": [ // Массив с информацией о валютах, поддерживаемых банком { "id": 982, // Идентификатор валюты в платёжной платформе "alpha_3_4217": "IDR", // Буквенный код валюты платежа в формате ISO-4217 alpha-3 "number_3_4217": "360", // Цифровой код валюты платежа в формате ISO-4217 alpha-3 "exponent": 2 // Число дробных разрядов валюты } ] }, { "id": 2901, "abbr": "BMTK", "name": "Bank Mestika", "nativeName": "Bank Mestika", "currencies": [ { "id": 982, "alpha_3_4217": "IDR", "number_3_4217": "360", "exponent": 2 } ] }, { "id": 2871, "abbr": "BAG", "name": "Bank Artha Graha", "nativeName": "Bank Artha Graha", "currencies": [ { "id": 982, "alpha_3_4217": "IDR", "number_3_4217": "360", "exponent": 2 } ] } ] ``` С вопросами о работе с банками, поддерживающими метод Indonesian Online Banking, можно обращаться к курирующему менеджеру Ecommpay. ## Оплаты через Payment Page {#ru_pm_indonesia_pp_purchase} ### Общая информация {#section_gtg_vxk_m2b .section} Для проведения оплаты через Payment Pageс использованием метода Indonesian Online Banking со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL Ecommpay и принять оповещение о результате.Полная схема проведения оплаты выглядит следующим образом. ![](images/pm/ru_banks_indonesia_uml_pp.svg) 1. Пользователь на стороне веб-сервиса инициирует оплату. 2. От веб-сервиса на заданный URL Ecommpay передаётся запрос на проведение оплаты через Payment Page. 3. Запрос на проведение оплаты поступает в платёжную платформу. 4. В платёжной платформе выполняется приём запроса, с проверкой наличия обязательных параметров и корректной подписи. 5. Осуществляется подготовка Payment Page согласно параметрам проекта и вызова. 6. Пользователю отображается платёжная форма. 7. Пользователь выбирает для оплаты метод Indonesian Online Banking. 8. Запрос на проведение оплаты через выбранный банк поступает в платёжную платформу. 9. В платёжной платформе выполняются обработка полученного запроса и его отправка в сервис банка. 10. В сервисе банка выполняется обработка запроса на оплату. 11. От сервиса банка к платёжной платформе передаются данные для перенаправления пользователя к сервису банка. 12. Данные для перенаправления пользователя передаются к Payment Page. 13. Пользователь перенаправляется к сервису банка. 14. Пользователь выполняет необходимые действия для оплаты. 15. В сервисе банка выполняется обработка платежа. 16. Информация о результате оплаты отображается пользователю в сервисе банка. 17. Пользователь перенаправляется к Payment Page. 18. От сервиса банка к платёжной платформе направляется информация о результате оплаты. 19. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты. 20. От платёжной платформы к Payment Page направляется информация о результате оплаты. 21. Информация о результате оплаты отображается пользователю на Payment Page. Как правило, после того как пользователь на стороне веб-сервиса подтверждает готовность перейти к оплате, он перенаправляется к Payment Page, выбирает платёжный метод и, в случае работы с методом Indonesian Online Banking, дополнительно выбирает один из доступных банков. Вместе с тем, в некоторых ситуациях могут быть актуальны другие варианты выбора платёжного метода и банка. Например, при открытии Payment Page можно сразу перенаправлять пользователя к выбору банка либо ограничивать список поддерживаемых банков для отдельного платежа и отображать пользователю только кнопки выбора целевых банков. Конкретный вариант выбора платёжного метода и банка определяется через параметры, указанные в запросе на открытие Payment Page \(подробнее [Формат запросов](pm_indonesia.md#section_p5j_fgl_ggb)\), при этом допустимы следующие варианты: - 1 — при открытии платёжной формы в ней последовательно отображаются отдельные страницы для выбора метода и банка, и пользователь выбирает сначала метод, а затем банк \(этот вариант используется по умолчанию\); - 2 — при открытии платёжной формы в ней отображается страница с кнопками выбора методов и банков для данного метода, и пользователь выбирает один из этих банков; - 3 — при открытии платёжной формы в ней отображается страница с кнопками выбора всех доступных банков для данного метода, и пользователь выбирает один из этих банков; - 4 — при открытии платёжной формы в ней отображается страница с кнопками выбора заданных банков для данного метода, и пользователь выбирает один из этих банков; - 5 — при открытии платёжной формы в ней отображается страница подтверждения перенаправления к сервису заданного банка, и пользователь соглашается с этим перенаправлением. ![](images/universal/pm/splits/ru_asian_banking_pp_1_indonesia.svg "1 — Выбор метода и банка") ![](images/universal/pm/splits/ru_asian_banking_pp_2_indonesia.svg "2 — Выбор банка среди доступных методов") ![](images/universal/pm/splits/ru_asian_banking_pp_4_indonesia.svg "3 — Выбор среди доступных банков") ![](images/universal/pm/splits/ru_asian_banking_pp_5_indonesia.svg "4 — Выбор среди заданных банков") ![](images/universal/pm/splits/ru_asian_banking_pp_6_indonesia.svg "5 — Перенаправление к сервису заданного банка") Информация о форматах запросов и оповещений, используемых для проведения оплат методом Indonesian Online Banking через Payment Page, приведена далее в этом разделе; общая информация о работе с Payment Page API — в отдельной статье [Организация взаимодействия](ru_pp_interaction_organisation.md#). ### Формат запросов {#section_p5j_fgl_ggb .section} При формировании запросов на открытие платёжной формы с применением метода Indonesian Online Banking необходимо учитывать следующее: 1. Должен использоваться базовый минимум параметров, обязательный для любого платежа: - `project_id` — идентификатор проекта, полученный от Ecommpay при интеграции; - `payment_id` — идентификатор платежа, уникальный в рамках проекта; - `payment_currency` — код валюты платежа в формате ISO-4217 alpha-3; - `payment_amount` — округлённая до целого числа сумма платежа в дробных единицах валюты; - `customer_id` — идентификатор пользователя в рамках проекта. 2. Вариант выбора банка может определяться следующим образом: 1. *Через выбор в Payment Page метода и банка \(1\)* — как вариант по умолчанию, применяемый, если не указываются параметр `force_payment_method` и объект `payment_methods_options`, упоминаемые в подпунктах *2–5*. 2. *Через выбор в Payment Page банка среди доступных методов \(2\)* — для этого в объекте `payment_methods_options` необходимо указывать объект `online_indonesian_banks`, содержащий параметр `split_banks` со значением `true`: ```language-json "payment_methods_options": "{\"online_indonesian_banks\": {\"split_banks\": true}}" ``` 3. *Через выбор в Payment Page банка из числа доступных \(3\)* — для этого в параметре `force_payment_method` необходимо указывать код предварительного выбора метода `online-indonesian-banks`. 4. *Через выбор в Payment Page банка из числа заданных \(4\)* — для этого необходимо указывать: - код `online-indonesian-banks` в параметре `force_payment_method`; - объект `payment_methods_options` с объектом `online_indonesian_banks`, который должен содержать параметр `split_banks` со значением `true` и объект `banks_id` с массивом, включающим в себя идентификаторы целевых банков: ```language-json "payment_methods_options": "{\"online_indonesian_banks\": {\"split_banks\": true, \"banks_id\": [2901, 2871]}}" ``` 5. *Через подтверждение в Payment Page перенаправления к сервису заданного банка \(5\)* — для этого необходимо указывать: - код `online-indonesian-banks` в параметре `force_payment_method`; - объект `payment_methods_options` с объектом `online_indonesian_banks`, который должен содержать параметр `split_banks` со значением `true` и объект `banks_id` с массивом, включающим в себя идентификатор целевого банка: ```language-json "payment_methods_options": "{\"online_indonesian_banks\": {\"split_banks\": true, \"banks_id\": [2901]}}" ``` 3. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page \([подробнее](ru_PP_Parameters.md)\). 4. После указания всех целевых параметров необходимо составлять подпись \([подробнее](ru_platform_signature.md#)\). Таким образом, корректный запрос на открытие платёжной формы с применением метода Indonesian Online Banking должен содержать идентификатор проекта, базовые сведения о платеже \(идентификатор, сумму и код валюты\), идентификатор пользователя и подпись. ```language-json { "project_id": 120, "payment_id": "580", "payment_amount": 1000000, "payment_currency": "IDR", "customer_id": "customer1", "signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg==" } ``` ```language-json { "project_id": 120, "payment_id": "580", "payment_amount": 1000000, "payment_currency": "IDR", "customer_id": "customer1", "signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg==" } ``` Вместе с тем, в случае с выбором из заданных банков \(4\), запрос на открытие Payment Page может содержать расширенный набор данных. ```language-json { "project_id": 120, "payment_id": "580", "payment_amount": 1000000, "payment_currency": "THB", "customer_id": "customer1", "force_payment_method": "online-indonesian-banks", "payment_methods_options": "{\"online_indonesian_banks\": {\"split_banks\": true, \"banks_id\": [140, 141]}}", "signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg==" } ``` ### Формат оповещений {#section_dpx_2hl_ggb .section} Для оповещений о результатах оплат с применением метода Indonesian Online Banking используется типовой формат, описание которого представлено в разделе [Работа с оповещениями](ru_platform_callbacks.md#). В следующем примере оповещение свидетельствует о том, что в рамках проекта `200` была проведена оплата в размере `200 000,00 IDR`. ```language-json { "project_id": 200, "payment": { "id": "154383173598055", "type": "purchase", "status": "success", "date": "2022-09-03T10:50:29+0000", "method": "Indonesian banks", "sum": { "amount": 20000000, "currency": "IDR" }, "description": "1543831735980" }, "customer": { "id": "1" }, "operation": { "id": 15788000002076, "type": "sale", "status": "success", "date": "2022-09-03T10:50:29+0000", "created_date": "2022-09-03T10:40:20+0000", "request_id": "72cb91e7586004", "sum_initial": { "amount": 20000000, "currency": "IDR" }, "sum_converted": { "amount": 20000000, "currency": "IDR" }, "provider": { "id": 1153, "payment_id": "", "date": "2022-09-03T10:44:27+0000", "auth_code": "" }, "code": "0", "message": "Success" }, "signature": "Cug4rIB6OimEkwmMBi1OfYpFyBErmi0OVw34WpHt5CzEA==" } ``` В следующем примере оповещение свидетельствует об отклонённой оплате. ```language-json { "project_id": 200, "payment": { "id": "154356886034811111", "type": "purchase", "status": "decline", "date": "2022-09-10T14:11:13+0000", "method": "Indonesian banks", "sum": { "amount": 1000, "currency": "IDR" }, "description": "154356886034811111" }, "operation": { "id": 9830000002095, "type": "sale", "status": "decline", "date": "2022-09-10T14:11:13+0000", "created_date": "2022-09-10T14: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": "cQbMiD0pON9eJc5ZugNK0iRmVyHzNTmOX6Zg5w==" } ``` ### Дополнительные материалы {#section_xpz_thl_ggb .section} Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы: - [Быстрый старт](ru_pp_quickstart.md#) и [Организация взаимодействия](ru_pp_interaction_organisation.md#)— о том, как организовать взаимодействие веб-сервиса с платёжной платформой через Payment Page. - [Работа с подписью к данным](ru_platform_signature.md#)— о порядке создания и проверки подписи в программных запросах и оповещениях при взаимодействии с платёжной платформой. - [Проведение платежей](ru_platform_payment_model.md)— о типах, схемах проведения и возможных статусах поддерживаемых платежей и операций. - [Проведение оплат](ru_pp_purchase.md)— о том, как проводить разовые оплаты с незамедлительным списанием средств через Payment Page. - [Работа с информацией об операциях](ru_platform_payment_info_codes.md)— о служебных кодах, которые используются в платёжной платформе, чтобы фиксировать информацию о выполнении операций. ## Оплаты через Gate {#ru_pm_indonesia_gate_purchase} ### Общая информация {#section_lsx_3jl_ggb .section} Для проведения оплаты через Gate с использованием метода Indonesian Online Banking со стороны веб-сервиса необходимо: 1. Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL Ecommpay. 2. Принять промежуточное оповещение от платёжной платформы и осуществить перенаправление пользователя к сервису банка. 3. Принять итоговое оповещение от платёжной платформы. Полная схема проведения оплаты выглядит следующим образом. ![](images/pm/ru_banks_indonesia_uml_gate.svg) 1. Пользователь на стороне веб-сервиса инициирует оплату с использованием метода Indonesian Online Banking. 2. От веб-сервиса на заданный URL Ecommpay передаётся запрос на проведение оплаты через Gate. 3. Запрос на проведение оплаты поступает в платёжную платформу Ecommpay. 4. В платёжной платформе выполняется приём запроса с проверкой наличия обязательных параметров и корректной подписи. 5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности \([подробнее](ru_gate_interaction_organisation.md#)\). 6. В платёжной платформе выполняются дальнейшая обработка запроса \(с проверкой согласованности параметров\) и его отправка в сервис банка. 7. В сервисе банка выполняется обработка запроса на оплату. 8. От сервиса банка к платёжной платформе передаются данные для перенаправления пользователя к сервису банка. 9. От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя к сервису банка. 10. Пользователь перенаправляется к сервису банка. 11. Пользователь выполняет необходимые действия для оплаты. 12. В сервисе банка выполняется обработка платежа. 13. Пользователю отображается информация о результате оплаты. 14. Пользователь перенаправляется к веб-сервису. 15. От сервиса банка к платёжной платформе направляется информация о результате оплаты. 16. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты. 17. На стороне веб-сервиса обеспечивается информирование пользователя о результате оплаты. Информация о форматах запросов и оповещений, используемых для проведения оплат методом Indonesian Online Banking через Gate, приведена далее в этом разделе; общая информация о работе с Gate API — в отдельной статье [Организация взаимодействия](ru_gate_interaction_organisation.md#). ### Формат запросов {#section_osx_3jl_ggb .section} При формировании запросов на оплату с применением метода Indonesian Online Banking необходимо учитывать следующее: 1. Для инициирования каждой оплаты должен использоваться отдельный POST-запрос к конечной точке `/v2/payment/banks/indonesia/sale`. Эта конечная точка относится к группе [/v2/payment/banks/\{payment\_method\}/sale](https://api-developers.ecommpay.com/api-specification/banks/post-v2-payment-banks-payment-method-sale). 2. В каждом запросе должны использоваться следующие объекты и параметры: - `general` — объект, содержащий основные идентификационные сведения запроса: - `project_id` — идентификатор проекта, полученный от Ecommpay при интеграции; - `payment_id` — идентификатор платежа, уникальный в рамках проекта; - `signature` — подпись запроса, составленная после указания всех целевых параметров \(подробнее — в разделе [Работа с подписью к данным](ru_platform_signature.md#)\); - `payment` — объект, содержащий сведения о платеже: - `amount` — округлённая до целого числа сумма платежа в дробных единицах валюты, со стороны мерчанта необходимо предупреждать пользователей об округлении; - `currency` — код валюты платежав формате ISO-4217 alpha-3; - `customer` — объект, содержащий сведения о пользователе: - `id` — идентификатор пользователя, уникальный в рамках проекта; - `ip_address` — IP-адрес пользователя, актуальный для инициируемого платежа; - `account` — объект, содержащий сведения о банковском счёте пользователя: - `bank_id` — идентификатор банка. 3. Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации. Таким образом, корректный запрос на оплату с применением метода Indonesian Online Banking должен содержать идентификатор проекта, базовые сведения о платеже \(идентификатор, сумму и код валюты\), идентификатор и IP-адрес пользователя, а также идентификатор банка и подпись. ```language-json { "general": { "project_id": 2990, "payment_id": payment_id, "signature": "PJkV8ej\/UG0Di8hTng6JNIipTv+AWoXW\/9MTO8yJA==" }, "payment": { "amount": 20000000, "currency": "IDR" }, "customer": { "id":"2990", "ip_address": "192.0.2.0", }, "account":{ "bank_id": 140 } } ``` ```language-json { "general": { "project_id": 2990, "payment_id": payment_id, "signature": "PJkV8ej\/UG0Di8hTng6JNIipTv+AWoXW\/9MTO8yJA==" }, "payment": { "amount": 20000000, "currency": "IDR" }, "customer": { "id":"2990", "ip_address": "192.0.2.0", }, "account":{ "bank_id": 140 } } ``` ### Формат промежуточных оповещений для перенаправления пользователей {#section_x23_cpg_vgb .section} Для перенаправления пользователей от веб-сервиса мерчанта к сервису Indonesian Online Banking при проведении каждого платежа с использованием метода Indonesian Online Banking необходимо принять промежуточное оповещение от платёжной платформы и использовать информацию из него, включённую в объект `redirect_data`. Формат таких оповещений является типовым \([подробнее](ru_platform_callbacks.md#)\), при этом в состав объекта `redirect_data` включаются следующие объекты и параметры: - `body` — объект с данными для отправки в теле запроса; - `method` — параметр с указанием HTTP-метода отправки запроса\(`GET` или `POST`\); - `url` — параметр со ссылкой для перенаправления. ```language-json "redirect_data": { "body": {}, "method": "GET", "url": "https://www.example.com/pay" } ``` ### Формат итоговых оповещений {#section_dpx_2hl_ggb .section} Для оповещений о результатах оплат с применением метода Indonesian Online Banking используется типовой формат, описание которого представлено в разделе [Работа с оповещениями](ru_platform_callbacks.md#). В следующем примере оповещение свидетельствует о том, что в рамках проекта `200` была проведена оплата в размере `200 000,00 IDR`. ```language-json { "project_id": 200, "payment": { "id": "154383173598055", "type": "purchase", "status": "success", "date": "2022-09-03T10:50:29+0000", "method": "Indonesian banks", "sum": { "amount": 20000000, "currency": "IDR" }, "description": "1543831735980" }, "customer": { "id": "1" }, "operation": { "id": 15788000002076, "type": "sale", "status": "success", "date": "2022-09-03T10:50:29+0000", "created_date": "2022-09-03T10:40:20+0000", "request_id": "72cb91e7586004", "sum_initial": { "amount": 20000000, "currency": "IDR" }, "sum_converted": { "amount": 20000000, "currency": "IDR" }, "provider": { "id": 1153, "payment_id": "", "date": "2022-09-03T10:44:27+0000", "auth_code": "" }, "code": "0", "message": "Success" }, "signature": "Cug4rIB6OimEkwmMBi1OfYpapSpZri0OVw34WpHt5CzEA==" } ``` В следующем примере оповещение свидетельствует об отклонённой оплате. ```language-json { "project_id": 200, "payment": { "id": "154356886034811111", "type": "purchase", "status": "decline", "date": "2022-09-10T14:11:13+0000", "method": "Indonesian banks", "sum": { "amount": 1000, "currency": "IDR" }, "description": "154356886034811111" }, "operation": { "id": 9830000002095, "type": "sale", "status": "decline", "date": "2022-09-10T14:11:13+0000", "created_date": "2022-09-10T14: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": "cQbMiD0pON9eJc5ZugNK0iTVyHzNTmOX6Zg5w==" } ``` ### Дополнительные материалы {#section_xsx_3jl_ggb .section} Для организации работы с оплатами через Gate также могут быть полезны следующие материалы: - [Быстрый старт](ru_gate_quickstart.md#) и [Организация взаимодействия](ru_gate_interaction_organisation.md#)— о том, как взаимодействовать с платёжной платформой через Gate. - [Работа с подписью к данным](ru_platform_signature.md#)— о порядке создания и проверки подписи в программных запросах и оповещениях при взаимодействии с платёжной платформой. - [Проведение платежей](ru_platform_payment_model.md)— о типах, схемах проведения и возможных статусах поддерживаемых платежей и операций. - [Разовая оплата в одну стадию](ru_platform_sms_model.md)— о том, как проводить разовые оплаты через Gate. - [Работа с информацией об операциях](ru_platform_payment_info_codes.md)— о служебных кодах, которые используются в платёжной платформе, чтобы фиксировать информацию о выполнении операций. ## Выплаты через Gate {#ru_pm_indonesia_gate_payout} ### Общая информация {#section_lsx_3jl_ggb .section} Для проведения выплаты через Gate с использованием метода Indonesian Online Banking со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL Ecommpay и принять оповещение о результате.Полная схема проведения выплаты выглядит следующим образом. ![](images/pm/ru_banks_uml_gate_payout.svg) 1. Пользователь на стороне веб-сервиса инициирует выплату через Indonesian Online Banking. 2. От веб-сервиса на заданный URL Ecommpay передаётся запрос на проведение выплаты через Gate. 3. Запрос на проведение выплаты поступает в платёжную платформу. 4. В платёжной платформе выполняется приём запроса с проверкой наличия обязательных параметров и корректной подписи. 5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее — в разделе [Формат ответа](ru_gate_interaction_organisation.md#). 6. В платёжной платформе обеспечиваются дальнейшая обработка запроса \(с проверкой согласованности параметров\) и его отправка в сервис Indonesian Online Banking. 7. В сервисе Indonesian Online Banking выполняется обработка выплаты. 8. От сервиса Indonesian Online Banking к платёжной платформе направляется информация о результате выплаты. 9. От платёжной платформы к веб-сервису направляется оповещение о результате выплаты. 10. На стороне веб-сервиса обеспечивается информирование пользователя о результате выплаты. Информация о форматах запросов и оповещений, используемых для проведения выплат методом Indonesian Online Banking через Gate, приведена далее в этом разделе; общая информация о работе с Gate API — в отдельной статье [Организация взаимодействия](ru_gate_interaction_organisation.md#). ### Формат запросов {#section_osx_3jl_ggb .section} При формировании запросов на выплату с применением метода Indonesian Online Banking необходимо учитывать следующее: 1. Для инициирования каждой выплаты должен использоваться отдельный POST-запрос к конечной точке `/v2/payment/banks/indonesia/payout`. Эта точка относится к группе [/v2/payment/banks/\{payment\_method\}/payout](https://api-developers.ecommpay.com/api-specification/banks/post-v2-payment-banks-payment-method-payout). 2. В каждом запросе должны использоваться следующие объекты и параметры: - `general` — объект, содержащий основные идентификационные сведения запроса: - `project_id` — идентификатор проекта, полученный от Ecommpay при интеграции; - `payment_id` — идентификатор платежа, уникальный в рамках проекта; - `signature` — подпись запроса, составленная после указания всех целевых параметров \(подробнее — в разделе [Работа с подписью к данным](ru_platform_signature.md#)\); - `payment` — объект, содержащий сведения о платеже: - `amount` — округлённая до целого числа сумма выплаты в дробных единицах валюты; - `currency` — код валюты платежав формате ISO-4217 alpha-3; - `customer` — объект, содержащий сведения о пользователе: - `id` — идентификатор пользователя, уникальный в рамках проекта; - `ip_address` — IP-адрес пользователя, актуальный для инициируемой выплаты; - `account` — объект, содержащий сведения о банковском счёте пользователя: - `number` — номер счёта; - `customer_name` — имя держателя банковского счета; - `bank_id` — идентификатор банка. 3. Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации. Таким образом, корректный запрос на выплату с применением метода Indonesian Online Banking должен содержать идентификатор проекта, базовые сведения о платеже \(его идентификатор, сумму и код валюты\), идентификатор и IP-адрес пользователя, информацию о счёте и подпись. ```language-json { "general": { "project_id": 2990, "payment_id": payment_id, "signature": "PJkV8ej\/UG0Di8hTng6JvaRfBaNIipTv+AWoXW\/9MTO8yJA==" }, "payment": { "amount": 35000000, "currency": "IDR" }, "customer": { "id":"2990", "ip_address": "192.0.2.0" }, "account":{ "bank_id": 140, "customer_name": "Putra account", "number": "314159265358979" } } ``` ```language-json { "general": { "project_id": 2990, "payment_id": payment_id, "signature": "PJkV8ej\/UG0Di8hTng6JvaRfBaNIipTv+AWoXW\/9MTO8yJA==" }, "payment": { "amount": 35000000, "currency": "IDR" }, "customer": { "id":"2990", "ip_address": "192.0.2.0" }, "account":{ "bank_id": 140, "customer_name": "Putra account", "number": "314159265358979" } } ``` ### Формат оповещений {#section_wsx_3jl_ggb .section} Для оповещений о результатах выплат с применением метода Indonesian Online Banking используется типовой формат, описание которого представлено в разделе [Работа с оповещениями](ru_platform_callbacks.md#). В следующем примере оповещение свидетельствует о том, что в рамках проекта `200` была проведена выплата в размере `200 000,00 IDR`. ```language-json { "project_id": 200, "payment": { "id": "PAYOUT7891022555", "type": "payout", "status": "success", "date": "2022-09-12T13:28:58+0000", "method": "Indonesian banks", "sum": { "amount": 20000000, "currency": "IDR" }, "description": "payout" }, "account": { "number": "6419422222", "bank_id": 140, "region_id": 236 }, "customer": { "id": "1" }, "operation": { "id": 15112000002236, "type": "payout", "status": "success", "date": "2022-09-12T13:28:58+0000", "created_date": "2022-09-12T13:22:15+0000", "request_id": "b54610e94a76", "sum_initial": { "amount": 20000000, "currency": "IDR" }, "sum_converted": { "amount": 20000000, "currency": "IDR" }, "provider": { "id": 1153, "payment_id": "E80NPPQ6Z1YSYPZTPH0NBON42", "date": "2022-09-12T13:28:34+0000", "auth_code": "" }, "code": "0", "message": "Success" }, "signature": "qV2FRs/wxoOaywQS0GrpMkoW80mynkaQfSAUJpfQ==" } ``` В следующем примере оповещение свидетельствует об отклонённой выплате. ```language-json { "project_id": 200, "payment": { "id": "PAYOUT789", "type": "payout", "status": "decline", "date": "2022-09-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. Maximum payout limit is exceeded" } ], "operation": { "id": 533000002202, "type": "payout", "status": "decline", "date": "2022-09-07T09:44:43+0000", "created_date": "2022-09-07T09:44:43+0000", "request_id": "205d3536a91f474d62a602dd42fa7d248258224fe3f6", "sum_initial": { "amount": 5000, "currency": "IDR" }, "sum_converted": { "amount": 5000, "currency": "IDR" }, "provider": { "id": 1153, "payment_id": "" }, "code": "3104", "message": "Payment Constraint Invalid Payout Amount" }, "signature": "j4cxKDvx0EaDe4zKHot6v83rzDMlinxE915lAWGHKVjurpQ==" } ``` ### Дополнительные материалы {#section_xsx_3jl_ggb .section} Для организации работы с выплатами через Gate также могут быть полезны следующие материалы: - [Быстрый старт](ru_gate_quickstart.md#) и [Организация взаимодействия](ru_gate_interaction_organisation.md#)— о том, как взаимодействовать с платёжной платформой через Gate. - [Работа с подписью к данным](ru_platform_signature.md#)— о порядке создания и проверки подписи в программных запросах и оповещениях при взаимодействии с платёжной платформой. - [Проведение платежей](ru_platform_payment_model.md)— о типах, схемах проведения и возможных статусах поддерживаемых платежей и операций. - [Выплата](ru_platform_payout_model.md)— о том, как проводить выплаты через Gate. - [Работа с информацией об операциях](ru_platform_payment_info_codes.md)— о служебных кодах, которые используются в платёжной платформе, чтобы фиксировать информацию о выполнении операций. ## Выплаты через Dashboard {#ru_pm_dash_payout} При использовании интерфейса Dashboard можно проводить *одиночные* и *массовые*выплатыметодом Indonesian Online Banking с единичной и пакетной отправкой запросов, называемые соответственно *одиночными* и *массовыми*. - Для проведения одиночной выплаты необходимо открыть форму выплаты, задать все необходимые параметры \(включая метод\), отправить запрос и убедиться в проведении выплаты. - Для проведения массовой выплаты необходимо подготовить и загрузить файл с информацией обо всех целевых выплатах, отправить пакет запросов и убедиться в проведении выплат. При этомдолжен использоваться файл формата CSV, структура которого соответствует требованиям, представленным в разделе [Сведения о массовых платежах](ru_dbl_payments.md#), а параметры выплат— требованиям, представленным в разделе [Выплаты через Gate](pm_indonesia.md#) этой статьи \(за исключением пункта о подписи\). Более подробная информация о проведении выплат через Dashboard представлена в [отдельной статье](ru_dbl_payments.md#). ## Тестирование {#ru_pm_indonesia_testing} ### Общая информация {#section_ujs_5q4_zjb .section} Для метода Indonesian Online Banking доступно тестирование оплат через Payment Page и Gate, а также выплат через Gate. Тестирование может выполняться в рамках тестового проекта, и для подключения и отключения этой функциональности следует обращаться к специалистам технической поддержки Ecommpay. При тестировании платежей следует учитывать, что в запросах должен указываться идентификатор тестового проекта, а интерфейсы эмулятора платёжных форм Payment Page и Indonesian Online Banking могут отличаться от рабочих. ### Статусы тестовых платежей {#section_vjs_5q4_zjb .section} При тестировании оплат их итоговые статусы определяются исходя из сумм, указанных в запросах: - `decline` — при указании суммы `40000` или `40400`, - `success` — при указании любой другой суммы. При тестировании выплат их итоговые статусы определяются исходя из сумм, указанных в запросах: - `decline` — при указании суммы `40000` или `40400`, - `success` — при указании любой другой суммы. ### Оплаты через Payment Page {#section_syj_bt4_xjb .section} Для проведения тестовой оплаты через Payment Page необходимо: 1. Отправить в платёжную платформу корректный тестовый запрос на открытие Payment Page. 2. Если в запросе не был указан метод `online-indonesian-banks` — выбрать метод Indonesian Online Banking на странице эмулятора. 3. Если для выбора доступно несколько банков, то выбрать банк; если для выбора доступен только один банк, то щёлкнуть кнопку **Оплатить**. 4. Щёлкнуть кнопку **Success** или **Decline** \(в зависимости от запрашиваемой суммы\). 5. Принять итоговое оповещение с информацией о результате оплаты. Более подробная информация о проведении оплат с использованием метода Indonesian Online Banking через Payment Page представлена в разделе [Оплаты через Payment Page](pm_indonesia.md#) этой статьи. ### Оплаты через Gate {#section_ul5_gt4_xjb .section} Для проведения тестовой оплаты через Gate необходимо: 1. Отправить в платёжную платформу корректный тестовый запрос на оплату \(с указанием идентификатора банка в параметре `bank_id`, идентификатор следует уточнять у службы технической поддержки Ecommpay\). 2. Принять промежуточное оповещение с данными для перенаправления. 3. Перейти по полученному URL и щёлкнуть кнопку **Success** или **Decline** \(в зависимости от запрашиваемой суммы\) — на странице эмулятора. 4. Принять итоговое оповещение с информацией о результате оплаты. Более подробная информация о проведении оплат с использованием метода Indonesian Online Banking через Gate представлена в разделе [Оплаты через Gate](pm_indonesia.md#) этой статьи. ### Выплаты через Gate {#section_n22_lt4_xjb .section} Для проведения тестовой выплаты через Gate необходимо отправить в платёжную платформу корректный тестовый запрос и принять итоговое оповещение с информацией о результате. Более подробная информация о проведении выплат с использованием метода Indonesian Online Banking представлена в разделе [Выплаты через Gate](pm_indonesia.md#) этой статьи. ## Анализ результатов проведения платежей {#ru_pm_indonesia_dash_analysis} Для анализа информации о платежах и операциях, как в отдельности по методу Indonesian Online Banking, так и в совокупности с другими методами, можно использовать: - инструментарийинтерфейса Dashboard, с различными реестрами и аналитическими панелями; - отчёты в формате CSV, выгружаемые\(как разово, так и периодически\) черезраздел **Отчёты** интерфейса Dashboard; - данные в формате JSON, получаемыепо программным запросам черезинтерфейс Data API. С вопросами по анализу информации можно обращаться к разделам документации \([Dashboard](ru_dbl_about.md) и [Использование Data API](ru_dbl_api_protocol.md)\) и специалистам Ecommpay.