Webhooks recommandés
Note
Voir la description détaillée des webhooks et de leurs paramètres dans la documentation.
Avis
Le code affiché ci-dessous est un exemple. Pour un environnement de production, il est recommandé d’utiliser une option plus adaptée au développement et au support.
- Validation utilisateur
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
(string) — est un ID utilisateur unique dans votre application. Il peut s’agir d’un pseudo ou d’un autre paramètre permettant d’identifier l’utilisateur. Utilisez l’ID utilisateur pour créer une requête vers la base de données de votre application. Si l’utilisateur portant cet ID existe déjà, appelez la méthode break
. Sinon, lancez l’exception InvalidUserException
.
Exemple :
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);
10if (!$dbc) {
11$error = mysqli_connect_error();
12die("Could not connect to MySQL {$error}");
13}
14
15switch ($message->getNotificationType()) {
16case Message::USER_VALIDATION:
17$userId = $message->getUserId();
18$query = "SELECT * FROM user_db.users u WHERE userID IN ('{$userId}') ";
19$response = @mysqli_query($dbc, $query);
20
21if (mysqli_num_rows($response) == 0){
22throw new InvalidUserException('User not found');
23}
24break;
25
26use Xsolla\SDK\Exception\Webhook\InvalidUserException;
27use Xsolla\SDK\Webhook\Message\Message;
28
29DEFINE('DB_USER', 'dbuser'); // specify
30DEFINE('DB_PASSWORD', 'dbpassword'); // specify
31DEFINE('DB_HOST', '127.0.0.1'); // specify
32DEFINE('DB_NAME', 'dbname'); //specify
33
34$callback = function (Message $message) {
35$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
36if (mysqli_connect_errno()) {
37printf("Connect failed: %s\n", mysqli_connect_error());
38exit;
39}
40
41switch ($message->getNotificationType()) {
42case Message::USER_VALIDATION:
43$userId = mysqli_real_escape_string($dbc, $message->getUserId());
44
45$query = "SELECT COUNT(user_id) FROM dbname.users WHERE user_id =
46
47'{$userId}'";
48
49$response = @mysqli_query($dbc, $query) or die(mysqli_error($dbc));
50
51if ((int)mysqli_fetch_row($response)[0] === 0) {
52throw new InvalidUserException('User not found');
53}
54break;
55default:
56break;
57}
58};
- Paiement
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;
Note
Une liste d’objets achetés est passée dans le tableau
purchaseArray
. Ses options de contenu sont disponibles dans la description des paramètres du webhook Paiement.Cet article vous a été utile ?
Merci pour votre commentaire !
Nous examinerons votre message et l'utiliserons pour améliorer votre expérience.Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entrée.