做微信小程序开发、运营或者投放时,有时候需要判断一个小程序当前是否仍然可以正常使用。

仅仅知道AppID存在并不能代表小程序当前状态正常,因为小程序可能仍然保留AppID,但已经因为平台规则等原因被限制或者封禁。

这里可以通过下面这个接口进行检测:


https://api.wxapi.work/xcx/checkxcx.PHP?appid=

例如检测:


wx81894c6dbb81c2e2

完整请求:


https://api.wxapi.work/xcx/checkxcx.PHP?appid=wx81894c6dbb81c2e2

接口可能返回:


{"code":0,"appid":"wx81894c6dbb81c2e2","status":"已被封禁,封禁原因:存在绕开、规避或对抗平台审核监管的行为"}

返回规则:


code = 1  小程序正常
code = 0  小程序被封禁

下面封装成一个PHP接口。

PHP代码


<?php

header('Content-Type: application/json; charset=utf-8');

$appid = isset($_GET['appid']) ? trim($_GET['appid']) : '';

if ($appid === '') {
    echo json_encode([
        'code' => 0,
        'appid' => '',
        'status' => '请传入appid'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// AppID基础格式验证
if (!preg_match('/^wx[a-zA-Z0-9]{16}$/', $appid)) {
    echo json_encode([
        'code' => 0,
        'appid' => $appid,
        'status' => 'appid格式错误'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

$apiUrl = 'https://api.wxapi.work/xcx/checkxcx.PHP?appid=' . urlencode($appid);

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => $apiUrl,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 10,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_SSL_VERIFYHOST => 2
]);

$response = curl_exec($ch);

if ($response === false) {
    curl_close($ch);

    echo json_encode([
        'code' => 0,
        'appid' => $appid,
        'status' => '检测接口请求失败'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

if ($httpCode != 200) {
    echo json_encode([
        'code' => 0,
        'appid' => $appid,
        'status' => '检测接口返回异常'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

$data = json_decode($response, true);

if (!is_array($data) || !isset($data['code'])) {
    echo json_encode([
        'code' => 0,
        'appid' => $appid,
        'status' => '检测结果解析失败'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

echo json_encode([
    'code' => intval($data['code']),
    'appid' => isset($data['appid']) ? $data['appid'] : $appid,
    'status' => isset($data['status']) ? $data['status'] : ''
], JSON_UNESCAPED_UNICODE);

使用方法

把代码保存为:


check_xcx.php

访问:


https://你的域名/check_xcx.php?appid=wx81894c6dbb81c2e2

如果返回:


{"code":0,"appid":"wx81894c6dbb81c2e2","status":"已被封禁,封禁原因:存在绕开、规避或对抗平台审核监管的行为"}

说明当前检测结果为封禁状态。

如果返回:


{"code":1,"appid":"wx81894c6dbb81c2e2","status":"正常"}

则说明当前小程序状态正常。

这个接口后续同样可以增加数据库记录和定时检测功能。例如每天定时检查一批AppID,一旦状态从正常变成封禁,就记录异常状态并发送提醒。

更多推荐