2021-06-20 18:20:21 +03:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
use YooKassa\Client;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
function anpay_kuri($order_id){
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# получаем инфу о заказе
|
|
|
|
|
|
$buy_find = "
|
|
|
|
|
|
SELECT
|
|
|
|
|
|
`buy_id`,
|
|
|
|
|
|
`buy_status`,
|
|
|
|
|
|
`pricename`,
|
2021-12-25 15:15:59 +00:00
|
|
|
|
`buy_email`,
|
2021-06-20 18:20:21 +03:00
|
|
|
|
`anbuy`.`price` as `currprice`
|
|
|
|
|
|
FROM
|
|
|
|
|
|
`anbuy`
|
|
|
|
|
|
LEFT JOIN
|
|
|
|
|
|
`price` ON `anbuy`.`number_id` = `price`.`price_id`
|
|
|
|
|
|
WHERE
|
2021-06-21 17:55:53 +03:00
|
|
|
|
`buy_id` = '$order_id'
|
2021-06-20 18:20:21 +03:00
|
|
|
|
LIMIT 1
|
|
|
|
|
|
";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$buy_id = db_get($buy_find);
|
|
|
|
|
|
|
|
|
|
|
|
# заказ не найден
|
|
|
|
|
|
if (!isset($buy_id['buy_id'])){
|
|
|
|
|
|
echo 'заказ не найден!';
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# проверяем статус заказа
|
|
|
|
|
|
if ($buy_id['buy_status']) {
|
|
|
|
|
|
echo 'заказ уже оплачен!';
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
# ссылка на статус и номер заказа
|
|
|
|
|
|
$return_url = SITE.'status/'.$buy_id['buy_id'];
|
|
|
|
|
|
|
2021-06-20 18:20:21 +03:00
|
|
|
|
# получить ссылку на оплату
|
2021-12-25 15:15:59 +00:00
|
|
|
|
$payment = yk_pay($buy_id, $return_url);
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
|
|
|
|
|
if (isset($payment['confirmation']['confirmation_url'])){
|
|
|
|
|
|
$pay_url = $payment['confirmation']['confirmation_url'];
|
|
|
|
|
|
|
|
|
|
|
|
//добавляем shop_id от ЮКАССЫ чтобы следить за статусом оплаты
|
|
|
|
|
|
$upd_shop = "
|
|
|
|
|
|
UPDATE
|
|
|
|
|
|
`anbuy`
|
|
|
|
|
|
SET
|
|
|
|
|
|
`shop_id` = '{$payment->_id}'
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
`buy_id` = '{$buy_id['buy_id']}'
|
|
|
|
|
|
";
|
|
|
|
|
|
|
|
|
|
|
|
db_get($upd_shop, 'chitatel'); # фиксируем shop_id от Юкассы
|
|
|
|
|
|
header("Location: $pay_url"); // перенаправляем на оплату
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# получение результатов оплаты заказа
|
|
|
|
|
|
function resultpay_kuri(){
|
|
|
|
|
|
|
|
|
|
|
|
$source = file_get_contents('php://input');
|
2021-06-21 17:55:53 +03:00
|
|
|
|
//$source = file_get_contents('/thosts/anpdf/app/tests/result.json');
|
|
|
|
|
|
|
|
|
|
|
|
$fjson = '/thosts/anpdf/app/tests/result.json';
|
|
|
|
|
|
|
|
|
|
|
|
file_put_contents($fjson, $source);
|
|
|
|
|
|
|
|
|
|
|
|
// logsave('yk', $source);
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
|
|
|
|
|
$result = json_decode($source, true);
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
|
|
|
|
|
|
2021-06-22 00:37:38 +03:00
|
|
|
|
if (isset($result['event'])) {
|
|
|
|
|
|
|
|
|
|
|
|
$shop_id = $result['object']['id'];
|
2023-01-12 11:42:45 +00:00
|
|
|
|
$find_sql = "SELECT `buy_id`, `delivery_id`, `number_id`, `date_end` FROM `anbuy` WHERE `shop_id` = '$shop_id' LIMIT 1";
|
2021-06-22 00:37:38 +03:00
|
|
|
|
$find_order = db_get($find_sql);
|
|
|
|
|
|
|
|
|
|
|
|
if (!isset($find_order['buy_id'])) {
|
|
|
|
|
|
return False;
|
|
|
|
|
|
}
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
2021-06-22 00:37:38 +03:00
|
|
|
|
|
|
|
|
|
|
if ($result['event'] == "payment.succeeded"){
|
|
|
|
|
|
|
|
|
|
|
|
$currdate = date('Y-m-d H:i:s');
|
2023-01-12 11:42:45 +00:00
|
|
|
|
|
|
|
|
|
|
if ($find_order['number_id'] == 486){
|
|
|
|
|
|
$date_end = date("Y-m-d H:i:s", strtotime("+1 year"));
|
|
|
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
|
|
|
$date_end = $find_order['date_end'];
|
|
|
|
|
|
}
|
2021-06-22 00:37:38 +03:00
|
|
|
|
|
|
|
|
|
|
$supd = "
|
|
|
|
|
|
UPDATE
|
|
|
|
|
|
`anbuy`
|
|
|
|
|
|
SET
|
|
|
|
|
|
`buy_status` = '1',
|
|
|
|
|
|
`buy_active` = '1',
|
2023-01-12 11:42:45 +00:00
|
|
|
|
`date` = '$currdate',
|
|
|
|
|
|
`date_end` = '$date_end'
|
2021-06-22 00:37:38 +03:00
|
|
|
|
WHERE
|
|
|
|
|
|
`buy_id` = '{$find_order['buy_id']}'";
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
2021-06-22 00:37:38 +03:00
|
|
|
|
$result = db_get($supd, 'chitatel'); // фисксируем что оплату получил
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
2021-06-22 00:37:38 +03:00
|
|
|
|
}
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
2021-06-22 00:37:38 +03:00
|
|
|
|
# SELECT * FROM `price` WHERE `priceslug` = 'saturn-pod-priczelom-smersha';
|
|
|
|
|
|
elseif ( $result['event'] == "payment.canceled"){
|
|
|
|
|
|
|
|
|
|
|
|
if ($find_order['delivery_id'] > 1 ){ #физический товар возвращаем на место
|
|
|
|
|
|
|
|
|
|
|
|
$find_order = db_get("SELECT `pieces` FROM `price` WHERE `price_id` = '{$find_order['number_id']}'");
|
|
|
|
|
|
if (isset($find_order['pieces'])){
|
|
|
|
|
|
$newpieces = $find_order['pieces'] + 1;
|
|
|
|
|
|
$return_tovar = db_get("UPDATE `price` SET `pieces` = '$newpieces' WHERE `price_id` = '{$find_order['number_id']}'");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
|
|
|
|
|
}
|
2021-06-22 00:37:38 +03:00
|
|
|
|
|
2021-06-20 18:20:21 +03:00
|
|
|
|
else {
|
|
|
|
|
|
echo "order not fount";
|
|
|
|
|
|
exit;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
|
|
|
|
|
return True;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-12-25 15:15:59 +00:00
|
|
|
|
function yk_pay($buy, $return_url = ''){
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
if ($return_url == '')
|
|
|
|
|
|
$return_url = SITE;
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|
|
|
|
|
|
$client = new Client();
|
|
|
|
|
|
$client->setAuth(YID, YKEY);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$items = array(
|
|
|
|
|
|
'amount' => array(
|
2021-12-25 15:15:59 +00:00
|
|
|
|
'value' => $buy['currprice'],
|
2021-06-20 18:20:21 +03:00
|
|
|
|
'currency' => 'RUB',
|
|
|
|
|
|
),
|
|
|
|
|
|
'confirmation' => array(
|
|
|
|
|
|
'type' => 'redirect',
|
2021-06-21 17:55:53 +03:00
|
|
|
|
'return_url' => $return_url,
|
2021-06-20 18:20:21 +03:00
|
|
|
|
),
|
2021-12-25 15:15:59 +00:00
|
|
|
|
"receipt" => array(
|
|
|
|
|
|
"customer" => array(
|
|
|
|
|
|
"email" => $buy['buy_email'],
|
|
|
|
|
|
),
|
|
|
|
|
|
"items" => array(
|
|
|
|
|
|
array(
|
|
|
|
|
|
"description" => $buy['pricename'],
|
|
|
|
|
|
"quantity" => "1.00",
|
|
|
|
|
|
"amount" => array(
|
|
|
|
|
|
"value" => $buy['currprice'],
|
|
|
|
|
|
"currency" => "RUB"
|
|
|
|
|
|
),
|
2021-12-25 16:07:55 +00:00
|
|
|
|
"vat_code" => "4",
|
2021-12-25 15:15:59 +00:00
|
|
|
|
"payment_mode" => "full_prepayment",
|
|
|
|
|
|
"payment_subject" => "commodity"
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
),
|
2021-06-20 18:20:21 +03:00
|
|
|
|
'capture' => true,
|
2021-12-25 15:15:59 +00:00
|
|
|
|
'description' => $buy['pricename'],
|
2021-06-20 18:20:21 +03:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
$id = uniqid('', true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$payment = $client->createPayment(
|
|
|
|
|
|
$items, $id
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $payment;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2021-06-21 17:55:53 +03:00
|
|
|
|
|
2021-06-21 22:31:49 +03:00
|
|
|
|
# уведомление доставлено
|
|
|
|
|
|
function push_ok($buy_id){
|
|
|
|
|
|
|
|
|
|
|
|
return db_get( "UPDATE `anbuy` SET `mail_status` = '1' WHERE `buy_id` = $buy_id", 'chitatel');
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
#оповещаем письмом об успешном заказе
|
|
|
|
|
|
function sendstatus_kuri(){
|
|
|
|
|
|
|
2021-06-21 22:31:49 +03:00
|
|
|
|
/**
|
|
|
|
|
|
* обнуление доставки заказов
|
|
|
|
|
|
* UPDATE `anbuy` SET `mail_status` = '1' WHERE `buy_status` = 1 AND `mail_status` = '0';
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
|
|
|
|
# ищем не пушнутые с Яндекс Кассы на почту заказку
|
|
|
|
|
|
$orders = db_get("SELECT * FROM `anbuy` WHERE `buy_status` = 1 AND `mail_status` = '0'");
|
|
|
|
|
|
|
|
|
|
|
|
foreach($orders as $order){
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($order['buy_email'])){ # есть почта куда пушить
|
|
|
|
|
|
|
|
|
|
|
|
if ($order['delivery_id'] == 1) { #электронный платеж отправляем личный кабинет
|
2021-10-04 18:26:36 +03:00
|
|
|
|
|
|
|
|
|
|
$find_client = api_add_client($order['buy_email']); // создаем клиента
|
|
|
|
|
|
|
|
|
|
|
|
if (isset($find_client['client_id'])){
|
2021-10-04 19:58:14 +03:00
|
|
|
|
$upd = "UPDATE `anbuy` SET `client_id` = '{$find_client['client_id']}' WHERE `buy_id` = '{$order['buy_id']}'";
|
2021-10-04 20:15:46 +03:00
|
|
|
|
db_get($upd, 'chitatel');
|
2021-10-04 18:26:36 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-07-16 22:25:43 +03:00
|
|
|
|
$message = "Ваш заказ выполнен.<br/><br/>
|
2021-10-04 18:26:36 +03:00
|
|
|
|
Он будет всегда доступен в Вашем личном кабинете. <br/><br/>
|
|
|
|
|
|
Чтобы войти в КЛАН перейдите по ссылке - <a href='https://klan.argumenti.ru/login'>https://klan.argumenti.ru/login</a>. Введите свой логин и пароль. Если Вы еще не пользовались кабинетом создайте пароль, использую эту электронную почту. Если пароль забыли, воспользуйтесь опцией Забыли пароль, используя эту электронную почту.";
|
2021-06-21 17:55:53 +03:00
|
|
|
|
$subject = "Аргументы Недели: заказ выполнен";
|
2021-06-21 22:31:49 +03:00
|
|
|
|
$result = klanmail($order['buy_email'], $subject, $message, set('klanmail'));
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
|
|
|
|
|
else {
|
2021-06-22 09:11:54 +03:00
|
|
|
|
$message = "Ваш платеж подтвержден. Номер заказа {$order['buy_id']}. \n
|
2021-06-21 22:31:49 +03:00
|
|
|
|
Сообщите его менеджеру при необходимости";
|
2021-06-21 17:55:53 +03:00
|
|
|
|
$subject = "Аргументы Недели: платеж подтвержден";
|
2021-06-21 22:31:49 +03:00
|
|
|
|
$result = klanmail($order['buy_email'], $subject, $message, set('klanmail'));
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 22:31:49 +03:00
|
|
|
|
# меняем на статус доставлено
|
|
|
|
|
|
if ($result == True){
|
|
|
|
|
|
push_ok($order['buy_id']);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
2021-06-21 22:31:49 +03:00
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-06-21 22:31:49 +03:00
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 17:55:53 +03:00
|
|
|
|
}
|
2021-06-20 18:20:21 +03:00
|
|
|
|
|