<?php
/**
 * 云验证 · PHP 服务端示例
 * 使用方法：将本文件放到你的网站中，替换 CLOUD_API_KEY 与 CLOUD_VERIFY_URL 后引入调用。
 */

const CLOUD_API_KEY    = 'pk_请替换成你的APIKey';
const CLOUD_VERIFY_URL = 'https://你的域名/api/verify.php';

/**
 * 验证卡密，成功会扣减 1 次。
 *
 * @return array{ok:bool, code:int, msg:string, data?:array}
 */
function cloud_verify(string $card, string $device): array
{
    $payload = json_encode([
        'key'    => CLOUD_API_KEY,
        'card'   => $card,
        'device' => $device,
    ], JSON_UNESCAPED_UNICODE);

    $ch = curl_init(CLOUD_VERIFY_URL);
    curl_setopt_array($ch, [
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $payload,
        CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 8,
    ]);

    $body  = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);

    if ($body === false) {
        return ['ok' => false, 'code' => -1, 'msg' => '网络请求失败: ' . $error];
    }

    $result = json_decode($body, true);
    return is_array($result)
        ? $result
        : ['ok' => false, 'code' => -1, 'msg' => '返回数据格式错误'];
}

/**
 * 查询卡密状态，不扣次数。
 */
function cloud_query(string $card): array
{
    $url = CLOUD_VERIFY_URL . '?' . http_build_query([
        'key'  => CLOUD_API_KEY,
        'card' => $card,
    ]);
    $url = str_replace('/verify.php', '/query.php', $url);

    $body = @file_get_contents($url, false, stream_context_create([
        'http' => ['timeout' => 8],
    ]));

    if ($body === false) {
        return ['ok' => false, 'code' => -1, 'msg' => '网络请求失败'];
    }
    $result = json_decode($body, true);
    return is_array($result) ? $result : ['ok' => false, 'code' => -1, 'msg' => '返回数据格式错误'];
}

// ---------------- 使用示例 ----------------
// $result = cloud_verify($_POST['card'] ?? '', $_SERVER['REMOTE_ADDR']);
// if ($result['ok']) {
//     echo '验证成功，剩余 ' . $result['data']['remaining'] . ' 次';
// } else {
//     echo '验证失败：' . $result['msg'];
// }
