Ну да, приходится в ручную менять статус, так как автомтическое переключение перестало срабатывать и не знаю где его вновь заставить переключать статус после оплаты... И поддержка не знает..Такая ошибка возвращается когда заказ вручную поменян на статус оплачен!
Модуль оплаты Единая касса
#81
Отправлено 12 July 2014 - 10:15 PM
#82
Отправлено 24 September 2014 - 06:05 AM
#83
Отправлено 30 September 2014 - 08:25 AM
может кому понадобится переехал на новый сервер у меня настроен мод секюрити для защиты от атак, так вот он анализировал запрос от кассы как аномальный и выдавал в ответ 403 доступ запрещен, согласно своему протоколу modsecurity_crs_21_protocol_anomalies.conf, чтобы проходил запрос от кассы и автоматом менялся статус надо добавить в конфигурационный файл исключение на этот протокол
А как и где это сделать?
#84
Отправлено 01 October 2014 - 02:29 PM
Прикрепленные файлы
#85
Отправлено 23 January 2015 - 11:14 AM
А цены выставляли от поставщика. Например Товар 1 - цена 1000руб.
В магазине цена была видна как 1300руб. (курс ставим 1.3)
И все бы хорошо, НО.. при проведении оплаты, когда чел переходит на Единую кассу - там цена стоит 1000руб....
Остальные модули оплаты, например QIWI, WM, оплата напрямую на карту сбербанка - те цену показывают и принимают нормальную, с процентом - 1300руб
А Единая касса берет ту, что выставлена в магазине - 1000руб.
Подскажите где это можно поправить, что бы в Единую кассу цена шла с процентом, а не та, что выставлена у товара!
#86
Отправлено 23 January 2015 - 12:28 PM
Например, в модуле WEBMONEY задается валюта, в которой происходит оплата. И код формирования суммы к оплате выглядит так :Подскажите где это можно поправить, что бы в Единую кассу цена шла с процентом, а не та, что выставлена у товара!
function after_processing_html( $orderID )
{
$order = ordGetOrder( $orderID );
if ( $this->_getSettingValue('CONF_PAYMENTMODULE_WEBMONEY_MERCHANT_EXCHANGERATE') > 0 )
{
$exhange_curr = currGetCurrencyByID ( $this->_getSettingValue('CONF_PAYMENTMODULE_WEBMONEY_MERCHANT_EXCHANGERATE') );
$exhange_rate = $exhange_curr["currency_value"];
$exhange_round = $exhange_curr["roundval"];
}
else
{
$exhange_rate = 1;
$exhange_round = 2;
}
if ( (float)$exhange_rate == 0 ) $exhange_rate = 1;
$order_amount = _formatPrice(roundf($order["order_amount"]*$exhange_rate), $exhange_round, ".", "");
Т.е. если валюта оплаты в настройках модуля задана (не ноль), то функцией currGetCurrencyByID получаем курс и округление, исходя их которых и формируем отправляемую на сайт системы оплаты цену. А если валюта оплаты не задана, то задаем курс=1 и округление=2.
А вот если глянуть в модуль оплаты Единой кассы, то там хоть и задается валюта оплаты в настройках (константа CONF_PAYMENTMODULE_WMI_CURRENCY_ID), но почему-то не используется.
И код выглядит так:
function after_processing_html( $orderID )
{
$order = ordGetOrder( $orderID );
$exhange_rate = 1;
$exhange_round = 2;
$order_amount = _formatPrice(roundf($order["order_amount"]*$exhange_rate), $exhange_round, ".", "");
Т.е. курс вне зависимости от выбранной валюты всегда единица, а округление - две цифры после запятой.
Думаю, дальнейшие действия достаточно очевидны .
#87
Отправлено 23 January 2015 - 12:43 PM
Т.е. курс вне зависимости от выбранной валюты всегда единица, а округление - две цифры после запятой.
Думаю, дальнейшие действия достаточно очевидны .
Спасибо. То есть можно добавить то, что есть в Веб Мони и заработает?... Сейчас попробуем ..
Или напрямую прописать
$exhange_rate = 1.3;
$exhange_round = 0; ?
#88
Отправлено 23 January 2015 - 12:52 PM
#89
Отправлено 23 January 2015 - 02:06 PM
Было:
function after_processing_html( $orderID ) { $order = ordGetOrder( $orderID ); $exhange_rate = 1; $exhange_round = 2; $order_amount = _formatPrice(roundf($order["order_amount"]*$exhange_rate), $exhange_round, ".", "");
Поменяли по аналогии с WM на:
function after_processing_html( $orderID ) { $order = ordGetOrder( $orderID ); if ( $this->_getSettingValue('CONF_PAYMENTMODULE_WMI_CURRENCY_ID') > 0 ) { $exhange_curr = currGetCurrencyByID ( $this->_getSettingValue('CONF_PAYMENTMODULE_WMI_CURRENCY_ID') ); $exhange_rate = $exhange_curr["currency_value"]; $exhange_round = $exhange_curr["roundval"]; } else { $exhange_rate = 1; $exhange_round = 2; } if ( (float)$exhange_rate == 0 ) $exhange_rate = 1; $order_amount = _formatPrice(roundf($order["order_amount"]*$exhange_rate), $exhange_round, ".", "");Цена товара - 1000руб.
Курс валюты - 1.3
Цена в магазине - 1300руб.
Цена в Единой кассе при оплате - опять 1000руб.
блинский нафиг..
#90
Отправлено 23 January 2015 - 02:27 PM
Почему не получилось? Все работает ровно так, как Вы написали. Просто константу неверно обозвали (на конце _ID, а не _I).Не получилось..
#91
Отправлено 23 January 2015 - 05:30 PM
Так и ставит 1000 вместо 1300...
#92
Отправлено 25 January 2015 - 06:59 PM
Ну, в конце концов, поставьте вручную 1.3 вместо 1.Для верности снесли модуль оплаты Единой кассой, поставили заново... Неа - всеравно не учитывает курс.
Не решать же на халяву ваши проблемы вместо своих .
#93
Отправлено 25 January 2015 - 07:19 PM
Мы не просим решать наши проблемы - просто советуемся на форуме.Ну, в конце концов, поставьте вручную 1.3 вместо 1.
Не решать же на халяву ваши проблемы вместо своих .
Вручную 1.3 вместо 1. так же не прокатывает...
#94
Отправлено 25 January 2015 - 08:12 PM
Этого не может быть. Смотрите в код. Либо откуда растут руки .Вручную 1.3 вместо 1. так же не прокатывает...
1. задаем курс:
$exhange_rate = 1.3;
2. вычисляем сумму заказа:
$order_amount = _formatPrice(roundf($order["order_amount"]*$exhange_rate), $exhange_round, ".", "");
3. записываем эту сумму в массив, отправляемый в конечном итоге методом POST на сайт единой кассы:
$fields{"WMI_PAYMENT_AMOUNT"} = $order_amount;
Все. Уж не знаю, где тут можно умудриться накосячить .
PS. Я проверил у себя - в Единую кассу отправляется умноженная на 1.3 сумма заказа.
#96
Отправлено 25 January 2015 - 09:36 PM
Переустановка модуля оплаты (снести и поставить заново) в некоторых случаях, действительно, требуется, но В ДАННОМ СЛУЧАЕ ни на что не влияет. Как не влияет и очистка кэша. Так что я даже не знаю, в чем можно было ошибиться, когда для желаемого результата надо было исправить 1 на 1.3 в единственной строчке .Видимо косяк наш был как раз в том, что подставив 1.3 не переустанавливали модуль оплаты.
Раз уж заработало, то сделайте еще один шаг и закройте вопрос - исправьте по человечески, аналогично модулю WM.
#97
Отправлено 25 January 2015 - 10:38 PM
#98
Отправлено 24 April 2016 - 10:47 AM
Версия движка 3.1.3
Настроил на своем магазине данный модуль, все корректно обрабатывает на сайте Кассы, оплата проходит, возвращает в магазин с успешной оплатой, но не изменяет автоматически статус заказа. У человека выше была подобная проблема, но судя по комментам решить ее не удалось (если что-то не углядел - извиняюсь). Магазин работает в защищенном режиме с протоколом HTTPS. Тех. поддержка Кассы молчит, но подозреваю что мой сайт отдает ответ кассе после оплаты как "заказ не найден в базе магазина". Заранее спасибо.
#99
Отправлено 24 April 2016 - 06:55 PM
А запрос-то от Единой Кассы на изменение статуса заказа по HTTPS идет или по HHTP?Магазин работает в защищенном режиме с протоколом HTTPS
Если по HTTP, то, наверняка, на сайте стоит безусловный редирект-301 HTTP->HTTPS, при котором теряется содержимое POST.
#100
Отправлено 25 April 2016 - 01:39 PM
Да, Касса отправляет в защищенном режиме по HTTPS. Поддержка ответила, что отправляется неверная подпись после оплаты. Вот их рекомендация: << В нашей системе Сигнатура формируется дважды: при формировании счета - Вы нам её отправляете при вызове формы, и второй раз когда наш сервер отправляет post-запрос на адрес Вашего скрипта-обработчика. Второй раз она у нас генерируется заново исходя из всех параметров, которые мы передаем. Плюс к тем, что Вы передаете нам, мы прибавляем еще несколько (со способом оплаты, статусом счета и др.) Ваш скрипт должен её получить, взять оттуда все значения, кроме Сигнатуры, и подписать своим ключом. И в итоге полученная Сигнатура должна совпасть той, что прислали наш сервер в post-запросе. Подробное описание того, как Ваш скрипт должен проверять и шифровать, представлено в Документации (длинный код чуть ниже с абзацем "Проверка источника данных"): https://www.walleton...entation/#step5 Пожалуйста, пропишите в своём скрипте корректную информацию и дождитесь новых запросов от нашего сервера. >> Прилагаю свой w1.php