Доставка відповіді за адресою NOTIFY_URL


Успішна і гарантована переадресація браузера з параметрами результату оплати є необхідною умовою для отримання магазином факту оплати. У ряді випадків, однак, це може погано спрацювати при різного роду ситуаціях, таких як:


1) збій роботи браузера, зависання;
2) неадекватна поведінка користувача в момент передачі відповіді;
3) пропажа з'єднання з інтернет-провайдером
4) неправильна робота браузера при встановлених пакетах захисту, які можуть вносити зміни в роботу браузера.


Може статися ситуація, коли оплата карткою проведена, але магазину результат не доставлений. При цьому потрібно розгляд покупця з магазином за фактом проведення блокування суми грошей з подальшою установкою стану «Оплачено» або з проведенням повернення. У таких випадках магазину рекомендується впровадження схеми з доставкою відповіді з боку шлюзу.


Для початку роботи з даною схемою необхідно в інтерфейсі адміністратора в розділі термінали прописати адресу куди буде здійснюється відправка даних повідомлень.
Торгова система (електронний магазин) передає ряд параметрів при переході на захищену сторінку шлюзу:


<form action="https://secure.upc.ua/go/enter" method="post" >
<input name="Version" type="hidden" value="1" />
<input name="MerchantID" type="hidden" value="1752493" />
<input name="TerminalID" type="hidden" value="E7880293" />
<input name="PurchaseTime" type="hidden" value="090929152500" />
<input name="OrderID" type="hidden" value="ID0009992" />
<input name="Currency" type="hidden" value="980" />
<input name="TotalAmount" type="hidden" value="500" />
<input name="locale" type="hidden" value="ru" />
<input name="PurchaseDesc" type="hidden" value="Tarns_test_UPC" />
<input name="Signature" type="hidden"value="TEST_TEST"/>
<input type="submit"/>
</form>

Для інформації

Платіжний шлюз ініціює відправку повідомлення. Відправлення здійснюється з ip адреси для тестового сервера - 195.85.198.16, для робітника - 195.85.198.15. Результати обробки передаються методом HTTP / HTTPS POST з боку шлюзу на сторінку магазину (80/443 порти).


Notify request message
PurchaseTime = '090929152500'
ProxyPan = '499999*******0011'
Currency = '980'
ApprovalCode = '111111'
MerchantID = '1752493'
OrderID = '111111111111111111'
Signature = test'
Rrn = '2222222222'
XID = '333333-4444444'
Email = 's.sichnoy@upc.ua'
SD = '24ee6084a5343e3d'
TranCode = '000'
TerminalID = 'E7880293'
TotalAmount = '500'

Магазин повертає відповідь в тілі виконуваної сторінки.


Кожен параметр і його значення в вигляді Параметр = Значення повертаються на новому рядку. Рядки розділяються символом роздільника рядків.


У відповіді, додатково до оригінальних значень параметрів (MerchantID, TerminalID, OrderID, Currency, TotalAmount, XID, PurchaseTime), повертає 3 нових параметри:




ПараметрЗначенняОпис
Response.actionapprove / reverse

При значенні 'approve' магазин зі свого боку підтверджує угоду

При значенні 'reverse' шлюз робить відкат успішної транзакції і встановлює ознака завершення 503 - «Транзакція скасована магазином»

Response.reasonAn … 255Пояснення відповіді магазину (опціонально), наприклад - причина для значення Response.action. Формування даного поля здійснюється на стороні магазину і необхідно воно суто для потреб магазину, у нас протоколюється тільки в балках транзакції.
Response.forwardUrlAn … 255Значення URL для редиректу браузера користувача, замість SUCCESS_URL або FAILURE_URL. Дає можливість використання динамічних посилань для переадресації клієнта.

echo "MerchantID="1752493";
echo "TerminalID="E7880293";
echo "OrderID="ID0009992";
echo "Currency="980";
echo "TotalAmount="980";
echo "XID="333333-4444444";
echo "PurchaseTime="090929152500";
echo "Response.action=";
echo "Response.reason=";
echo "Response.forwardUrl=";

Також у адміністратора магазину є вибір дозволяти транзакції по яких не проходить доставка повідомлення по NOTIFY_URL, або заборонити їх. Дана схема дозволяє автоматизованим системам обліку наданих послуг, які використовують інформацію від платіжного шлюзу, уникнути невідповідності даних в разі недоставки повідомлення по NOTIFY_URL.

У разі якщо з якихось причин схема доставки відповіді з боку шлюзу не відпрацьована - транзакція буде автоматично скасована.

В даному випадку оригінальна транзакція має тип операції покупка і код транзакції 504 / Даний запит на оплату не дозволено платіжним шлюзом, відкат вироблений в автоматичному режимі платіжним сервером має код транзакції 000 / Транзакція завершена успішно.


Далі представлена логіка доставки відповіді з боку шлюзу


Даний метод передачі відповіді магазину є кращим і настійно рекомендується



Його використання дозволяє істотно зменшити кількість некоректно завершених транзакцій (наприклад, через збої браузера покупця або його невірних дій). Навіть в разі виникнення проблемних ситуацій магазин буде мати достовірну інформацію про результат обробки транзакції.


Формування підпису Signature

Детальна інструкція по формуванню підпису Signature в запитах - Формування підпису.

  • No labels