Інтеграція сервісу оплати рахунків PortmoneDirect до банкі вських систем обслуговування клієнтів. Технічний опис
Терміни та визначення
| Термін | Визначення |
|---|---|
| Мерчант, Партнер | Організація, що уклала договір з Portmone.com про надання послуг з приймання платежів |
| Покупець, Клієнт | Відвідувач Інтернет-магазину Мерчанта з метою ознайомлення з асортиментом товарів (послуг) та здійснення покупки |
| Картка, Платіжна картка | Платіжні картки міжнародних платіжних систем Visa, Mastercard та Національної платіжної системи ПРОСТІР |
| Авторизація | Процес надання прав доступу або інших повноважень Покупцеві, програмі або процесу |
| CVV2/CVC2 | CVV2 (Card Verification Value 2) – тризначний код перевірки дійсності картки платіжної системи Visa. Платіжна система Mastercard має аналогічний код перевірки дійсності – CVC2 (Card Validation Code 2) |
| Банк-еквайр | Банк, що організовує точки приймання банківських карток (термінали, банкомати) та здійснює весь комплекс фінансових операцій, пов'язаних з виконанням розрахунків і платежів за банківськими картками в цих точках |
| Банк-емітент банківських карток | Банк, що є учасником платіжної системи та здійснює випуск (емісію) та обслуговування банківських карток |
| IBAN | Міжнародний номер банківського рахунку (англ. International Bank Account Number) |
1. Загальна інформація
Використовується технологія REST. Запити та відповіді передаються HTTPS-каналом (зверніть увагу – на даний момент сервером підтримується тільки протокол TLS 1.2).
Запити від хоста агента на сервер Portmone.com передаються у вигляді повідомлень типу POST.
Звернiть увагу, що всi параметри передаються в тiлi POST запиту, нi в якому разi не в тiлi URL. У прикладах запитів на початку рядка вказано знак
?- це не є вказівкою до використання повідомлен ь типу GET.
URL для виклику методів: https://direct.portmone.com.ua/api/directcash/.
З кожним запитом передаються два обов’язкових параметри – login та password (логін та пароль компанії-реселера). Логін, пароль та HTTPS-сертифікат мають бути надані менеджером Portmone.
Формат відповідей - XML. Для передачі даних використовується кодування UTF-8.
Формат дати - DD.MM.YYYY.
Приклад рядка запиту на доставку рахунку:
method=bills.create&login=логін&password=пароль&version=2&payeeId=значення&contractNumber=значення
Приклад успішної відповіді:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="ok">
[тут xml-дані]
</rsp>
Приклад відповіді, якщо сталася помилка:
Для версії 1:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="Код помилки">Опис помилки</error>
</rsp>
Для версії 2 і більше:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="Код помилки">Опис помилки</error>
<error_description>Докладний опис помилки (версія протоколу – 2) </error_description>
</rsp>
Протокол
Без задання, версія протоколу дорівнює «1».
Якщо у запиті переданий параметр version=2, стають доступними зміни, введені для версії протоколу «2».
Локалізація
У версії протоколу «2» доданий необов’язковий параметр lang (можливі значення: ru – російська мова, uk – українська мова, en – англійська мова). Параметр локалізує атрибутивні значення та назви послуг у відповіді (але не назву компанії). Якщо параметр не переданий, результат повертається українською мовою.
У разі використання у запиті версії протоколу «2» (version=2) та значень параметру lang, у відповіді в блоці <tariff_items> будуть передані значення тегів <name/> та <*_name/>, локалізовані потрібною мовою.
Для версії протоколу «2» у відповіді в блоці <tariff_items> відсутні теги <name_ua/> та <name_en/> (у зв’язку з введенням параметру lang).
Приклад використання параметру lang.
Запит:
method=bills.create&payeeId=1755&login=PortmoneDirectTest&password=**************
&version=2&contractNumber=639512625&lang=uk
Відповідь:
<rsp status="ok">
<bill id="598984149">
<payee id="1755">lifecell</payee>
<contractNumber title="Номер телефона (без +380)">639512625</contractNumber>
<attribute1/>
<attribute2/>
<attribute3/>
<attribute4/>
<bill_attribute1/>
<bill_attribute2/>
<bill_attribute3/>
<bill_attribute4/>
<date>21.01.2020</date>
<description>Рахунок створений автоматично для поповнення балансу</description>
<amount>0.00</amount>
<debt>0.00</debt>
<sum>0.00</sum>
<status>created</status>
<paidAmount/>
<payDate/>
<payee_export_flag/>
<auth_code/>
<transaction_id/>
<payment_point/>
</bill>
</rsp>
У відповіді параметр <contractNumber title> локалізований російською мовою.
Опис структури XML
Опис структури відповіді у XML-форматі наведений у Додатку 1.
Нотифікації завантаження рахунків п о компаніях
Нотифікацій партнеру направляються після завантаження рахунку по кожній компанії. Партнер має надати URL, на який зможуть приймати POST запит для свого опрацювання.
Приклади запитів:
<?xml version="1.0" encoding="UTF-8"?><req name="billsLoaded"><payee id="16020"/></req>
<?xml version="1.0" encoding="UTF-8"?><req name="billsLoaded"><payee id="140264"/><payee id="140235"/></req>
2. Методи
| Назва методу | Опис |
|---|---|
| 2.1. bills.create | результатом виклику методу bills.create є створення на боці Portmone.com підписки на отримання рахунків для необхідної компанії та повернення ID рахунку (billId) |
| 2.2. bills.createByPhone | результатом виклику цього методу є створення на боці Portmone.com рахунку на поповнення мобільного телефону та повернення ID компанії-одержувача платежу (payeeId) і ID рахунку (billId) |
| 2.3. bills.createAll | цей метод використовується для отримання рахунків компаній, що виставляють кілька рахунків за поточний місяць |
| 2.4. bills.pay | за допомогою цього методу виконується оплата рахунку |
| 2.5. bills.get | метод використовується, якщо необхідно отримати інформацію про рахунок (дізнатися статус рахунку). Потрібно викликати, якщо на метод оплати bills.pay отримана помилка зєднання, отримана відповідь не очікуваного формату, який не відповідає протоколу. А також якщо отримані помилки p009, p017, p100. |
| 2.6. bills.paymentOrder | реєстр передається банком до Portmone.com для контролю платежів, що надсилаються, та формування необхідних контрольних реєстрів до кожної організації за необхідним протоколом. Містить список виконаних транзакцій та реквізити платежу покриття. |
| 2.7. bills.date | метод використовується для отримання контрольного списку транзакцій за період (день). Необхідний для контролю транзакцій, що відбулись/ не відбулись |
| 2.8. bills.exported | метод використовується для отримання контрольного списку транзакцій за період (день), кошти за яким були надіслані постачальнику послуги (біллеру) |
| 2.9. bills.balance | метод використовується для перегляду балансу по компанії-біллеру (PAYEE) на поточний момент |
| 2.10. bills.payees | метод використовуєьтся для отримання параметрів біллерів (PAYEE) |
| 2.11. bills.regions | метод використовується для отримання списку доступних регіонів та списку біллерів (PAYEE) для кожного регіону |
| 2.12. bills.additionalPayees | метод використовується для отримання списку компаній, рахунки яких може сплачувати клієнт |
| 2.13. search.regions | метод використовується для отримання повного списку регіонів України |
| 2.14. search.regionsExtended | метод використовується для отримання списку регіонів України з пошуком за назвою регіону |
| 2.15. search.citiesByRegion | метод використовується для отримання списку населених пунктів для вказаного регіону |
| 2.16. search.citiesByRegionExtended | метод використовується для отримання списку населених пунктів вказаного регіону за назвою населеного пункту |
| 2.17. search.streetsByCity | метод використовується для отримання списку вулиць вказаного населеного пункту |
| 2.18. search.streetsByCityExtended | метод використовується для отримання списку вулиць вказаного населеного пункту з пошуком за назвою вулиці |
| 2.19. search.housesByStreet | метод використовується для отримання списку будинків для вказаної вулиці |
| 2.20. search.housesByStreetExtended | метод використовується для отримання списку будинків для вказаної вулиці з пошуком за номером будинку |
| 2.21. search.apartmentsByHouse | метод використовується для отримання списку квартир за відомим ідентифікатором будинку (тільки для багатоквартирних будинків) |
| 2.22. search.apartmentsByHouseExtended | метод використовується для отри мання списку квартир за відомим ідентифікатором будинку (тільки для багатоквартирних будинків) з пошуком за номером квартири |
| 2.23. search.userDocsByAddress* | метод використовується для отримання списку рахунків за знайденим ідентифікатором будинку (для приватних будинків) або квартири (для багатоквартирних будинків). Повертає рахунки з повною відповідністю за адресою |
| 2.24. companies.top10ByRegion* | метод використовується для отримання списку ТОП 10 компаній за ідентификатором регіону (часткова відповідність) |
| 2.25. companies.top10ByCity* | метод використовується для отримання списку ТОП 10 компаній за ідентифікатором міста (часткова відповідність) |
| 2.26. companies.top10ByStreet* | метод використовується для отримання списку ТОП 10 компаній за ідентификатором вулиці (часткова відповідність) |
| 2.27. companies.top10ByHouse* | метод використовується для отримання списку ТОП 10 компаній за відомим ідентифікатором будинку (повна відповідність для будинку або часткова для квартири) |
| 2.28. companies.top10ByAddress* | метод використовується для отримання списку компаній за відомим ідентифікатором будинку (для приватних будинків) або квартири (для багатоквартирних будинків). Повертає рахунки з повною та частковою відповідністю за адресою |
| 2.29. bills.getreference | метод використовується для отримання списку значень вказаного довідника з використанням пов'язаного значення з довідника верхнього рівня |
| 2.30. bills.update | є частиною методу 2.4. bills.pay, використовується для оновлення рахунку без зміни його статусу |
| 2.31. bank.params.guaranteeAmount | метод перевірки суми гарантійного платежу по партнеру згідно індивідуального логіну |
| 2.32. bills.recreate | метод для створення копії сплаченого рахунку |
| 2.33. bills.cancel | метод для відміни оплат, які знаходяться в статусі PAYED (всі версії протоколу) |
| 2.34. counters.get | метод для передачі показів лічильника без оплати (для вхідних компаній) - створення запиту |
| 2.35. counters.set | метод для передачі показів лічильника без оплати (передача даних в компанію, показники, які вніс клієнт) |
* Як використовувати методи пошуку компаній
- Якщо відомий тільки ідентифікатор регіону (
regionId), шукаємо рахунки за регіоном (викори стовуючи метод companies.top10ByRegion)- Якщо відомий ідентифікатор міста (
cityId), шукаємо рахунки для зазначеного міста (використовуючи метод companies.top10ByCity)- Якщо відомий ідентифікатор вулиці (
streetId), шукаємо за вулицею (використовуючи метод companies.top10ByStreet)- Якщо відомий ідентифікатор будинку (
houseId), шукаємо за будинком (використовуючи метод companies.top10ByHouse)- Якщо будинок багатоквартирний (
hasApartments=Y), є ідентифікатор квартири (apartment id), використовуємо метод companies.top10ByAddress (якщо немає повної відповідності за адресою, метод шукає рахунки по вищих пунктах (за будинком, вулицею, містом тощо)) або метод search.userDocsByAddress (повертає рахунки тільки з повною відповідністю параметру пошуку).
2.1. Запит на доставку рахунку
Метод: bills.create
Опис: результатом виклику метода bills.create є створення на боці Portmone.com рахунку для необхідної компанії та повернення ID рахунку (billId - унікального ідентифікатору платежу). Відповідь містить дані про останній доступний не оплачений рахунок. Якщо компанія не надає рахунки, система портмоне створює рахунок на 0 суму і повертає його партнеру для оплати.
Перед викликом методу bills.create необхідно звертати увагу на значення тегу <balance_source>, що отримане при виконанні методу bills.payees. Якщо <balance_source>Y</balance_source> для компанії, то здійснюється виклик методу bills.create. У інших випадках здійснюється виклик методу bills.createAll.
Параметри:
| Параметр | Опис | Обов’язковий |
|---|---|---|
| login | Логін компанії-реселера в системі Portmone.com | Так |
| password | Пароль компанії-реселера в системі Portmone.com | Так |
| method | Назва методу | Так |
| payeeId | ID компанії-одержувача платежу | Так |
| contractNumber | Основний реквізит (ідентифікатор) клієнта в цій компанії | Так |
| billNumber | Номер замовлення | Ні |
| attribute1-4 | Додаткові реквізити | Ні |
Приклад запиту:
method=bills.create&login=логін&password=пароль&version=2&payeeId=значення&contractNumber=значення
Приклад успішної відповіді: див. Додаток 1.
Приклад відповіді, якщо сталася помилка:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="Код помилки">Опис помилк и</error>
</rsp>
2.2. Запит на доставку рахунку за номером телефону
Метод: bills.createByPhone
Опис: результатом виклику цього методу є с творення на боці Portmone.com рахунку на поповнення мобільного телефону та повернення ID компанії-одержувача платежу (payeeId) і ID рахунку (billId).
Для оплати рахунку необхідно викликати метод bills.pay.
Схема взаємодії:
- Клієнт на сайті Партнера (компанії-реселера) вказує номер мобільного телефону для поповнення.
- Партнер передає ці дані до Portmone.com за допомогою методу bills.createByPhone.
- Portmone.com за кодом оператора зв’язку визначає ID компанії, до якої належить телефон клієнта, та надсилає Партнерові XML-повідомлення з ID компанії-одержувача платежу (
payeeId) та ID рахунку (billId). - Партнер виконунує запит оплати рахунку методом bills.pay.
- Portmone.com здійснює переказ коштів постачальнику послуги.
Параметри:
| Параметр | Опис | Обов’язковий |
|---|---|---|
| login | Логін компанії-реселера в системі Portmone.com | Так |
| password | Пароль компанії-реселера в системі Portmone.com | Так |
| method | Назва методу | Так |
| contractNumber | Номер телефону, на який здійснюється поповнення. Формат номеру: 9 цифр, без "+380" (наприклад, 673334411) | Так |
| billAmount | Сума платежу (дорівнюватиме 0, якщо інше не було задане) | Ні |
| billNumber | Номер замовлення (рахунку) у системі компанії-реселера | Ні |
| attribute1-4 | Додаткові реквізити | Ні |
Приклад запиту:
method=bills.createByPhone&login=логін&password=пароль&version=2&contractNumber=значення
&billAmount=значення
Приклад успішної відповіді:
<rsp status="ok">
<bill id="508828105">
<payee id="2065">Київстар</payee>
<contractNumber title="Номер телефону (без +380)">973452341</contractNumber>
<attribute1/>
<attribute2 title="Номер квитанції Київстар"/>
<attribute3/>
<attribute4/>
<bill_attribute1/>
<bill_attribute2/>
<bill_attribute3/>
<bill_attribute4/>
<date>12.06.2019</date>
<description>Рахунок створений автоматично для поповнення балансу</description>
<amount>0.00</amount>
<debt>0.00</debt>
<sum>0.00</sum>
<status>created</status>
<paidAmount/>
<payDate/>
<payee_export_flag/>
<auth_code/>
<transaction_id/>
<payment_point/>
</bill>
</rsp>
Приклад відповіді, якщо сталася помилка:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="Код помилки">Опис помилки</error>
</rsp>
2.3. Запит на доставку всіх рахунків, виставлених за поточний місяць
Метод: bills.createAll
Опис: цей метод використовується для отримання рахунків компаній, що виставляють кілька рахунків за поточний місяць. За набором параметрів цей метод повністю ідентичний методу bills.create.
Параметри:
| Параметр | Опис | Обов’язковий |
|---|---|---|
| login | Логін компанії-реселера в систе мі Portmone.com | Так |
| password | Пароль компанії-реселера в системі Portmone.com | Так |
| method | Назва методу | Так |
| payeeId | ID компанії-одержувача платежу | Так |
| contractNumber | Основний реквізит (ідентифікатор) клієнта в цій компанії | Так |
| billNumber | Номер замовлення | Ні |
| attribute1-4 | Додаткові реквізити | Ні |
Приклад запиту:
method=bills.createAll&login=логін&password=пароль&version=2&payeeId=значення&contractNumber=значення
Приклад успішної відповіді: у разі успіху повертається секція bills, що містить для кожного з рахунків XML, описаний у Додатку 1.
<?xml version="1.0" encoding="utf-8"?>
<rsp status="ok">
<bills>
<bill id="id">
…
</bill>
<bill id="id">
…
</bill>
<bill id="id">
…
</bill>
</bills>
</rsp>
Приклад відповіді, якщо сталася помилка:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="Код помилки">Опис помилки</error>
</rsp>
Основна компанія та компанії-одержувачі:
Платіжна система Portmone.com надає можливість розщеплення платежу, тобто зарахування суми платежу, що отриманий від клієнта, на декількох одержувачів (постачальників товару або послуги).
Основна компанія – це компанія, яку ви відображаєте клієнтові при сплаті за послугу/товар та вказуєте у запитах на отримання рахунків. Такі компанії створюються, наприклад, з метою групування послуг, що надаються (приклад: ГІОЦ (payeeId = 8004), ГЕРЦ (payeeId = 4568)).
Компанія-одержувач – це активна компанія, що надає послугу або товар, але клієнтові вона не відображається.
При запиті на payeeId основної компанії метод bills.createAll у відповідь поверне Вам рахунки з payeeId компаній-одержувачів, по яким і буде проходити оплата.
2.4. Оплата рахунку
Метод: bills.pay
Опис: за допомогою цього методу виконується оплата рахунку.
У випадку якщо по послузі debt_state <> 'E' то відповідний debt не повинен враховуватися в загальну суму оплати по рахунку
Параметри:
| Параметр | Опис | Обов’язковий |
|---|---|---|
| login | Логін компанії-реселера в системі Portmone.com | Так |
| password | Пароль компанії-реселера в системі Portmone.com | Так |
| method | Назва методу | Так |
| billId | ID рахунку. Його повертає метод bills.create (або bills.createByPhone – у разі поповнення мобільного телефону) | Так |
| amount | Сума, що сплачується (вона може відрізнятись від запропонованої у рахунку) | Так |
| auth_code | Код авторизації | Ні |
| transaction_id | ID транзакції | Ні |
| payment_point | Унікальний опис торгової точки партнера | Так |
| payer_iban або payer_card_number або payer_phone_number | iban відправника, хто ініціює переказ, приймає значення 29 символів ------------------------------------------------------------------------------ Карти, відправника, хто ініціює переказ, приймає значення 16 цифр ------------------------------------------------------------------------------ Номер телефону платника в форматі +38ХХХХХХХХХХ | Так |
Приклад запиту:
method=bills.pay&login=логін&password=пароль&version=2&billId=значення&amount=значення&payer_iban=значення
або
method=bills.pay&login=логін&password=пароль&version=2&billId=значення&amount=значення&payer_card_number=значення
Приклад успішної відповіді:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="ok">
<bill id="1046347926">
<payee id="6968">Воля ТБ та/або Інтернет</payee>
<contractNumber title="Номер договору">901386637</contractNumber>
<attribute1 title="Адреса">Київ, Архипенка Олександра, б.4А, кв.185</attribute1>
<attribute2 />
<attribute3 />
<attribute4 />
<bill_attribute1 />
<bill_attribute2 />
<bill_attribute3 />
<bill_attribute4 />
<date>11.01.2022</date>
<description>Рахунок створений автоматично для поповнення балансу</description>
<amount>0.00</amount>
<debt>0.00</debt>
<sum>0.00</sum>
<status>paid</status>
<paidAmount>31000.00</paidAmount>
<payDate>12.01.2022 08:49:29</payDate>
<payee_export_flag>N</payee_export_flag>
<auth_code />
<transaction_id />
<payment_point>PORTMONEDIRECTTEST</payment_point>
<bill_attribute10>UA77*********************6900</bill_attribute10>
</bill>
</rsp>
У випадку і відсутнього payer_iban і payer_card_number система повертатиме помилку
Приклад відповіді, якщо сталася помилка:
<rsp status="fail">
<error code="р013">Неправильні параметри ідентифікації клієнта.</error>
<error_description>Неправильні параметри ідентифікації клієнта.</error_description>
</rsp>
Параметри для платежів більше 30000 грн (безготівкові оплати), 4999 грн (готівкові оплати):
Опис: за законодавством України: для оплати понад 30000 грн (крім категорій комунальних послуг та податків) для безготівкових оплат та всих категорій сервісів понад 4999 грн для готівкових оплат - необхідно передавати та зберігати ПІБ клієнта та ІПН з прив'язкою до транзакції (або ПІБ та дату народження, якщо ІПН у клієнта відсутня за релігійними переконаннями).
| Параметр | Опис | Обов’язковий |
|---|---|---|
| login | Логін компанії-реселера в системі Portmone.com | Так |
| password | Пароль компанії-реселера в системі Portmone.com | Так |
| method | Назва методу | Так |
| billId | ID рахунку. Його повертає метод bills.create (або bills.createByPhone – у разі поповнення мобільного телефону) | Так |
| amount | Сума, що сплачується (вона може відрізнятись від запропонованої у рахунку) | Так |
| first_name | Ім'я клієнта | Так |
| last_name | Прізвище клієнта | Так |
| middle_name | По батькові клієнта | Так |
| taxId | ІПН клієнта | Так |
| birth_date | Дата народження клієнта | Так, якщо ІПН у клієнта відсутня за релігійними переконаннями |
Приклад запиту для платежів більше 30000 грн:
curl --location --request POST 'http://127.0.0.1/api/directcash' \
--form 'version="2"' \
--form 'lang="uk"' \
--form 'login="PortmoneDirectTest"' \
--form 'password="PortmoneDirect"' \
--form 'method="bills.pay"' \
--form 'billId="1046347926"' \
--form 'amount="31000"' \
--form 'first_name="Антон"' \
--form 'last_name="Волоха"' \
--form 'middle_name="Олександрович"' \
--form 'taxId="9999"' \
--form 'birth_date="03.08.1998"'
--form 'payer_iban="UA773510050000026003590876900"'
Приклад успішної відповіді:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="ok">
<bill id="1078035627">
<payee id="6968">Воля ТБ та/або Інтернет</payee>
<contractNumber title="Номер договору">901386637</contractNumber>
<attribute1 title="Адреса">Київ, Архипенка Олександра, б.4А, кв.185</attribute1>
<attribute2 />
<attribute3 />
<attribute4 />
<bill_attribute1 />
<bill_attribute2 />
<bill_attribute3 />
<bill_attribute4 />
<date>11.01.2022</date>
<description>Рахунок створений автоматично для поповнення балансу</description>
<amount>0.00</amount>
<debt>0.00</debt>
<sum>0.00</sum>
<status>paid</status>
<paidAmount>31000.00</paidAmount>
<payDate>12.01.2022 08:49:29</payDate>
<payee_export_flag>N</payee_export_flag>
<auth_code />
<transaction_id />
<payment_point>PORTMONEDIRECTTEST</payment_point>
<bill_attribute10>UA77*********************6900</bill_attribute10>
</bill>
</rsp>
Приклад відповіді, якщо сталася помилка:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="o003">
<![CDATA[Ошибка при оплате счета.]]>
</error>
<error_description>
<![CDATA[bills.pay 02 - Счета нет или счет уже оплачен.]]>
</error_description>
</rsp>
Параметри для «універсальних» айтемів (передаються у масиві tariff_items):
| Параметр | Опис | Обов’язковий |
|---|---|---|
| id | ID лічильника | Так |
| amount | Розрахована сума за лічильником | Так |
| prev_counter | Попереднє значення лічильника | Ні |
| counter | Поточне значення лічильника | Ні |
| tariff | Тариф | Ні |
| subsidy | Субсидія | Ні |
| debt | Сплачений борг | Ні |
| attribute1 | Атрибут 1 (версія протоколу – 2) | Ні |
| attribute2 | Атрибут 2 (версія протоколу – 2) | Ні |
| attribute3 | Атрибут 3 (версія протоколу – 2) | Ні |
Параметри prev_counter, counter, tariff, subsidy, debt, attribute1, attribute2, attribute3 передаються, якщо в отриманому рахунку відповідні теги не порожні.
Якщо параметр переданий, він обов’язково повинен мати значення («порожні» параметри не допускаються).
Сума, що сплачується цілком за рахунком, повинна дорівнювати сумі переданих значень amount та debt за всіма айтемами.
Приклад рядка запиту для компаній без айтемів:
method=bills.pay&login=логін&password=пароль&version=2&billId=значення&amount=значення
Той же запит з даними по айтемах:
method=bills.pay&login=логін&password=пароль&version=2&billId=значення&amount=значення&
tariff_items[111111][id]=значення&tariff_items[111111][counter]=значення&
tariff_items[111111][prev_counter]=значення&tariff_items[111111][tariff]=значення&
tariff_items[111111][subsidy]=значення&tariff_items[111111][debt]=значення
де tariff_items — назва масиву з даними по айтемах; 111111 — ID айтему; counter, prev_counter, tariff, subsidy, debt та amount — дані по айтему.
Приклад успішної відповіді: див. Додаток 1.
Приклад відповіді, якщо сталася помилка:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="Код помилки">Опис помилки</error>
</rsp>
2.5. Інформація про рахунок
Метод: bills.get
Опис: метод використовується, якщо необхідно отримати інформацію про рахунок (дізнатися статус рахунку). Потрібно викликати, якщо на метод оплати bills.pay отримана помилка зєднання, отримана відповідь не очікуваного формату, який не відповідає протоколу. А також якщо отримані помилки p009, p017, p100. Параметри:
| Параметр | Опис | Обов’язковий |
|---|---|---|
| login | Логін компанії-реселера в системі Portmone.com | Так |
| password | Пароль компанії-реселера в системі Portmone.com | Так |
| method | Назва методу | Так |
| billId | ID рахунку (його повертає метод bills.create) | Так |
Приклад запиту:
method=bills.get&login=логін&password=пароль&version=2&billId=значення
Приклад успішної відповіді: див. Додаток 1.
Приклад відповіді, якщо сталася помилка:
<?xml version="1.0" encoding="utf-8"?>
<rsp status="fail">
<error code="Код помилки">Опис помилки</error>
</rsp>
2.6. Реєстр надісланих платежів
Метод: bills.paymentOrder
Опис: реєстр передається банком до Portmone.com для контролю платежів, що надсилаються, та формування необхідних контрольних реєстрів до кожної організації за необхідним протоколом. Містить список виконаних транзакцій та реквізити платежу покриття.
Параметри:
| Параметр | Опис | Обов’язковий |
|---|---|---|
| login | Логін компанії-реселера в системі Portmone.com | Так |
| password | Пароль компанії-реселера в системі Portmone.com | Так |
| method | Назва методу | Так |
| xml | Реєстр у XML-форматі | Так |
Приклад реєстру у XML-форматі:
<?xml version="1.0" encoding="utf-8"?>
<payment_order order_date="DD.MM.YYYY" order_number="Номер платіжного доручення"
payee_id="ID компанії-отримувача" total_amount="Сума отриманих платежів"
total_compensation="Сума компенсацій платіжного доручення"
total_commission="Сума комісій платіжного доручення" trx_count="2">
<transactions>
<trx>
<bill_id>ID рахунку</bill_id>
<trx_amount>Сума транзакції</trx_amount>
<compensation>Сума,що перерахована біллеру</compensation>
</trx>
<trx>
<bill_id>ID рахунку</bill_id>
<trx_amount>Сума транзакції</trx_amount>
<compensation>Сума,що перерахована біллеру</compensation>
</trx>
</transactions>
</payment_order>