Добрый день!
У тинькофф есть виджет для онлайн-оплаты на сайте. Установка заключается в подключении через личный кабинет, а на сайте нужно вставить форму:
<script src="https://securepay.tinkoff.ru/html/payForm/js/tinkoff_v2.js"></script>
<form name="TinkoffPayForm" onsubmit="pay(this); return false;">
<input class="tinkoffPayRow" type="hidden" name="terminalkey" value="TinkoffBankTest">
<input class="tinkoffPayRow" type="hidden" name="frame" value="true">
<input class="tinkoffPayRow" type="hidden" name="language" value="ru">
<input class="tinkoffPayRow" type="text" placeholder="Сумма заказа" name="amount" required>
<input class="tinkoffPayRow" type="text" placeholder="Номер заказа" name="order">
<input class="tinkoffPayRow" type="text" placeholder="Описание заказа" name="description">
<input class="tinkoffPayRow" type="text" placeholder="ФИО плательщика" name="name">
<input class="tinkoffPayRow" type="text" placeholder="E-mail" name="email">
<input class="tinkoffPayRow" type="text" placeholder="Контактный телефон" name="phone">
<input class="tinkoffPayRow" type="submit" value="Оплатить">
</form>
Провожу тестовые платежи - все ОК. Чтобы подключить оповещения и возможность интеграции с CRM, нужно в личном кабинете указать адрес страницы, на которую должны идти эти оповещения. Указал. Принимаю их таким образом:
$data = json_decode(file_get_contents('php://input'), true);
if ($data['Status'] == 'CONFIRMED') {
//дальнейшие действия
}
Частично это работает, но:
1. Не приходят некоторые данные из заполненной формы, а именно: ФИО, e-mail, номер телефона. Все то, что хранится в $data['DATA']. У меня почему-то там пусто. При этом остальные параметры (
https://www.tinkoff.ru/kassa/develop/api/notificat... официальный сайт) вытащить можно.
2. Эти оповещения приходят даже если форма не заполняется. Есть вероятность, что это связано с: "Получив уведомление, верните HTTP CODE = 200 и с телом сообщения «OK» (заглавными латинскими буквами без тегов).
Не получив ответ на уведомление, мы будем повторно отправлять его раз в час в течение 24 часов."
Пример, как это сделать:
@POST
@Path("/ok")
public Response NotifyResponse() {
return Response.status(200).entity("OK").build();
}
Но если просто вставить это в PHP файл, который принимает ответы, ничего не происходит.