diff --git a/app/api/book.php b/app/api/book.php index ac3c0aa..891d321 100644 --- a/app/api/book.php +++ b/app/api/book.php @@ -7,7 +7,7 @@ function bookid_kuri($slug) { $query = " SELECT - `price_id`, `pricename`, `categoryname`, `priceslug`, `categoryslug`, price.category_id AS category_id, `BeginDate`, `priceanons`, `priceimg`, `pricehash`, `price`, `offline_price`, `sub` + `price_id`, `pricename`, `categoryname`, `priceslug`, `categoryslug`, price.category_id AS category_id, `BeginDate`, `priceanons`, `priceimg`, `pricehash`, `pieces`, `price`, `offline_price`, `sub` FROM `price` LEFT JOIN `pricecategory` diff --git a/app/confg.php b/app/confg.php index a3f9473..8c310f5 100644 --- a/app/confg.php +++ b/app/confg.php @@ -38,6 +38,13 @@ define('YKEY', 'test_7asbXctnircUsmb_DhtYWSfxMiWzPgJBDF7OoZ0XfvQ'); define('LOGDIR', SITEPATH.'logs/'); // папка куда падают логи +# отправка писем с клана +set('klanmail', [ + 'mail'=>'klan@argumenti.ru', + 'password'=>'Rt90Fg', + 'port'=>25, + 'host'=>'smtp.argumenti.ru' +]); /** отправка уведомлений */ /*set('noreply', diff --git a/app/helpers/inputform.php b/app/helpers/inputform.php new file mode 100644 index 0000000..78fa933 --- /dev/null +++ b/app/helpers/inputform.php @@ -0,0 +1,30 @@ +'; + + + return $result; + + +} \ No newline at end of file diff --git a/app/helpers/post_value.php b/app/helpers/post_value.php new file mode 100644 index 0000000..b8f74d0 --- /dev/null +++ b/app/helpers/post_value.php @@ -0,0 +1,11 @@ +setAuth(YID, YKEY); @@ -132,7 +140,7 @@ function resultpay_kuri(){ ), 'confirmation' => array( 'type' => 'redirect', - 'return_url' => SITE, + 'return_url' => $return_url, ), 'capture' => true, 'description' => $name, @@ -151,4 +159,30 @@ function resultpay_kuri(){ } + +#оповещаем письмом об успешном заказе +function sendstatus_kuri(){ + + if (isset($find_order['client_id'])) { # получаем клиента + + $find_client = db_get("SELECT * FROM `clients` WHERE `client_id` = '{$find_order['client_id']}'"); + + if (isset($find_client['client_id'])){ # если удалось индефицировать клиента + if ($find_order['delivery_id'] == 1) { #электронный платеж отправляем личный кабинет + $message = "Ваш заказ выполнен. Он доступен в Вашем личном кабинете.\n + Чтобы войти в кабинет перейдите по ссылке - ".SITE.'login'; + $subject = "Аргументы Недели: заказ выполнен"; + klanmail($find_order['clientmail'], $subject, $message, set('klanmail')); + } + else { + $message = "Ваш платеж подтвержден. Номер заказа {find_order['order_id']}\n + Сообщите его менеджеру при необходимостию"; + $subject = "Аргументы Недели: платеж подтвержден"; + klanmail($find_order['clientmail'], $subject, $message, set('klanmail')); + } + + } + } + +} diff --git a/app/routes/order.php b/app/routes/order.php index ef7d814..74baddf 100644 --- a/app/routes/order.php +++ b/app/routes/order.php @@ -7,83 +7,227 @@ function checkout_kuri($priceslug, $delivery_id = 1){ + + $err_critical = false; // true - не введены обязательные поля + $add_order = false; //по умолчанию не добавлять заказ + $add = []; // массив заполнения заказа + $elements = []; //элементы формы + + + $pay_ids = [ + '1' => 'Оплата на сайте', + '2' => 'Оплата при получении' + ]; + + $pay_id = 2; // по умолчанию оплата при получении + + /** был изменен способ доставки в форме + * 1 - электронная + * 2 - самовывоз + * 3 - курьером + */ + + + //print_r($_POST); + + /* ищем есть ли товар */ $price_id = db_get("SELECT * FROM `price` WHERE `priceslug` = '$priceslug' LIMIT 1"); - if (isset($price_id['price_id'])) { + if (!isset($price_id['price_id'])) { + echo 'товар не найден'; + return false; + } - if ($delivery_id == 1){ // тип товара - $price = $price_id['price']; // электронная книжка - } - else { - $price = $price_id['offline_price']; // бумажная книжка - } - + + /** определяем цену товара */ - if (defined('CLIENT_ID')){ + if ($delivery_id == 1){ // тип товара = 1 (только электронная) + $price = $price_id['price']; // электронный прайс + } + else { + $price = $price_id['offline_price']; // бумажный прайс + $delivery = db_get("SELECT * FROM delivery WHERE delivery_id > 1"); // список доставок для бумажной версии + } - $client = client_find_id(CLIENT_ID); + + /** фиксируем цену в базу */ + + $add['buy_price'] = $price; + $add['price'] = $price; + + + /** если клиент залогинен */ + if (defined('CLIENT_ID')){ + + $client = client_find_id(CLIENT_ID); - if (isset($client['result']['client_id'])){ - $client = $client['result']; - } - + if (isset($client['result']['client_id'])){ + $client = $client['result']; } - - if (isset($_POST['clientmail'])){ + + } + + + # если пришла форма + if (count($_POST) > 0){ + + $errors = []; // ошибки которые вернуться в форму + + if (isset($_POST['delivery_id'])){ + $delivery_id = (int)$_POST['delivery_id']; + } + + if (isset($_POST['pay_id'])){ + $pay_id = (int)$_POST['pay_id']; + } + + + # указан ли в поле email + if (isset($_POST['clientmail']) and trim($_POST['clientmail']) !== '') { $clientmail = $_POST['clientmail']; if (!filter_var($clientmail, FILTER_VALIDATE_EMAIL)){ - $error_mail = True; + $error['buy_email'] = 'Не указана электронная почта (обязательна для электронных заказов и оплаты онлайн)'; + if ($delivery_id == 1 or $pay_id == 1){ + $err_critical = True; # обязательное поле для цифрового заказа или оплаты онлайн + } } else { - # ищем или создаем клиента - $client = api_add_client($clientmail); - + $client = api_add_client($clientmail); # ищем или создаем клиента } + } - - if (isset($client['client_id'])) { - - #создаем заказ - $add['client_id'] = $client['client_id']; - $add['buy_email'] = $client['clientmail']; - $add['buy_price'] = $price; - $add['price'] = $price; - $add['buy_status'] = 0; - $add['mail_status'] = 0; - $add['number_id'] = $price_id['price_id']; - $add['pay_id'] = 3; // оплата через Юкассу - $add['delivery_id'] = $delivery_id; - $add['date_start'] = date('Y-m-d H:i:s'); - $add['buy_active'] = 0; - - - $order_id = db_insert('anbuy', $add, 'chitatel'); // добавляем в базу заказ - - if (is_array($order_id)){ // неудалось создать заказ - $error_mail = True; - + # указано ли поле имя + if (isset($_POST['buy_name']) and trim($_POST['buy_name']) !== '' ) { + $add['buy_name'] = trim($_POST['buy_name']); + } + else { + if ($delivery_id > 1){ + $err_critical = True; // обязательное поле для физических заказов + $errors['buy_name'] = 'Не указано имя. Обязательно для получения самовывозом'; } - else { // заказ создался - - return anpay_kuri($order_id); - - } - } + # указано поле телефон + if (isset($_POST['buy_tel']) and trim($_POST['buy_tel']) !== '') { + $add['buy_tel'] = trim($_POST['buy_tel']); + } + else { + if ($delivery_id == 3){ // обязательное поле для доставки курьером + $err_critical = True; + $errors['buy_tel'] = 'Не указан телефон по которому можно уточнить детали доставки'; + } + } + + + # указано поле адрес + if (isset($_POST['buy_adress']) and trim($_POST['buy_adress']) !== '') { + $add['buy_adress'] = trim($_POST['buy_adress']); + } + else { + if ($delivery_id == 3){ + $err_critical = True; // обязательное поле для доставки курьером + $errors['buy_adress'] = 'Не указан адрес куда доставить товар'; + } + } + + // все поля формы заполнены - пушим заказ + if (!$err_critical){ + $add_order = True; + } + } - else { - $error_price = True; - } + + + /** фикстируем клиента в базу */ + if (isset($client['client_id'])) { + $add['client_id'] = $client['client_id']; + $add['buy_email'] = $client['clientmail']; - $submit_link = SITE."checkout/$priceslug/$buy_type"; + if ($delivery_id == 1) { + $add_order = True; // для электронного заказа достаточно активного клиента + } + } + + - include VIEWPATH.'checkout.phtml'; + #создаем заказ + if ($add_order){ + + $add['buy_status'] = 0; + $add['mail_status'] = 0; + $add['number_id'] = $price_id['price_id']; + $add['pay_id'] = 3; // оплата через Юкассу + $add['delivery_id'] = $delivery_id; + $add['date_start'] = date('Y-m-d H:i:s'); + $add['buy_active'] = 0; + + + $order_id = db_insert('anbuy', $add, 'chitatel'); // добавляем в базу заказ + $order_url = SITE."status/$order_id"; + + if (is_array($order_id)){ // неудалось создать заказ + $error_mail = True; + $error['no_order'] = 'Не удалось сформировать заказ'; + } + else { # заказ создался + if ( $delivery_id == 1 or ($_POST['pay_id']) == 1){ + echo 'уводим на оплату в Юкассу'; + return anpay_kuri($order_id); + } + else { // даем пользователю номер заказа + + + if (isset($add['buy_email'])) { + + $message = "Ваш платеж подтвержден. Номер заказа $order_id\n + Сообщите его менеджеру при необходимости.\n"; + $subject = "Аргументы Недели: платеж подтвержден"; + $result = klanmail($add['buy_email'], $subject, $message, set('klanmail')); + // echo $result; + } + + header("Location: $order_url"); // переводим на инфу про заказа + } + } + + } + + + $submit_link = SITE."checkout/$priceslug/$delivery_id"; + + + include VIEWPATH.'checkout.phtml'; } + +# страница с которой +function status_kuri($order_id){ + + # получаем инфу о заказе + $buy_find = " + SELECT + `buy_id`, + `buy_status`, + `delivery_id`, + `shop_id` + FROM + `anbuy` + WHERE + `buy_id` = '$order_id' + LIMIT 1 + "; + + $buy_id = db_get($buy_find); + + + include(VIEWPATH.'order_status.phtml'); + + +} + diff --git a/app/routes/sendmail.php b/app/routes/sendmail.php new file mode 100644 index 0000000..3fde185 --- /dev/null +++ b/app/routes/sendmail.php @@ -0,0 +1,80 @@ +SMTPDebug = 3; // Enable verbose debug output + $send->isSMTP(); + //$send->SMTPDebug=3; // Set mailer to use SMTP + $send->Host = $frommail['host']; // Specify main and backup SMTP servers + // Enable SMTP authentication + $send->Username = $login; // SMTP username + $send->Password = $frommail['password']; + if (isset($frommail['secure'])) { + $send->SMTPSecure = $frommail['secure']; + $send->SMTPAuth = true; + } + else { + $mail->SMTPSecure = false; + $mail->SMTPAutoTLS = false; + } + $send->Port = $frommail['port']; // TCP port to connect to + $send->setFrom($frommail['mail'], 'Аргументы Недели'); + $send->addAddress($mail, $mail); // Add a recipient + $send->CharSet = 'UTF-8'; + $send->isHTML(True); // Set email format to HTML + $send->Subject = $subject; + /*ob_start(); + include 'mail.phtml'; + $mailbody = ob_get_contents(); + ob_end_clean();*/ + + $send->Body = $message; + + + + + //$headers = "MIME-Version: 1.0\r\n"; + //$headers .= "Content-type: text/plain; charset=utf-8\r\n"; + //$headers .= "Content-Transfer-Encoding: 8bit \r\n"; + //$headers .= "From: nomer@arguments.ru\r\n"; + //$headers .= 'Reply-To: nomer@arguments.ru'."\r\n"; + + //if (mail($mail, $subject, $message, $headers)) + // $status = 'OK'; + //else + // $status = 'NO'; + + + if($send->send()) + $status = 'OK'; + else { + $status = 'NO'; + echo 'Mailer Error: ' . $send->ErrorInfo."\n"; + } + +return $status; + + +} \ No newline at end of file diff --git a/app/views/book.phtml b/app/views/book.phtml index f67898d..8d4a5b6 100644 --- a/app/views/book.phtml +++ b/app/views/book.phtml @@ -19,9 +19,10 @@
Доступ к библиотеке за 490 руб. в год
- 0):?> -Бумажная за =$book['offline_price']?> руб.
- + 0 && $book['pieces'] > 0):?> +Бумажная за =$book['offline_price']?> руб.
+ + diff --git a/app/views/checkout.phtml b/app/views/checkout.phtml index d056d98..947e71c 100644 --- a/app/views/checkout.phtml +++ b/app/views/checkout.phtml @@ -1,24 +1,106 @@ + + - - \ No newline at end of file diff --git a/app/views/order_status.phtml b/app/views/order_status.phtml new file mode 100644 index 0000000..a5cd132 --- /dev/null +++ b/app/views/order_status.phtml @@ -0,0 +1,45 @@ +Запомните номер заказа, чтобы при необходимости сообщить его менеджеру
+ + +Статус оплаты: + + + Спасибо мы получили от Вас оплату. + + Заказ неоплачен. + + Свяжитесь с менеджером, чтобы оплатить его. + + Вы сможете оплатить заказ при получении. + + + + + +
+ +Доставка: + + + Указана электронная почта или личный кабинет + + Выбран самовывоз по адресу - Москва, Авиационный переулок, д. 4А + + Доставка по указанному адресу. С Вами свяжется наш менеджер. + + +
+ + + +Извините, но такой заказ еще не сформирован
+ + + + + +Перейти в КЛАН \ No newline at end of file