Webhooks recomendados
Observação
Veja a descrição detalhada dos webhooks e seus parâmetros na documentação.
Aviso
O código exibido abaixo é uma amostra. Para um ambiente de produção, é recomendado usar uma opção que é mais adaptativa para o desenvolvimento e suporte.
- Validação do usuário
Copy
- php
1<?php
2
3case Message::USER_VALIDATION:
4/** @var Xsolla\SDK\Webhook\Message\UserValidationMessage $message */
5$userArray = $message->getUser();
6$userId = $message->getUserId();
7$messageArray = $message->toArray();
8// TODO if user not found, you should throw
9Xsolla\SDK\Exception\Webhook\InvalidUserException
10break;
user_id
(cadeia de caracteres) — é um ID de usuário exclusivo em seu aplicativo. Ele pode ser um apelido ou outro parâmetro que identifique um usuário. Use o ID do usuário para criar uma solicitação no banco de dados do seu aplicativo. Se já existe um usuário com esse ID, chame o método break
. Caso contrário, lance a exceção InvalidUserException
.
Exemplo:
Copy
- php
1<?php
2
3DEFINE('DB_USER', 'root'); // specify
4DEFINE('DB_PASSWORD', 'yourpasswordhere'); // specify
5DEFINE('DB_HOST', '127.0.0.1'); // specify
6DEFINE('DB_NAME','127.0.0.1'); //specify
7
8$callback = function (Message $message) {
9$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
10OR die('Could not connect to MySQL '. mysqli_connect_error());
11
12switch ($message->getNotificationType()) {
13case Message::USER_VALIDATION:
14$userId = $message->getUserId();
15$query = "SELECT * FROM user_db.users u WHERE userID IN ('{$userId}') ";
16$response = @mysqli_query($dbc, $query);
17
18if (mysqli_num_rows($response) == 0){
19throw new InvalidUserException('User not found');
20}
21break;
22
23use Xsolla\SDK\Exception\Webhook\InvalidUserException;
24use Xsolla\SDK\Webhook\Message\Message;
25
26DEFINE('DB_USER', 'dbuser'); // specify
27DEFINE('DB_PASSWORD', 'dbpassword'); // specify
28DEFINE('DB_HOST', '127.0.0.1'); // specify
29DEFINE('DB_NAME', 'dbname'); //specify
30
31$callback = function (Message $message) {
32$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
33if (mysqli_connect_errno()) {
34printf("Connect failed: %s\n", mysqli_connect_error());
35exit;
36}
37
38switch ($message->getNotificationType()) {
39case Message::USER_VALIDATION:
40$userId = mysqli_real_escape_string($dbc, $message->getUserId());
41
42$query = "SELECT COUNT(user_id) FROM dbname.users WHERE user_id =
43
44'{$userId}'";
45
46$response = @mysqli_query($dbc, $query) or die(mysqli_error($dbc));
47
48if ((int)mysqli_fetch_row($response)[0] === 0) {
49throw new InvalidUserException('User not found');
50}
51break;
52default:
53break;
54}
55};
- Pagamento
Copy
- php
1<?php
2
3case Message::PAYMENT:
4/** @var Xsolla\SDK\Webhook\Message\PaymentMessage $message */
5$userArray = $message->getUser();
6$paymentArray = $message->getTransaction();
7$purchaseArray =$message->getPurchase();
8$paymentId = $message->getPaymentId();
9$externalPaymentId = $message->getExternalPaymentId();
10$paymentDetailsArray = $message->getPaymentDetails();
11$customParametersArray = $message->getCustomParameters();
12$isDryRun = $message->isDryRun();
13$messageArray = $message->toArray();
14// TODO if the payment delivery fails for some reason, you should throw
15Xsolla\SDK\Exception\Webhook\XsollaWebhookException
16break;
Observação
Uma lista dos itens comprados é passada na matriz
purchaseArray
. Suas opções de conteúdo estão disponíveis na descrição dos parâmetros de webhook Pagamento.Este artigo foi útil?
Obrigado pelo seu feedback!
Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.