· 7 years ago · Mar 17, 2018, 04:14 PM
1<?php
2
3$config = require "../config.php";
4require "../database.php";
5require "../rcon.php";
6
7$database = new DataBase(
8 $config["mysql"]["host"],
9 $config["mysql"]["user"],
10 $config["mysql"]["password"],
11 $config["mysql"]["database"]
12);
13
14function upSign($method, $params, $secretKey) {
15 ksort($params);
16 unset($params['sign']);
17 unset($params['signature']);
18 array_push($params, $secretKey);
19 array_unshift($params, $method);
20
21 return hash('sha256', join('{up}', $params));
22}
23
24$method = $_GET['method'];
25$params = $_GET['params'];
26
27$id = explode("_", $params['account']);
28$id = $id[0];
29
30if($params['signature'] != upSign($method, $params, $config["unitpay"]["secret_key"])) {
31 exit('{"error": {"message": "ÐÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ"}}');
32} elseif($method != 'pay') {
33 exit('{"result": {"message":"Ð—Ð°Ð¿Ñ€Ð¾Ñ ÑƒÑпешно обработан"}}');
34}
35
36$payment = $database->select("SELECT * FROM `cd_payments` WHERE `id` = {?}", [$id]);
37
38if(empty($payment)) {
39 exit('{"error": {"message": "Платеж Ñ Ñ‚Ð°ÐºÐ¸Ð¼ номером заказа не был найден"}}');
40} elseif($payment[0]['sum'] != $params['orderSum']) {
41 exit('{"result": {"message": "Сумма платежа не Ñовпадает Ñ Ð¸Ñходной"}}');
42} elseif($payment[0]['status'] == 1) {
43 exit('{"error": {"message": "Данный платеж уже оплачен"}}');
44} else {
45 $database->query("UPDATE `cd_payments` SET `status` = 1 WHERE `id` = {?}", [$id]);
46
47 $rcon = new Rcon(
48 $config["rcon"]["host"],
49 $config["rcon"]["port"],
50 $config["rcon"]["password"],
51 $config["rcon"]["timeout"]
52 );
53
54 if($rcon->connect()) {
55 $array = exlode("," $payment[0]["values"]);
56 foreach($array as $value) {
57 $ex = explode("-", $value);
58
59 $permission = $config["capabilities"][$ex[1]]["permission"];
60 $command = str_replace("{username}", $payment[0]["username"], $config["give_command"]);
61 $command = str_replace("{perm}", $permission, $command);
62
63 $rcon->sendCommand($command);
64 }
65 }
66
67 exit('{"result": {"message": "Заказ был уÑпешно оплачен. Ð’Ñ‹ можете вернутьÑÑ Ð½Ð° главную"}}');
68}
69
70?>