Как настроить оповещения от Тинькофф онлайн-оплаты?

Добрый день!

У тинькофф есть виджет для онлайн-оплаты на сайте. Установка заключается в подключении через личный кабинет, а на сайте нужно вставить форму:

<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 файл, который принимает ответы, ничего не происходит.
  • Вопрос задан
  • 1221 просмотр
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Для начала гляньте, что вам там Тинькофф в принципе присылает:
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    file_put_contents('tinkoff.json', file_get_contents('php://input'));
    http_response_code(200);
    echo 'OK';
}

При получении данных методом POST, будет создан файл tinkoff.json - что там внутри?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы