Здравствуйте!
С начала октября перестали корректно формироваться запросы на оплату через Tinkoff Gateway.
ТП отвечает, что у них изменился адрес и способ взаимодействия:
С нашей стороны был обновлен домен платежной формы банка с securepayments.tinkoff.ru на pay.tbank.ru. Ошибка 405 может возникать из-за того, что платежная форма со стороны сайта вызывается через POST.
Необходимо вызывать платежную форму с использованием GET/HEAD. Рекомендуем скорректировать настройки интеграции, чтобы не возникала эта ошибка.
Мы временно (на 14 дней) добавили ваш терминал ..... в список исключений, и теперь платежная форма на старом домене доступна. Ошибка сейчас возникать не должна, рекомендуем повторить оплату.Тем не менее, настоятельно рекомендуем исправить настройки интеграции и открывать платежную форму через GET/HEAD, чтобы после возврата на новый домен ошибка вновь не возникала.
Я пытался заменить адрес назначения запроса в index.php плагина в разных вариациях, но к сожалению ничего не вышло.
Обновите пожалуйста плагин 🥺
исправленный метод, 405 не возникает
public function get_form($data) {
if (empty($this->terminal) || empty($this->password)) {
return "Не указаны параметры терминала или пароля.";
}
// Базовые параметры для генерации токена
$args = [
'TerminalKey' => $this->terminal,
'Amount' => isset($data->pay_summ) ? round($data->pay_summ * 100) : 0,
'OrderId' => $data->pay_id,
'Description' => $data->description,
'CustomerKey' => $data->user_id,
];
// Токен
$args['Token'] = $this->_generateToken($args);
// Фискализация
if ($this->isFiscalizationEnabled) {
$args['Receipt'] = $this->buildReceipt($data);
}
// Дополнительные данные
$args['DATA'] = [
'baggage_data' => $data->baggage_data,
'pay_type' => $data->pay_type,
];
$result = $this->_sendRequest('https://securepay.tinkoff.ru/v2/Init', $args);
if ($result === false) {
return "Ошибка инициализации платежа. Не удалось получить ссылку на оплату.";
}
if (empty($result->PaymentURL)) {
$error_message = "Ошибка инициализации платежа.";
if (!empty($result->Message)) {
$error_message .= " Ответ банка: " . $result->Message;
} else {
$error_message .= " Не удалось получить ссылку на оплату.";
}
return $error_message;
}
$payUrl = esc_url($result->PaymentURL);
// ВАЖНО: PaymentURL нужно открывать через GET, а не POST
return '
';
}