Php MailChimp API v2:验证错误

Php MailChimp API v2:验证错误,php,curl,mailchimp,Php,Curl,Mailchimp,我和Mailchimp之间有一个问题,我的电话似乎被拒绝并失败了。不知怎的,Mailchimp支持人员甚至看不到我试图用这段代码给他们打电话 $data = array( 'apikey' => "APIKEY-USXX", 'cid' => "CID", ); $data = json_encode($data); echo '<pre>'; var_dump($data); echo '</pre>'; $submit_url = "ht

我和Mailchimp之间有一个问题,我的电话似乎被拒绝并失败了。不知怎的,Mailchimp支持人员甚至看不到我试图用这段代码给他们打电话

$data = array(
    'apikey' => "APIKEY-USXX",
    'cid' => "CID",
);
$data = json_encode($data);
echo '<pre>';
var_dump($data);
echo '</pre>';

$submit_url = "https://us10.api.mailchimp.com/2.0/reports/opened.json";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $submit_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode($data));
$result = curl_exec($ch);
curl_close ($ch);

$info = json_decode(json_encode(json_decode($result)), true);
echo '<pre>';
var_dump($info);
echo '</pre>';
对我有用的最终代码:

curl_setopt($ch, CURLOPT_VERBOSE, true);

确保提交URL(us10)中的“dc”与API密钥的最后一部分匹配

还有。。。尝试将以下选项添加到通话中:

您还可以添加以下选项以更明确地调试调用


这里我想到的两件事:您是否尝试过使用官方的mcapiv2php包装器?也许你可以尝试指定json内容类型标题(这似乎不在你的代码中)你确定你必须对你的帖子字段进行url编码吗?这个答案以及@Parris Varney关于删除url_encode的评论帮助我检索到了正确的结果。谢谢大家!
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $submit_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.6');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);

$result = curl_exec($ch);
curl_close ($ch);
curl_setopt($ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.6');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);