Перейти к содержимому


Отложенная оплата из личного аккаунта


  • Вы не можете ответить в тему
Сообщений в теме: 23

#21 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 31 January 2014 - 07:44 PM

потом опять случайно заходит в личный кабинет, и выбирает другой способ оплаты, но оплачивает через первую вкладку

Как только покупатель выбрал другой способ оплаты (видимо, он еще раз открыл личный кабинет в другом окне, т.к. окно с "предыдущим" способом оплаты не закрыто), так в этом же другом окне получит и другую ccылку, на новый выбранный способ оплаты. Т.е. у него будет ДВА окна оплаты - старое и новое, причем новое будет активным.

Вполне верю, что есть таланты, способные такое сотворить, после чего еще и выбрать неправильное (старое) окно, но ровно то же самое можно сделать и в штатном shopCMS, если два раза оформить одну и ту же корзину с разными платежными системами.

Не вижу смысла ломать копья по такому заковыристому и, на мой взгляд, редчайшему изыску.

PS. (глянув в код) можно поправить helper.php, чтобы он фиксировал оплату по любому, даже если извещение об оплате пришло не с предполагаемой системы оплаты (скажем, Робокасса), а с вебманей или Единой кассы. Оно даже логично, т.к. если уж через какую-то систему оплаты этот заказ оплачен и секрет-коды совпали (т.е. и правда оплачен), то врядли стоит отказывать этому заказу в изменении статуса на "Оплачен". Даже если в таблице заказов предполагался другой способ оплаты.
Но, повторюсь, на мой взгляд это редчайшая ситуация и изыск.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#22 kery

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 134 сообщений
Репутация: 17
Начинающий

Отправлено 11 February 2014 - 02:37 PM

Чуть ниже пункта (2) из стартовой инструкции есть строка


$paymentMethod = payGetPaymentMethodById($_GET["paymentMethodID"]);

после нее надо вставить строку

db_query("UPDATE ".ORDERS_TABLE." SET payment_type='".$paymentMethod['name']."', paymethod=".$paymentMethod['PID']." WHERE orderID=".$_GET["orderID"]);


Так и есть когда добавляю эту сроку то в оформленном заказе в админке нет варианта оплаты в скрине заказ 706, а убираю строку все нормально пример заказ 708

Прикрепленные файлы


  • 1

#23 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 February 2014 - 04:33 PM

когда добавляю эту сроку то в оформленном заказе в админке нет варианта оплаты

Хм... Действительно. В процессе исправления ошибок где-то вкралась ошибка :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#24 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 June 2014 - 01:43 PM

когда добавляю эту сроку то в оформленном заказе в админке нет варианта оплаты

Хм... Действительно. В процессе исправления ошибок где-то вкралась ошибка :).

Имя ключа элемента массива было неверным, ['name'] вместо ['Name']. Заодно и еще одну ошибку исправил.
Правильный пункт (3) инструкции выглядит так:

3. в файле order4_confirmation.php вместо строк


if ( isset ( $_GET["orderID"] ) && isset ( $_SESSION["newoid"] ) && ( int ) $_SESSION["newoid"] == ( int ) $_GET["orderID"] ) {
$paymentMethod = payGetPaymentMethodById($_GET["paymentMethodID"]);


вставляем


# BEGIN Отложенная оплата из личного аккаунта
#if ( isset ( $_GET["orderID"] ) && isset ( $_SESSION["newoid"] ) && ( int ) $_SESSION["newoid"] == ( int ) $_GET["orderID"] ) {
#$paymentMethod = payGetPaymentMethodById($_GET["paymentMethodID"]);
$data = db_query("SELECT orderID FROM ".ORDERS_TABLE." WHERE customerID=".regGetIdByLogin($_SESSION["log"]));
while ($row = db_fetch_assoc($data)) $orders[] = $row['orderID'];
if ( isset ( $_GET["orderID"] ) && (isset ( $_SESSION["newoid"] ) && ( int ) $_SESSION["newoid"] == ( int ) $_GET["orderID"] || in_array((int)$_GET["orderID"],$orders))) {
if($paymentMethod = payGetPaymentMethodById($_GET["paymentMethodID"])) db_query("UPDATE ".ORDERS_TABLE." SET payment_type='".$paymentMethod['Name']."', paymethod=".$paymentMethod['PID']." WHERE orderID=".$_GET["orderID"]);
# END Отложенная оплата из личного аккаунта

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)