Під платіжними системами в цій статті розуміються будь-які способи оплати замовлення: як платіжні системи, що приймають платежі on-line, так і банківські перекази, і т.п.
Різні платіжні системи пропонують різні інтерфейси для інтеграції (взаємодії). Найчастіше ці інтерфейси відрізняються кардинально: наприклад, інтеграція з системою PayFlow Pro вимагає виконання запитів до платіжної системи за допомогою встановленого на сервер SDK, а інтеграція з ощадбанком вимагає роздруківки квитанції ощадбанку. Тому інтеграція з платіжними системами здійснюється за допомогою php-скриптів, які називаються обработчиками платіжних систем.
Обробники платіжних систем (далі просто обробники) задаються індивідуально для кожного типу платника кожної платіжної системи в формі управління платіжними системами (Див. Інформацію користувача документацію, розділ "Створення і редагування платіжної системи"). При оформленні замовлення викликається один з трьох обробників обраної покупцем платіжної системи для обраного типу платника. Обробники платіжних систем визначаються за іменами файлів:
- payment.php - якщо обробник викликається в після фактичного збереження всіх параметрів замовлення в базу даних. Застосовується в стандартному компоненті процедури замовлення;
- pre_payment.php - якщо потрібно зателефонувати обробник в всередині процедури замовлення (для тих оброблювачів, які можуть відразу здійснити оплату замовлення і повернути результат). Застосовується в двокрокове компоненті процедури замовлення;
- action.php - застосовується для зняття з карти заданої суми грошей (тільки для обробників, які можуть відразу здійснити оплату замовлення і повернути результат). Наприклад, при продовженні передплати.
Алгоритм роботи (вміст) обробника повністю визначається інтерфейсами, які надає відповідна платіжна система.
типові обробники
Типовим оброблювачем для платіжної системи, яка не здійснює on-line платежі. є висновок на екран рахунку (або квитанції), готового до друку на принтері. Прикладами таких обробників є рахунок або квитанція перекладу через ощадбанк.
Такий обробник зазвичай являє собою файл, який виводить необхідне для даного документа форматування і вставляє у відповідних місцях деталі доставки.
Приклад такого обробника можна подивитися в шаблонах платіжних систем ощадбанку (/bitrix/modules/sale/payment/sberbank.php), банківського переказу (/bitrix/modules/sale/payment/bill.php).
Типовим оброблювачем для платіжної системи, яка здійснює платежіon-line. є висновок на екран HTML-форми, яка відправляє дані платіжній системі. Прикладами таких платіжних систем є Assist, AuthorizeNet, Payflow, WorldPay.
Вид, набір полів і інші параметри HTML-форми повністю залежать від платіжної системи. Конкретне опис форми, яка потрібна даній платіжній системі, слід шукати в документації по цій платіжній системі.
Приклад такого обробника можна подивитися в шаблонах платіжних систем Assist (/bitrix/modules/sale/payment/assist.php), AuthorizeNet (/bitrix/modules/sale/payment/authorizenet.php), Paypal (/ bitrix / modules / sale / payment / paypal.php) і т.д.
Параметри, які необхідні платіжним системам, можна отримувати з параметрів замовлення, які доступні в обробнику в масиві $ arOrder. а так само з значень властивостей замовлення, які можна отримати наступним чином:
Як правило платіжні системи з on-line платежами надають один з двох (іноді обидва) типів інтерфейсу для інтеграції: 1. форма з параметрами замовлення відправляється на сайт платіжної системи, де покупець заповнює додаткові форми (наприклад, вводить номер пластикової карти) і виробляє фактичну оплату, 2. всі параметри заповнюються на сайті і формується запит до платіжної системи, у відповіді на який вона повідомляє результат оплати.
Перший тип інтерфейсу є найбільш простим для інтеграції. У обробнику досить створити HTML-форму, яка буде відправляти дані на сайт платіжної системи, і додати в форму необхідні платіжній системі поля. Конкретні параметри необхідно дивитися в системі допомоги по конкретній платіжній системі. Приклад такого обробника можна подивитися в шаблоні платіжної системи Assist (/bitrix/modules/sale/payment/assist.php).
Другий тип є більш складним для інтеграції, але зате він є більш гнучким у плані можливостей. Приклад такого обробника можна подивитися в шаблоні платіжної системи AuthorizeNet (/bitrix/modules/sale/payment/authorizenet.php). Загальна структура коду обробника в цьому випадку може бути приблизно такою:
В останньому випадку (інтерфейс типу 2) модуль Інтернет-магазину відразу отримує результат роботи платіжної системи, придатний для подальшої обробки замовлення.
У разі інтерфейсу типу 1 може виявитися зручним автоматично забирати результати роботи платіжної системи (оплачений реально замовлення). Звичайно це можливо тільки в тому випадку, якщо платіжна система надає відповідний інтерфейс. Дізнатися подробиці про це інтерфейсі слід в документації по відповідній платіжній системі або в службі техпідтримки цієї системи. Якщо платіжна система надає інтерфейс для отримання статусу оплати замовлення, то можна реалізувати скрипт автоматичного отримання цих статусів. Зазначений скрипт викликається з форми управління замовленнями (адміністративної частини сайту) (Дивись інформацію користувача документацію, розділ "Замовлення") для кожного з замовлень, сплачених за допомогою цієї платіжної системи. Створити новий скрипт автоматичного запиту статусу оплати можна наступним чином:
- Необхідно створити в публічній частині сайту (наприклад, в папці / bitrix / php_interface / include / payment /) файл запиту статусу. За основу можна взяти один з попередньо встановлених скриптів з папки / bitrix / modules / sale / payment / (наприклад, assist_res.php).
- Необхідно змінити скрипт таким чином, щоб він відповідав інтерфейсу платіжної системи.
- Необхідно в формі редагування параметрів відповідної платіжної системи (у адміністративній частині сайту) (Див. Інформацію користувача документацію, розділ "Створення і редагування платіжної системи") вказати, для яких оброблювачів платіжних систем діє цей скрипт автоматичного отримання статусу замовлення.
Часто платіжна система не надає інтерфейсу для отримання статусу оплати замовлення, але відправляє листи із зазначенням результату оплати. В цьому випадку можна автоматично встановлювати статус оплати в замовленні за допомогою модуля Пошти (mail). Для цього необхідно створити відповідний обробник пошти та налаштувати його роботу з модулем. Подробиці є в системі допомоги по модулю Пошти (mail).