Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 15.02.2017
Сообщений: 93
1

Как ответить на запрос XSOLLA

17.09.2018, 16:52. Показов 1484. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот собственно сам запрос {"notification_type":"user_validation","user":{"id":"test_xsolla_1537192196"} }
как на него ответить?
хочу подключить XSOLLA на сайт,не выходит.
Если есть у кого готовый вариант,буду очень благодарен
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2018, 16:52
Ответы с готовыми решениями:

Как получить токен в xsolla
В общем дали мне ссылку https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token как я...

как ответить на запрос navigator.userAgent.indexOf("MSIE")
на моей странице есть контэнт получаемый с другого ресурса. если зайти на сайт с Mozilla то все...

Правильно ответить на запрос websocket-a
Здравствуйте. Подскажите, пожалуйста, как правильно ответить на запрос, присланный через websocket?...

Написать программу, способную ответить на запрос
Задание 2: написать программу, способную ответить на запрос: суммарная стоимость всех товаров в...

5
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
21.09.2018, 08:12 2
Навряд ли есть возможность "ответить" на запрос вообще в подобном случае, это же все таки обычное API) Документации по XSOLLA полно, а что именно и как вы хотите подключить - непонятно. Конкретизируйте вопрос.
0
0 / 0 / 1
Регистрация: 15.02.2017
Сообщений: 93
06.05.2021, 14:17  [ТС] 3
Я хочу подключить магин по продаже игровой валюты
0
0 / 0 / 1
Регистрация: 15.02.2017
Сообщений: 93
07.05.2021, 15:35  [ТС] 4
Всем привет,нашел библиотеку для php,скачал,пытаюсь установить через xsolla-autoloader.php
выдает ошибку в коде в строке с $headers = [];
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
function headers_from_lines($lines)
{
    $headers = [];
 
    foreach ($lines as $line) {
        $parts = explode(':', $line, 2);
        $headers[trim($parts[0])][] = isset($parts[1])
            ? trim($parts[1])
            : null;
    }
 
    return $headers;
}
что тут не так?
0
Невнимательный
2596 / 973 / 321
Регистрация: 08.02.2013
Сообщений: 5,709
Записей в блоге: 2
07.05.2021, 18:30 5
Цитата Сообщение от TopusT Посмотреть сообщение
$headers = [];
https://www.php.net/ru/language.types.array
Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов, который заменяет языковую конструкцию array() на [].
0
0 / 0 / 1
Регистрация: 15.02.2017
Сообщений: 93
14.05.2021, 09:59  [ТС] 6
В общем написал в тех.поддержку и мне там помогали 4 дня))
Игру пришлось переписать на php7.
Потом я создал 3 файла token.php,index.php,webhook.php и потом уже в них прописал следующие коды
index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
require 'xsolla-autoloader.php';
use Xsolla\SDK\API\XsollaClient;
use Xsolla\SDK\API\PaymentUI\TokenRequest;
 
$projectId = ;
$userId = "$user[id]";
 
$tokenRequest = new TokenRequest($projectId, $userId);
$tokenRequest->setUserEmail("$user[login]@fistwar.ru")
    ->setSandboxMode(true)
    ->setUserName('USER_NAME')
    ->setCustomParameters(array('key1' => 'value1', 'key2' => 'value2'));
 
$xsollaClient = XsollaClient::factory(array(
    'merchant_id' => ,
    'api_key' => ''
));
$token = $xsollaClient->createPaymentUITokenFromRequest($tokenRequest);
 
?>
 
    </br><center><button class='button' data-xpaystation-widget-open>Купить <img src='../images/rubin.png'></button></center></br>
   
    <?php \Xsolla\SDK\API\PaymentUI\PaymentUIScriptRenderer::send($token, $isSandbox = true); ?>
token.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
use Xsolla\SDK\API\XsollaClient;
require 'xsolla-autoloader.php';
 
$tokenContent = array (
       'user' => array
        (
            'user' => Array
                (
                    'value' => 'id'
                ),
            'notification_type' => Array
                (
                    'value' => 'user_validation'
                ),
            'marketplace' => Array
                (
                    'value' => 'mobile'
                ),
            'country' => Array
                (
                    'value' => 'US'
                )
        ),
        'purchase' => array
        (
            'virtual_currency' => Array
                (
                    'value' => 'sku'
                ),
            'virtual_currency' => Array
                (
                    'value' => 'amount'
                ),
        'settings' => array (
            'project_id' => ,
            'ui' => array(
                            'theme' => '100'
                        )
                )
);
 
$xsollaClient = XsollaClient::factory(array(
    'merchant_id' => ,
    'api_key' => ''
));
$response = $xsollaClient->CreatePaymentUIToken(array('request' => $tokenContent));
$token = $response['token'];
echo $token;
 
?>
webhook.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
require 'xsolla-autoloader.php';
 
use Xsolla\SDK\Webhook\WebhookServer;
use Xsolla\SDK\Webhook\Message\Message;
use Xsolla\SDK\Exception\Webhook\XsollaWebhookException;
use Xsolla\SDK\Exception\Webhook\InvalidUserException;
use Xsolla\SDK\Webhook\Message\PaymentMessage;
use Xsolla\SDK\Webhook\Message\RefundMessage;
 
DEFINE('DB_USER', ''); // specify
DEFINE('DB_PASSWORD', ''); // specify
DEFINE('DB_HOST', 'localhost'); // specify
DEFINE('DB_NAME', ''); //specify
 
$callback = function (Message $message) {
    $dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit;
    }
 
    switch ($message->getNotificationType()) {
        case Message::USER_VALIDATION:
                $userId = mysqli_real_escape_string($dbc, $message->getUserId());
 
                $userArray = $message->getUser();
                $userId = $message->getUserId();
                $messageArray = $message->toArray();
                $query = "SELECT COUNT(id) FROM baza.users WHERE id = '{$userId}'";
                $response = @mysqli_query($dbc, $query) or die(mysqli_error($dbc));
                $user = new \Xsolla\SDK\Webhook\User();
                $user->setId('user_id')
                    ->setPublicId($userPublicId)
                    ->setEmail('user_email') //Optional field
                    ->setPhone('user_phone') //Optional field
                    ->setName('user_name'); //Optional field
                //TODO if user not found, you should throw InvalidUserException
                return new \Xsolla\SDK\Webhook\Response\UserResponse($user);
                if ((int)mysqli_fetch_row($response)[0] === 0) {
                    throw new InvalidUserException('User not found');
                }
            break;
            
            case Message::PAYMENT:
                if ($message->isPayment()) {
                    $userArray = $message->getUser();
                    $paymentArray = $message->getTransaction();
                    $paymentId = $message->getPaymentId();
                    $purchaseArray = $message->getPurchase();
                    $externalPaymentId = $message->getExternalPaymentId();
                    $paymentDetailsArray = $message->getPaymentDetails();
                    $customParametersArray = $message->getCustomParameters();
                    $isDryRun = $message->isDryRun();
                    $messageArray = $message->toArray();
                    $quanityCoins = $purchaseArray['virtual_currency']['quantity'];
                    $quanityamount = $purchaseArray['virtual_currency']['amount'];
                    $userlogin = $userArray['id'];
                    //тут код записи в базу
                    // TODO if the payment delivery fails for some reason, you should throw XsollaWebhookException
                }
            break;
            
            case Message::REFUND:
                if ($message->isRefund()) {
                    $userArray = $message->getUser();
                    $paymentArray = $message->getTransaction();
                    $paymentId = $message->getPaymentId();
                    $externalPaymentId = $message->getExternalPaymentId();
                    $paymentDetailsArray = $message->getPaymentDetails();
                    $customParametersArray = $message->getCustomParameters();
                    $isDryRun = $message->isDryRun();
                    $refundArray = $message->getRefundDetails();
                    $messageArray = $message->toArray();
                    // TODO if you cannot handle the refund, you should throw XsollaWebhookException
                }
            break;
        default:
            throw new XsollaWebhookException('Notification type not implemented');
    }
};
 
$webhookServer = WebhookServer::create($callback, 'key');
$webhookServer->start($webhookRequest = null, $authenticateClientIp = false);
 
?>
Вот ссылка на библиотеку github
Может кому то будет полезно,но я потратил очень много время
0
14.05.2021, 09:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2021, 09:59
Помогаю со студенческими работами здесь

Простейший веб сервер: получить запрос и ответить на него без использования страниц
И снова здравствуйте! Возникла острая необходимость в написании примитивного веб сервера. Задача...

как ответить на вопросы???
1. Выберите правильное соответствие сетевых масок? /255.255.0.0 = /8 /255.255.248.0 = /21 ...

Объясните как ответить
Здравствуйте, я новичок в этом деле. Помогите разобрать эти вопросы Нужна ли настройка ip-адреса...

Как правильно ответить?
прохожу курс Google Analytics Academy и отвечаю на контрольные вопросы. Вопрос такой: Какие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru