Files
anpdf/app/routes/anpay.php
2021-06-21 22:31:49 +03:00

215 lines
5.5 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'])) {
if ($result['event'] == "payment.succeeded"){
$shop_id = $result['object']['id'];
$find_sql = "SELECT `buy_id` FROM `anbuy` WHERE `shop_id` = '$shop_id' LIMIT 1";
$find_order = db_get($find_sql);
if (isset($find_order['buy_id'])) {
$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'); // фисксируем что оплату получил
}
}
}
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' => 1.0,
'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 = "Ваш заказ выполнен. Он доступен в Вашем личном кабинете.\n
Чтобы войти в кабинет перейдите по ссылке - https://klam.argumenti.ru/login";
$subject = "Аргументы Недели: заказ выполнен";
$result = klanmail($order['buy_email'], $subject, $message, set('klanmail'));
}
else {
$message = "Ваш платеж подтвержден. Номер заказа {forder['order_id']}\n
Сообщите его менеджеру при необходимости";
$subject = "Аргументы Недели: платеж подтвержден";
$result = klanmail($order['buy_email'], $subject, $message, set('klanmail'));
}
# меняем на статус доставлено
if ($result == True){
push_ok($order['buy_id']);
}
}
}
return;
}