推荐的Webhook

注:
Webhook及其参数的详细描述见文档
注意
下方代码是示例。对于生产环境,建议使用更符合开发和支持情况的方案。
建议设置对以下Webhook类型的处理:
  • 用户验证
Copy
Full screen
Small screen
<?php

case Message::USER_VALIDATION:
/** @var Xsolla\SDK\Webhook\Message\UserValidationMessage $message */
$userArray = $message->getUser();
$userId = $message->getUserId();
$messageArray = $message->toArray();
// TODO if user not found, you should throw
Xsolla\SDK\Exception\Webhook\InvalidUserException
break;

user_id(字符串) —应用中的唯一用户ID。可以是可识别用户的昵称或其他参数。使用用户ID创建发送给应用的数据库的请求。如已存在该ID的用户,请调用break方法。否则抛出InvalidUserException例外。

示例:

Copy
Full screen
Small screen
<?php

DEFINE('DB_USER', 'root'); // specify
DEFINE('DB_PASSWORD', 'yourpasswordhere'); // specify
DEFINE('DB_HOST', '127.0.0.1'); // specify
DEFINE('DB_NAME','127.0.0.1'); //specify

$callback = function (Message $message) {
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die('Could not connect to MySQL '. mysqli_connect_error());

switch ($message->getNotificationType()) {
case Message::USER_VALIDATION:
$userId = $message->getUserId();
$query = "SELECT * FROM user_db.users u WHERE userID IN ('{$userId}') ";
$response = @mysqli_query($dbc, $query);

if (mysqli_num_rows($response) == 0){
throw new InvalidUserException('User not found');
}
break;

use Xsolla\SDK\Exception\Webhook\InvalidUserException;
use Xsolla\SDK\Webhook\Message\Message;

DEFINE('DB_USER', 'dbuser'); // specify
DEFINE('DB_PASSWORD', 'dbpassword'); // specify
DEFINE('DB_HOST', '127.0.0.1'); // specify
DEFINE('DB_NAME', 'dbname'); //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());

$query = "SELECT COUNT(user_id) FROM dbname.users WHERE user_id =

'{$userId}'";

$response = @mysqli_query($dbc, $query) or die(mysqli_error($dbc));

if ((int)mysqli_fetch_row($response)[0] === 0) {
throw new InvalidUserException('User not found');
}
break;
default:
break;
}
};
  • 支付
Copy
Full screen
Small screen
<?php

case Message::PAYMENT:
/** @var Xsolla\SDK\Webhook\Message\PaymentMessage $message */
$userArray = $message->getUser();
$paymentArray = $message->getTransaction();
$purchaseArray =$message->getPurchase();
$paymentId = $message->getPaymentId();
$externalPaymentId = $message->getExternalPaymentId();
$paymentDetailsArray = $message->getPaymentDetails();
$customParametersArray = $message->getCustomParameters();
$isDryRun = $message->isDryRun();
$messageArray = $message->toArray();
// TODO if the payment delivery fails for some reason, you should throw
Xsolla\SDK\Exception\Webhook\XsollaWebhookException
break;
注:
所购商品列表传入purchaseArray数组。其内容选项见支付Webhook参数描述。
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
上次更新时间: 2024年1月22日

发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!