Files
anpdf/app/routes/anpay.php
Your Name 9b95e27a29 s
2021-07-19 15:40:21 +03:00

234 lines
6.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use YooKassa\Client;
function anpay_kuri($order_id){
# получаем инфу о заказе
$buy_find = "
SELECT
`buy_id`,
`buy_status`,
`pricename`,
`anbuy`.`price` as `currprice`
FROM
`anbuy`
LEFT JOIN
`price` ON `anbuy`.`number_id` = `price`.`price_id`
WHERE
`buy_id` = '$order_id'
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;
}
# ссылка на статус и номер заказа
$return_url = SITE.'status/'.$buy_id['buy_id'];
# получить ссылку на оплату
$payment = yk_pay($buy_id['currprice'], $buy_id['pricename'], $return_url);
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');
//$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);
$result = json_decode($source, true);
if (isset($result['event'])) {
$shop_id = $result['object']['id'];
$find_sql = "SELECT `buy_id`, `delivery_id`, `number_id` FROM `anbuy` WHERE `shop_id` = '$shop_id' LIMIT 1";
$find_order = db_get($find_sql);
if (!isset($find_order['buy_id'])) {
return False;
}
if ($result['event'] == "payment.succeeded"){
$currdate = date('Y-m-d H:i:s');
$supd = "
UPDATE
`anbuy`
SET
`buy_status` = '1',
`buy_active` = '1',
`date` = '$currdate'
WHERE
`buy_id` = '{$find_order['buy_id']}'";
$result = db_get($supd, 'chitatel'); // фисксируем что оплату получил
}
# 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']}'");
}
}
}
}
else {
echo "order not fount";
exit;
}
return True;
}
function yk_pay($price, $name, $return_url = ''){
if ($return_url == '')
$return_url = SITE;
$client = new Client();
$client->setAuth(YID, YKEY);
$items = array(
'amount' => array(
'value' => $price,
'currency' => 'RUB',
),
'confirmation' => array(
'type' => 'redirect',
'return_url' => $return_url,
),
'capture' => true,
'description' => $name,
);
$id = uniqid('', true);
$payment = $client->createPayment(
$items, $id
);
return $payment;
}
# уведомление доставлено
function push_ok($buy_id){
return db_get( "UPDATE `anbuy` SET `mail_status` = '1' WHERE `buy_id` = $buy_id", 'chitatel');
}
#оповещаем письмом об успешном заказе
function sendstatus_kuri(){
/**
* обнуление доставки заказов
* 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) { #электронный платеж отправляем личный кабинет
$message = "Ваш заказ выполнен.<br/><br/>
Он будет вам всегда доступен в Вашем личном кабинете. <br/><br/>
Чтобы войти в кабинет перейдите по ссылке - https://klan.argumenti.ru/reminder<. Оставьте адрес своей электронной почты и вам придут инструкции по созданию вашего личного кабинета, где во вкладке «Мои покупки» вы сможете увидеть купленный вами номер газеты";
$subject = "Аргументы Недели: заказ выполнен";
$result = klanmail($order['buy_email'], $subject, $message, set('klanmail'));
}
else {
$message = "Ваш платеж подтвержден. Номер заказа {$order['buy_id']}. \n
Сообщите его менеджеру при необходимости";
$subject = "Аргументы Недели: платеж подтвержден";
$result = klanmail($order['buy_email'], $subject, $message, set('klanmail'));
}
# меняем на статус доставлено
if ($result == True){
push_ok($order['buy_id']);
}
}
}
return;
}