【问题标题】:Using MailChimp API V2 without Github error使用没有 Github 错误的 MailChimp API V2
【发布时间】:2015-06-16 13:16:46
【问题描述】:

我已经使用 MailChimp(旧版本)做了很多工作,但由于一些新功能,我最近不得不更新到较新的 V2。现在我无法让我的代码工作,无论我在哪里搜索,我能找到的唯一解决方案是在 GitHub 存储库https://github.com/mailchimp/mcapi2-php-examples 的帮助下,它在这个项目中无法工作。

我的代码:

<?php
include "../../system/function/db.php";

$espid = urlencode(make_safe($_GET['espid']));
$apikey = urlencode($_GET['apikey']);
$usX = explode("-", $apikey);
$listid = urldecode($_GET['listid']);
$data = array(
        'apikey'=> $apikey,
        'filters' => array( 'list_id' => $listid ),
    );
$payload = json_encode($data);
$submit_url = "http://" . $usX[1] . ".api.mailchimp.com/1.3/?method=campaigns";
$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($payload));
$result = curl_exec($ch);
curl_close ($ch);
$data = json_decode(json_encode(json_decode($result)), true);
$data = $data['data'];
foreach ($data as $id) {
    $ids .= $id['id'] . ",";
}
$campaigns = explode(",", $ids);


foreach ($campaigns as $campaign) {
    if (!empty($campaign)) {
        $data = array(
                'apikey'=> $apikey,
                'cid' => $campaign,
            );
        $payload = json_encode($data);

        $submit_url = "https://" . $usX[1] . ".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($payload));
        $result = curl_exec($ch);
        curl_close ($ch);
        echo '<pre>'; var_dump($result); echo '</pre>';


    }
}

?> 

错误:

string(97) "{"status":"error","code":-100,"name":"ValidationError","error":"You must specify a apikey value"}"

我尝试用 API 密钥的字符串替换变量,这并没有做任何不同的事情 - 我不知道我是否可能将信息“错误”发送到 MailChimp 服务器。

你们能从这里帮助我吗?希望您的理解和感谢!

【问题讨论】:

    标签: php api mailchimp


    【解决方案1】:

    您不需要对您的 CURLOPT_POSTFIELDS 数据进行 URL 编码,这些数据已经过 JSON 编码。只需使用原始的 $payload 变量,它应该可以工作。 (在此示例中,您的两个调用都是如此)。

    【讨论】:

      猜你喜欢
      • 2015-10-16
      • 2014-10-14
      • 2017-07-08
      • 2014-05-23
      • 2017-08-16
      • 2014-07-17
      • 2018-03-18
      • 2020-10-19
      • 2021-04-24
      相关资源
      最近更新 更多