Ответ платежной системы (callback) не правильно указывает статус в сообщении администратору Есть решение
Уведомление при оплате Яндекс.Деньги. Ответ платежной системы (callback) не правильно указывает статус в сообщении администратору.
Приходит 2 одинаковых сообщения администратору "Подтверждён", а не "Оплачен". В заказе статус меняется правильно и при проверке отправки уведомления на произвольный Email тоже приходит правильно "Оплачен". Не понятно в чём проблема?
Раньше такого не было, уже два года пользуюсь. Ничего не менял. Это после каких то обновлений Shop Script.
Вот код, но может не в нём дело раз при проверке всё нормально.
{strip} {$_background_color = "#eeeeee"} {$_products_bg = "#ffffff"} {$_bonus_background = "#ffffcc"} {$_button_background = "#fcd630"} {$_main_border_color = "#cccccc"} {$_border_color = "#dddddd"} <table cellspacing="0" border="0" cellpadding="0" width="100%" bgcolor="{$_background_color}" style=" font-family:Helvetica,Arial,sans-serif; letter-spacing:normal; text-indent:0; text-transform:none; word-spacing:0; background-color:rgb(232,232,232); border-collapse:collapse "> <tr> <td style="padding: 20px;"> <table width="600" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#ffffff" style=" width: 600px !important; background-color:#fff; border:1px solid {$_main_border_color}; border-radius: 4px; margin:auto; overflow: hidden; "> <!-- HEADER --> <tr> <td width="50" style="width:50px !important; border: solid {$_border_color}; border-width: 0 0 1px 0;"></td> <td height="70" align="center" valign="middle" style="border: solid {$_border_color}; border-width: 0 0 1px 0;"> <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" style="width: 100% !important;"> <tr> <td> <font style="font-weight: bold; font-size: 20px; margin: 0 12px 0 0;"><b>{$order.id}</b></font> <font style="color: #888">{$order.create_datetime|wa_date:'humandate'}</font> </td> <td style="text-align: right;"> <font style="{if !empty($order.style)}{$order.style}{/if}">{$status}</font> </td> </tr> </table> </td> <td width="50" style="width:50px !important; border: solid {$_border_color}; border-width: 0 0 1px 0;"></td> </tr> <!-- STATUS --> <tr> <td></td> <td> <table cellspacing="0" border="0" cellpadding="0" width="100%" style="border-collapse:collapse"> <tr> <td> <p style=" color:rgb(48,48,48); font-style:normal; font-variant:normal; font-weight:normal; font-size:14px; line-height:16px; font-family:Helvetica,Arial,sans-serif; margin: 20px 0 0; text-align:center; ">Спасибо за покупку в магазине «{$wa->shop->settings("name")}»!</p> <p align="center" style="margin: 20px 0;"> <a href="{$order_url}" style=" text-decoration:none; font-style:normal; font-variant:normal; font-weight:normal;font-size:17px;line-height:40px;font-family:Helvetica,Arial,sans-serif;color:rgb(48,48,48);display:block; width:225px; background: {$_button_background}; border-radius: 4px; " target="_blank">[`Order status`]</a> </p> {if !empty($order.params.auth_pin)} <p style=" color:rgb(48,48,48); font-style:normal; font-variant:normal; font-weight:normal; font-size:14px; line-height:16px; font-family:Helvetica,Arial,sans-serif; margin: 20px 0; text-align:center; text-transform: uppercase; "> PIN: <b>{$order.params.auth_pin}</b> </p> {/if} </td> </tr> </table> </td> <td></td> </tr> <!-- TEXT --> <tr> <td bgcolor="{$_bonus_background}"></td> <td bgcolor="{$_bonus_background}" style="padding: 12px 0 12px 0;"> <p>Здравствуйте, {$customer.name|escape}!</p> <p>Статус вашего заказа {$order.id} был обновлен на <strong>{$status}</strong></p> </td> <td bgcolor="{$_bonus_background}"></td> </tr> <!-- TEXT --> <tr> <td></td> <td style="padding: 24px 0 36px 0;"> <h3 style="margin: 0;">Контактная информация</h3> {if strlen($wa->shop->settings("email"))} <p style="margin: 10px 0 0;"> [`Email`]: <a href="mailto:{$wa->shop->settings("email")}">{$wa->shop->settings("email")}</a> </p> {/if} {if strlen($wa->shop->settings("phone"))} <p style="margin: 10px 0 0;"> [`Phone`]: {$wa->shop->settings("phone")} </p> {/if} </td> <td></td> </tr> </table> <!-- BOTTOM SITE INFORMATION --> <table width="100%" border="0" cellspacing="0" cellpadding="0" style="border-collapse:collapse"> <tr> <td valign="middle" align="center" height="45"> <p style=" font-style:normal; font-variant:normal; font-weight:normal; font-size:13px; line-height:16px; font-family:Arial,sans-serif,Helvetica; color:rgb(147,154,164); margin: 20px 0 0; "> © {date("Y")} {$wa->shop->settings("name")}<br> <a href="http://{$order.params.storefront}" target="_blank">{$order.params.storefront}</a> </p> </td> </tr> </table> </td> </tr> </table> {/strip}
16 комментариев
Иногда платёжная система присылает статус транзакции "Check" или "checkOrder", то выполняется действие "В обработку", которое переводит заказ в статус "Подтвержден". И только если приходит статус "paymentAviso" или "PaymentSuccess", заказ помечается как оплаченный. Попробуйте уточнить у Яндекса, какие запросы он присылал в ваш магазин в связи с заказами, с которыми вы заметили такую проблему.
Дело в том, что в самом заказе статус меняется правильно на "Оплачено", а "Подтверждён" только в уведомлении на почту администратора и два раза.
Обратился в Яндекс.Кассу и они ответили, что последний платёж был как обычно по протоколу. Отправлен статус "checkOrder" и "paymentAviso"
Вот, что у меня в заказе:
По моему много лишнего.
Заказ был оформлен 30 июля. Клиент оплатил вчера в 22:15, 03 августа
???
Письмо которое пришло администратору магазина 2 раза в 22:15, 02 августа:
Про то, что он оплачен не приходило.
Попробуйте добавить отладочный код как показано ниже.
1. В файле wa-plugins/payment/yandexmoney/lib/yandexmoneyPayment.class.php после строки
добавьте
2. В файле wa-apps/shop/lib/workflow/shopWorkflowAction.class.php после
добавьте
После очередного возникновения этой проблемы покажите фрагмент лог-файла wa-log/yandexmarket-debug.log, в котором будет фигурировать информация о проблемном заказе.
Сделал как вы описали. Потом сделал пробный заказ и сразу оплатил. Сообщения после оплаты на почту пришло две штуки и оба с темой - "Заказ #.......обновлён". В первом заказе обновлён на новый, во втором заказ подтверждён. То, что он оплачен не пришло. Может так и задумано?
Вот скриншот истории заказа в магазине:
Вот фрагмент лог-файла:
Вы случайно не изменили в настройках магазина название статуса "Оплачен" на "Подтверждён"? Всякое бывает...
Проверил. Нет не менял. У подтверждён название статуса "Подтверждён", у оплачен название статуса "Оплачен"
Настройте уведомление на действие "Оплачен", а не на "callback". Во втором случае механизм обработки действий с заказами работает не совсем очевидным образом.
Добрый день.
Подтверждаю наличие проблемы. Но у меня немного другая ситуация.
Сайт у вас в облаке.
Когда клиент оплачивает через Яндекс кассу статус правильно меняется на "Оплачен", но клиенту приходит два уведомления:
1. По статусу "Подтвержден".
2. По статусу "Оплачен".
Хотя ожидается, что должно приходить только одно уведомление об оплате, потому что о подтверждении уже отправлялось уведомление, когда над заказом начиналась работа.
Готов предоставить подтверждения, если понадобится.
Попробуйте настроить уведомление на действие "Оплачен", а не на "callback".
Всё работает. Настроил уведомление на действие "Оплачен", а не на "callback"
Спасибо.
Михаил, столкнулись с такой-же ситуацией. Советы из комментариев не помогают. Что делать ? Приходит два письма.
Напишите нам в службу поддержки, пожалуйста. Подробно изучим вашу ситуацию и попробуем предложить решение.
Настройка уведомлений - Событие: Ответ платежной системы (callback)
Событие два раза срабатывает. Как исправить, чтоб оно один раз срабатывало?
Напишите нам в службу поддержки — изучим ваши настройки и попробуем подсказать решение.