PHP调用Enablex.io API发送短信时API密钥认证失败问题
enablex.io PHP短信接口认证错误排查方案
- 首先修正Basic Auth的错误写法
你代码中存在两个和认证直接相关的错误:- 不要对APP_ID、APP_KEY做urlencode处理,Basic认证要求直接对「APP_ID:APP_KEY」的原始字符串做base64编码,你之前声明的
$apiKey = urlencode('your app key')完全无效,如果后续你把编码后的密钥传入拼接字符串,会直接导致认证失败。 - 确认拼接的「APP_ID:APP_KEY」中,冒号是英文半角符号,前后没有多余空格,base64编码后的字符串不要有换行或者多余字符。
- 不要对APP_ID、APP_KEY做urlencode处理,Basic认证要求直接对「APP_ID:APP_KEY」的原始字符串做base64编码,你之前声明的
- 确认你收到的是否为真的认证错误
你贴出的返回结果{"result":0,"job_id":"617901d728665117a1656964"}符合enablex接口的成功返回规则:result为0代表请求提交成功,非0才是错误码。你可以在curl请求中增加HTTP状态码和错误信息打印,确认真实错误类型:
若状态码为401才是认证失败,状态码为200说明认证已通过,问题出在业务参数上。$response = curl_exec($ch); // 新增以下排查代码 if(curl_errno($ch)){ echo 'Curl请求错误:' . curl_error($ch); } $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); echo 'HTTP响应状态码:' . $http_status; curl_close($ch); - 业务参数排查(认证通过但短信发送失败的场景)
- 确认你填写的
campaign_id、template_id是你在enablex后台已审核通过的有效ID,短信内容和模板内容完全匹配,变量占位符格式符合平台要求。 - 确认接收号码格式正确,需要带国家码,比如中国手机号要写成
8613xxxxxxxxx的格式。 - 检查enablex后台是否配置了服务器IP白名单,未将你当前请求的服务器出口IP加入白名单也会导致请求被拦截。
- 确认你填写的
内容的提问来源于stack exchange,提问作者remov
相关产品推荐
相关产品推荐

