fix(ip-geo): fallback free lookup when Amap key platform mismatches

This commit is contained in:
kate522 committed 2026-07-25 15:46:36 +08:00
1 parent 62478a02fd
commit 06d4844c8e
4 files changed
+63 -17

No files matched your search

+14 -8
View File
@@ -323,14 +323,20 @@ class ExtensionController extends ControllerBase {
$message = __('当前服务商 AppKey 未填写,请在「扩展 → IP归属地」补全凭据。', 'aksrt');
break;
case 'provider_error':
// e.g. INVALID_USER_KEY from Amap
$message = $detail !== ''
? sprintf(
/* translators: %s: provider error code/message */
__('服务商拒绝请求:%s。请检查 Key 是否开通「IP定位」且平台类型匹配(Web服务)。', 'aksrt'),
$detail
)
: __('服务商返回错误,请检查 Key 权限与配额。', 'aksrt');
// e.g. USERKEY_PLAT_NOMATCH / INVALID_USER_KEY from Amap
if (stripos($detail, 'USERKEY_PLAT_NOMATCH') !== false) {
$message = __('高德返回 USERKEY_PLAT_NOMATCH:当前 Key 平台类型不匹配。请在高德开放平台新建「Web服务」类型 Key,并开通 IP 定位,不要用 Web端(JS)/Android/iOS Key。', 'aksrt');
} elseif (stripos($detail, 'INVALID_USER_KEY') !== false) {
$message = __('高德返回 INVALID_USER_KEY:AppKey 无效或未启用,请核对 Key 是否复制完整、是否已启用。', 'aksrt');
} else {
$message = $detail !== ''
? sprintf(
/* translators: %s: provider error code/message */
__('服务商拒绝请求:%s。请检查 Key 权限(IP定位)与配额。', 'aksrt'),
$detail
)
: __('服务商返回错误,请检查 Key 权限与配额。', 'aksrt');
}
break;
case 'http_error':
$message = $detail !== ''
@@ -29,8 +29,8 @@ class SchemaExtensionsIP {
['key' => 'providers', 'title' => '接口凭据', 'fields' => [
['key' => 'ip_addr_sdk_qq_appkey', 'label' => '腾讯 AppKey', 'type' => 'input', 'default' => ''],
['key' => 'ip_addr_sdk_qq_secretkey', 'label' => '腾讯 SecretKey', 'type' => 'input', 'default' => ''],
['key' => 'ip_addr_sdk_amap_appkey', 'label' => '高德 AppKey', 'type' => 'input', 'default' => ''],
['key' => 'ip_addr_sdk_amap_secretkey', 'label' => '高德 SecretKey', 'type' => 'input', 'default' => ''],
['key' => 'ip_addr_sdk_amap_appkey', 'label' => '高德 AppKey', 'type' => 'input', 'default' => '', 'help' => '须为「Web服务」Key,并开通 IP 定位'],
['key' => 'ip_addr_sdk_amap_secretkey', 'label' => '高德 SecretKey', 'type' => 'input', 'default' => '', 'help' => '启用数字签名时必填'],
]],
['key' => 'display', 'title' => '展示设置', 'fields' => [
['key' => 'ip_geo_display', 'label' => '展示位置', 'type' => 'checkbox', 'default' => ['comment', 'user_home', 'user_center', 'post'], 'sanitize_type' => 'array', 'options' => [