Maksclub Опубликовано 12 мая, 2016 Жалоба Поделиться Опубликовано 12 мая, 2016 В корзине 100 рубК оплате 100 рубА на кошелек поступит 98 рубВ итоге 98 руб не равно 100 руб!!! Правьте файл callback.php! нет! 100 реблей поступит! Комиссии с карты на кошелек у Яндекса нет!Я выше исправил свой коммент -- помогите плиз! Ссылка на сообщение Поделиться на другие сайты
Booster Опубликовано 12 мая, 2016 Жалоба Поделиться Опубликовано 12 мая, 2016 Вы хоть раз оплатить пробовали или условия яндекса открывали?Если вы убрали строчку с увеличением суммы на 2%, то на счет поступит сумма меньше суммы заказа на 2%! Пока вы этого не поймете у вас ничего не заработает. Комиссия с получателя2% при оплате с карты, 0,5% — из кошелька Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 12 мая, 2016 Жалоба Поделиться Опубликовано 12 мая, 2016 (изменено) Вы хоть раз оплатить пробовали или условия яндекса открывали?Если вы убрали строчку с увеличением суммы на 2%, то на счет поступит сумма меньше суммы заказа на 2%! Пока вы этого не поймете у вас ничего не заработает. Да я все равно не смогу это понять! Вариант, что с клиента проценты не будут браться мне нужен! тк 39 00 рублей товар стоит! Я понимаю, что нужно сделать, но как? Какую-то функцию писать надо? Как ее писать? UPD: Да на кошелек меньше падает, но как сделать правильно? Это я повторяю уже раз 500... Изменено 12 мая, 2016 пользователем Maksclub Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 12 мая, 2016 Жалоба Поделиться Опубликовано 12 мая, 2016 Вы хоть раз оплатить пробовали или условия яндекса открывали?Если вы убрали строчку с увеличением суммы на 2%, то на счет поступит сумма меньше суммы заказа на 2%! Пока вы этого не поймете у вас ничего не заработает. я так понимаю тут что-то мутить нужно? // Сумма заказа у нас в магазине $order_amount = $simpla->money->convert($order->total_price, $method->currency_id, false); // Должна быть равна переданной сумме if(floatval($order_amount) !== floatval($_POST['orderSumAmount'])) print_error("Неверная сумма оплаты"); Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 12 мая, 2016 Жалоба Поделиться Опубликовано 12 мая, 2016 Вы хоть раз оплатить пробовали или условия яндекса открывали?Если вы убрали строчку с увеличением суммы на 2%, то на счет поступит сумма меньше суммы заказа на 2%! Пока вы этого не поймете у вас ничего не заработает. Собственно до удаления той строчки я платил с комиссей, но сумма на счет приходила равная сумме заказа, но статус не менялся, об этом выше я писал и еще пару людей. Так что полагаю такие действия результата не дадут: $order_amount = $simpla->money->convert($order->total_price, $method->currency_id, false); $order_amount = $order_amount / 0.98; Морокой только занимаются тут все Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 12 мая, 2016 Жалоба Поделиться Опубликовано 12 мая, 2016 5% + 45 рублей Ссылка на сообщение Поделиться на другие сайты
Booster Опубликовано 13 мая, 2016 Жалоба Поделиться Опубликовано 13 мая, 2016 я так понимаю тут что-то мутить нужно? // Сумма заказа у нас в магазине $order_amount = $simpla->money->convert($order->total_price, $method->currency_id, false); // Должна быть равна переданной сумме if(floatval($order_amount) !== floatval($_POST['orderSumAmount'])) print_error("Неверная сумма оплаты"); У вас какая версия симплы то? Мой callback совершенно другой........... а следовательно мою инструкцию вы не выполняли. Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 13 мая, 2016 Жалоба Поделиться Опубликовано 13 мая, 2016 (изменено) У вас какая версия симплы то? Мой callback совершенно другой........... а следовательно мою инструкцию вы не выполняли. За сколько отладите? Нет сил уже, ваша инструкция + добавление этого кода: $price = round(($price/98)*100, 2); не работает! А мне еще нужно убрать комиссию с покупателя на себя ко всему прочему Изменено 13 мая, 2016 пользователем Maksclub Ссылка на сообщение Поделиться на другие сайты
ValeriyZ Опубликовано 18 августа, 2016 Жалоба Поделиться Опубликовано 18 августа, 2016 Тоже не могу сделать чтобы статус заказа менялся при комиссии с меня а не клиента.Скажите что в callback.php и YandexCard.php поправить чтобы и комиссия с меня бралась а не с клиента и статус менялся на оплаченный?За ранее спасибо! Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 18 августа, 2016 Жалоба Поделиться Опубликовано 18 августа, 2016 Тоже не могу сделать чтобы статус заказа менялся при комиссии с меня а не клиента. Скажите что в callback.php и YandexCard.php поправить чтобы и комиссия с меня бралась а не с клиента и статус менялся на оплаченный? За ранее спасибо!Только с клиента, иначе никак. Ссылка на сообщение Поделиться на другие сайты
ValeriyZ Опубликовано 19 августа, 2016 Жалоба Поделиться Опубликовано 19 августа, 2016 очень жаль Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 19 августа, 2016 Жалоба Поделиться Опубликовано 19 августа, 2016 очень жаль Тут дело не в Simpla, а в ЯД. Оплата реально происходит на их сайте, куда от Вашего сайта передается сумма платежа. А у них правило - комиссией.Если Вы хотите по своему, то можно модифицировать сумму к оплате, уменьшая ее на нужную величину для случая оплаты через ЯД. Но это уже надо специально программировать. И возможны трудности с округлением... Ссылка на сообщение Поделиться на другие сайты
otell Опубликовано 14 ноября, 2016 Жалоба Поделиться Опубликовано 14 ноября, 2016 респект и уважуха Ссылка на сообщение Поделиться на другие сайты
pereborr Опубликовано 29 января, 2017 Жалоба Поделиться Опубликовано 29 января, 2017 Помогите пожалуйста почему то слетела система по банковским картам, после оплаты клиенту не отсылается заказ на почту. Что делать? Ссылка на сообщение Поделиться на другие сайты
pereborr Опубликовано 24 марта, 2017 Жалоба Поделиться Опубликовано 24 марта, 2017 Я так полагаю тема мертвая уже? И прийдется искать сторонних программистов что бы сделали отправку заказа на почту после оплаты. Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 марта, 2017 Жалоба Поделиться Опубликовано 24 марта, 2017 Я так полагаю тема мертвая уже? И прийдется искать сторонних программистов что бы сделали отправку заказа на почту после оплаты.Попробуйте мое решение, если не сработает пишите в скайп simplacms. Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 24 марта, 2017 Жалоба Поделиться Опубликовано 24 марта, 2017 Попробуйте мое решение, если не сработает пишите в скайп simplacms. Сравнил callback.php из предложенного решения и и стандартного дистрибутива Simpla.ИМХО, по сути - одно и то же. Нашел отличия такого сорта.1. * @authorВ стандартном Denis Pikusov, в предложенном Noxter2. Комментарии отличаются к нескольких местах, напримерВ стандартном ////////////////////////////////////////////////// Проверка статуса////////////////////////////////////////////////в предложенном покороче// Проверка статуса3. Сообщения об ошибках отличаются к нескольких местах, напримерВ стандартном if($hash !== $_POST['sha1_hash']) err('bad sign');в предложенном // Проверка статусаif($hash !== $_POST['sha1_hash']){ error('Не верный секретный ключ');} Вопрос: такие изменения достаточно существенны, чтобы ставить свой copyright ? Или я пропустил что-то важное? 4 * @copyright В стандартном * @copyright 2013 Denis Pikusovв предложенном * @copyright 2014 Noxter Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 марта, 2017 Жалоба Поделиться Опубликовано 24 марта, 2017 Ну я писал этот модуль очень давно, до того как Денис внес свои правки в стандартный модуль. Да и то написан он был как я помню по причине не рабочего модуля в симпле, точно не помню вроде Яндекс поля какие-то в форме поменял. Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 24 марта, 2017 Жалоба Поделиться Опубликовано 24 марта, 2017 Ну я писал этот модуль очень давно, до того как Денис внес свои правки в стандартный модуль. Текущий стандартный модуль Simpla появился в версии 2.2.5 в феврале 2014 и сам файл callback.php датируется 2013 годом.В предлагаемом решении в архиве файл callback.php и другие датируется 2015 годом. А внутри файла стоит "* @copyright 2014 Noxter"... Да и то написан он был как я помню по причине не рабочего модуля в симпле, точно не помню вроде Яндекс поля какие-то в форме поменял. Хорошо было бы вспомнить, по какой причине и вставить эту причину в описание. А то в файле callback.php не видно ни одного реального изменения, одни косметические прикрасы... Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 марта, 2017 Жалоба Поделиться Опубликовано 24 марта, 2017 В отличии от тебя Корс, мне есть чем занятся, а ты дальше страдай ерундой. Как говориться "Старость не радость". Ссылка на сообщение Поделиться на другие сайты
pereborr Опубликовано 13 июня, 2017 Жалоба Поделиться Опубликовано 13 июня, 2017 Никак не настрою статус. кто поможет? После оплаты он не меняется. Статус ждет обработки Оплата оплачен Ссылка на сообщение Поделиться на другие сайты
pereborr Опубликовано 28 октября, 2017 Жалоба Поделиться Опубликовано 28 октября, 2017 Ребят, готов заплатить тому кто поможет с этим нерабочим модулем!!! Ссылка на сообщение Поделиться на другие сайты
ABSORBER Опубликовано 28 октября, 2017 Жалоба Поделиться Опубликовано 28 октября, 2017 Ребят, готов заплатить тому кто поможет с этим нерабочим модулем!!!Пишите в скайп или телеграм, будем чинить. Ссылка на сообщение Поделиться на другие сайты
pereborr Опубликовано 28 октября, 2017 Жалоба Поделиться Опубликовано 28 октября, 2017 В общем сам разобрался. Сейчас все работает.Yandex.php <?php require_once('api/Simpla.php'); class Yandex extends Simpla { // Комиссия Яндекса, % private $fee = 1; public function checkout_form($order_id, $button_text = null) { if(empty($button_text)) $button_text = 'Перейти к оплате'; $order = $this->orders->get_order((int)$order_id); $payment_method = $this->payment->get_payment_method($order->payment_method_id); $payment_currency = $this->money->get_currency(intval($payment_method->currency_id)); $settings = $this->payment->get_payment_settings($payment_method->id); $price = round($this->money->convert($order->total_price, $payment_method->currency_id, false), 2); // Учесть комиссию Яндекса $price = $price+max(0.01, $price*$this->fee/100); // описание заказа $desc = 'Оплата заказа №'.$order->id.' на сайте '.$this->settings->site_name; $button = '<form method="POST" action="https://money.yandex.ru/quickpay/confirm.xml"> <input name="receiver" type="hidden" value="'.$settings['yandex_id'].'"> <input name="formcomment" type="hidden" value="'.$desc.'"> <input name="short-dest" type="hidden" value="'.$desc.'"> <input name="targets" type="hidden" value="'.$desc.'"> <input name="quickpay-form" type="hidden" value="shop"> <input name="sum" data-type="number" type="hidden" value="'.$price.'"> <input name="label" type="hidden" value="'.$order->id.'"> <input name="paymentType" type="hidden" value="PC"> <input type="submit" name="submit-button" value="'.$button_text.'" class="checkout_button"> </form>'; return $button; } } callback.php - общий для карт и для яндекса <?php /* * * К этому скрипту обращается Yandex для уведомления об оплате * Документация https://money.yandex.ru/i/forms/guide-to-custom-p2p-forms.pdf * */ // Работаем в корневой директории chdir ('../../'); require_once('api/Simpla.php'); $simpla = new Simpla(); // Проверка статуса if($_POST['notification_type'] !== 'p2p-incoming' && $_POST['notification_type'] !== 'card-incoming') { error('Плохой статус'); } // Выберем заказ из базы $order = $simpla->orders->get_order(intval($_POST['label'])); if(empty($order)) { error('Оплачиваемый заказ не найден'); } // Выбираем из базы соответствующий метод оплаты $method = $simpla->payment->get_payment_method(intval($order->payment_method_id)); if(empty($method)) { error("Неизвестный метод оплаты"); } $settings = unserialize($method->settings); $payment_currency = $simpla->money->get_currency(intval($method->currency_id)); // Проверяем контрольную подпись $hash = sha1($_POST['notification_type'].'&'.$_POST['operation_id'].'&'.$_POST['amount'].'&'.$_POST['currency'].'&'.$_POST['datetime'].'&'.$_POST['sender'].'&'.$_POST['codepro'].'&'.$settings['yandex_secret'].'&'.$_POST['label']); if($hash !== $_POST['sha1_hash']) { error('Не верный секретный ключ'); } // Нельзя оплатить уже оплаченный заказ if($order->paid) { error('Этот заказ уже оплачен'); } // Учет комиссии Яндекса $amount = round($simpla->money->convert($order->total_price, $method->currency_id, false), 2); if($_POST['amount'] != $amount || $_POST['amount']<=0) error("Не корректная цена"); // Установим статус оплачен $simpla->orders->update_order(intval($order->id), array('paid'=>1)); // Отправим уведомление на email $simpla->notify->email_order_user(intval($order->id)); $simpla->notify->email_order_admin(intval($order->id)); // Спишем товары $simpla->orders->close(intval($order->id)); function error($msg) { header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request', true, 400); mail($simpla->settings->order_email, "yandex: $msg", $msg); die($msg); } Дарю безвозмездно Ссылка на сообщение Поделиться на другие сайты
fuckmoney Опубликовано 17 июля, 2018 Жалоба Поделиться Опубликовано 17 июля, 2018 (изменено) Уже как неделю перестал меняться статус оплаты заказов. Оплата происходит через карты. <input name="paymentType" type="hidden" value="AC"> Заметил, что окно оплаты у Яндекс изменилось, теперь при оплате можно выбрать либо с кошелька, либо с карты. Пробовал через Я.Деньги статус меняется, если карта, то нет. Изменено 17 июля, 2018 пользователем sergeevizh Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения