You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xsolla支付API调用POSTFIELDS错误排查求助

解决Xsolla Payments cURL调用的422错误问题

我之前也踩过Xsolla API格式的坑,咱们一步步来搞定这两个问题:

第一个错误:缺少settings.project_id

你最开始的报错是因为没有以API要求的JSON格式传递参数——Xsolla的支付接口明确要求POST请求主体是JSON字符串,而非默认的表单编码格式。虽然你后来改成了JSON字符串,但紧接着遇到的是数据结构不符合Schema的问题。

第二个错误:purchase.virtual_items.items需要数组而非对象

这个错误的核心很明确:你传递的items是单个对象,但API要求它必须是数组,哪怕你只需要提交一个虚拟物品,也要把它放进数组里包裹起来。

调整后的完整PHP cURL示例代码

下面是修正后的可参考代码,你可以替换成自己的实际参数:

<?php
// 替换为你的真实配置
$projectId = "你的项目ID";
$accessToken = "你的访问令牌";
$apiEndpoint = "https://api.xsolla.com/payments/v2/projects/{$projectId}/payment-ui";

// 构建完全符合Schema的请求数据
$requestData = [
    "settings" => [
        "project_id" => $projectId,
        "locale" => "zh_CN", // 按需设置语言
        "currency" => "CNY"  // 按需设置货币
    ],
    "purchase" => [
        "virtual_items" => [
            // 重点:items必须是数组,哪怕只有一个元素
            "items" => [
                [
                    "sku" => "你的虚拟物品SKU",
                    "quantity" => 1
                ]
            ]
        ]
    ],
    // 必须填写用户标识信息
    "user" => [
        "id" => [
            "value" => "你的用户唯一ID"
        ]
    ]
];

// 初始化cURL会话
$ch = curl_init($apiEndpoint);

// 设置cURL关键选项
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData, JSON_UNESCAPED_SLASHES));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
    "Authorization: Bearer {$accessToken}"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 执行请求并获取结果
$response = curl_exec($ch);
$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);

// 关闭会话
curl_close($ch);

// 输出调试信息
echo "HTTP状态码: {$httpStatus}\n";
echo "响应内容: {$response}\n";
?>

额外注意事项

  • 必填参数不能少:除了上述字段,还要根据你的业务场景补充其他必填参数(比如用户的支付区域等),可以对照Xsolla的官方文档核对。
  • JSON编码细节:使用JSON_UNESCAPED_SLASHES可以避免不必要的字符转义,确保生成的JSON完全符合API的格式要求。
  • 参数类型严格匹配:所有要求数组的字段,哪怕只有一个元素,都必须用数组包裹,不能直接传单个对象。

内容的提问来源于stack exchange,提问作者Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:37:39