PHP调用Facebook WhatsApp API发消息未收到问题咨询
解答
使用Facebook WhatsApp Cloud API必须完成Meta(原Facebook)企业账号注册及对应资质验证,这是你遇到「接口返回成功响应但手机收不到消息」问题的核心原因之一。
核心规则说明
这套API不对个人用户开放使用,所有调用方必须满足以下基础条件才能正常投递消息:
- 完成Meta企业主体认证,绑定正式的WhatsApp Business账号
- 应用处于开发测试阶段时,所有接收消息的手机号必须提前添加到后台的测试白名单,测试阶段白名单最多支持添加5个号码,非白名单号码发送请求时,接口会正常返回消息ID,但消息会被直接静默丢弃,不会实际投递
- 接口同步返回的成功响应仅代表请求格式合法、鉴权通过、服务器已受理请求,不代表消息已经成功投递到用户手机,最终投递状态需要配置Webhook接收状态回调才能获知
针对你当前情况的排查点
- 先检查应用状态
如果你当前的应用还处于开发模式,第一时间去Meta开发者后台对应应用的WhatsApp配置板块,把你要接收消息的923040165804号码按正确格式(带国家码,无特殊符号)加入测试白名单,重新发起请求测试,多数测试阶段收不到消息的问题都是这个原因导致的。 - 核对请求参数关联的资源
确认你请求URL中打码的那串号码ID,和你后台配置的测试/正式WhatsApp发送号码一一对应,错用其他账号的号码ID也会出现受理成功但不投递的情况。 - 不要忽略风控规则
测试阶段不要高频重复发相同内容的测试消息,触发内容风控或频次限制后,消息同样会被静默拦截,这类拦截不会在同步响应中返回错误码。
你贴出的PHP代码本身没有语法或参数结构问题,v13版本接口的请求头、POST参数格式都符合官方要求,不需要做代码层面的调整。
你收到的接口响应属于标准的请求受理成功响应,不代表投递成功:
{"messaging_product":"whatsapp","contacts":[{"input":"923040165804","wa_id":"923040165804"}],"messages":[{"id":"wamid.HBgMOTIzMDQwMTY1ODA0FQIAERgSOEM3RDJDRDMyMkFENkIzMTgyAA=="}]}
你当前使用的PHP代码逻辑正确,参考如下:
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://graph.facebook.com/v13.0/********/messages/', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>json_encode(array("to"=> $number, "messaging_product" => 'whatsapp', "recipient_type" => 'individual',"type"=>"text", 'text'=> array('body'=>'hello_wo332233rld','preview_url'=>'false'))), CURLOPT_HTTPHEADER => array( 'Authorization: Bearer '.$chatApiToken, 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); echo $response;
如果加完白名单还是收不到消息,优先配置Webhook监听消息状态回调,回调里会明确标注消息投递失败的具体原因,常见原因包括接收号码未注册WhatsApp、内容违规被拦截、账号资质不全被限制发送。
内容的提问来源于stack exchange,提问作者Mirza Abdul Rehman
相关产品推荐
相关产品推荐

