API 文档

开发者 API v1

通过 API 自动化浏览商品、使用钱包余额下单、获取数字商品卡密。

接口基础地址:https://myapicazi.zh.pro/api/v1

身份认证

所有接口通过 X-API-Key 请求头认证。在上方输入你的密钥即可在线测试。

X-API-Key: pxk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

密钥格式

密钥以 pxk_ 为前缀,后接 40 位随机字符。完整密钥仅在创建时显示一次,服务端仅存储 SHA-256 哈希值。

权限范围

权限说明
products:read浏览分类和商品
orders:read查看订单和发货状态
orders:write创建新订单
wallet:read查看钱包余额和交易记录
webhooks:read查看已注册的 Webhook
webhooks:write注册/删除/测试 Webhook

频率限制

默认 60 次/分钟(可自定义 10~120)。每次响应包含:

请求头说明
X-RateLimit-Limit最大请求数
X-RateLimit-Remaining剩余请求数
X-RateLimit-Reset窗口重置时间戳
Retry-After重试等待秒数(仅 429)

错误处理

{ "error": { "code": "错误码", "message": "描述" } }
状态码错误码说明
401INVALID_API_KEY密钥无效/过期/已删除
402INSUFFICIENT_BALANCE余额不足
403INSUFFICIENT_PERMISSIONS缺少权限
404NOT_FOUND资源不存在
422VALIDATION_ERROR参数校验失败
429RATE_LIMIT_EXCEEDED请求过于频繁

密钥管理

密钥管理使用登录态(Sanctum)认证。您可以在网站「个人中心 → API 密钥」页面管理。

创建密钥

POST /api/v1/auth/keys auth:sanctum

密钥列表

GET /api/v1/auth/keys auth:sanctum

删除密钥

DELETE /api/v1/auth/keys/{id} auth:sanctum

钱包

查询余额

GET /api/v1/wallet/balance wallet:read
无需额外参数

返回示例:

{ "available_currency": 128.50, "available_points": 12850, "point_rate": 100 }

交易记录

GET /api/v1/wallet/transactions wallet:read

分类

分类列表

GET /api/v1/categories products:read

分类详情

GET /api/v1/categories/{id} products:read

商品

商品列表

GET /api/v1/products products:read

商品详情

GET /api/v1/products/{id} products:read

批量库存查询

GET /api/v1/products/stock?ids=1,2,3 products:read

订单

创建订单

POST /api/v1/orders orders:write
原子操作:验证库存 → 扣除钱包余额 → 自动发货。仅支持钱包支付。会实际扣款,请谨慎操作!
注意:此操作会真实扣款和发货!

订单列表

GET /api/v1/orders orders:read

订单详情

GET /api/v1/orders/{tracking_number} orders:read

发货

发货状态

GET /api/v1/orders/{tracking}/delivery orders:read

提取卡密

GET /api/v1/orders/{tracking}/items/{item_id}/codes orders:read

Webhooks(回调通知)

注册 Webhook

POST /api/v1/webhooks webhooks:write

支持的事件

事件说明
order.completed订单发货完成
order.delivering部分商品待发货
order.failed订单失败
*所有事件

Webhook 列表

GET /api/v1/webhooks webhooks:read

删除 Webhook

DELETE /api/v1/webhooks/{id} webhooks:write

发送测试事件

POST /api/v1/webhooks/{id}/test webhooks:write

签名验证

每次回调包含 X-Pixer-Signature 请求头:

X-Pixer-Signature: sha256=<HMAC-SHA256(请求体, secret)>
// PHP
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
if (!hash_equals($expected, $signature)) abort(403);

# Python
import hmac, hashlib
expected = 'sha256=' + hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
assert hmac.compare_digest(expected, header)

代码示例

cURL

# 查询余额
curl -H "X-API-Key: pxk_你的密钥" \
  https://myapicazi.zh.pro/api/v1/wallet/balance

# 浏览商品
curl -H "X-API-Key: pxk_你的密钥" \
  "https://myapicazi.zh.pro/api/v1/products?per_page=10&sort=price"

# 创建订单
curl -X POST \
  -H "X-API-Key: pxk_你的密钥" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"product_id":123,"quantity":1}]}' \
  https://myapicazi.zh.pro/api/v1/orders

Python

import requests

API_KEY = "pxk_你的密钥"
BASE = "https://myapicazi.zh.pro/api/v1"
H = {"X-API-Key": API_KEY}

# 查询余额
r = requests.get(f"{BASE}/wallet/balance", headers=H)
print(f"余额: ¥{r.json()['available_currency']}")

# 商品列表
r = requests.get(f"{BASE}/products", headers=H, params={"per_page": 5})
for p in r.json()["data"]:
    print(f"{p['id']}: {p['name']} - ¥{p['price']}")

# 下单
r = requests.post(f"{BASE}/orders", headers=H, json={
    "items": [{"product_id": 123, "quantity": 1}]
})
if r.status_code == 201:
    order = r.json()["order"]
    print(f"订单: {order['tracking_number']}")
    for item in order["items"]:
        print(f"  卡密: {item.get('codes', [])}")

PHP

<?php
$apiKey = 'pxk_你的密钥';
$base = 'https://myapicazi.zh.pro/api/v1';

function api($method, $url, $data = null) {
    global $apiKey;
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => ["X-API-Key: $apiKey", 'Content-Type: application/json'],
    ]);
    if ($method === 'POST') {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    }
    $res = curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return ['code' => $code, 'body' => json_decode($res, true)];
}

// 查询余额
$r = api('GET', "$base/wallet/balance");
echo "¥" . $r['body']['available_currency'] . "\n";

// 下单
$r = api('POST', "$base/orders", ['items' => [['product_id' => 123, 'quantity' => 1]]]);
if ($r['code'] === 201) {
    echo "订单: " . $r['body']['order']['tracking_number'] . "\n";
}
Zh.pro|全球账户&卡密即买即发 开发者 API v1 · 如有疑问请联系管理员