7

v3 API を使用してリストに新しいメンバーを作成する際に問題が発生しました。私はjsonデータでポストリクエストを送信しています:

URL:

https://us10.api.mailchimp.com/3.0/lists/<list-id>/members

ヘッダー:

   Content-type: application/json
   Authorization: apikey <my-api-key>

Json本体:

{
  "status": "pending",
  "email_address": "emai@example.com",
  "merge_fields": {
    "FNAME": "John",
    "LNAME": "Smith",
    "REFERRER": "referrer",
    "REFERRAL": "referral"
  }
}

API ドキュメントとチュートリアルhttps://teamtreehouse.com/library/mailchimp-api/mailchimp-api/adding-new-members-to-your-listに基づいています。しかし、すべての応答は次のようになります。

{
  "type": "http://kb.mailchimp.com/api/error-docs/400-invalid-resource",
  "title": "Invalid Resource",
  "status": 400,
  "detail": "Your merge fields were invalid.",
  "instance": "",
  "errors": [
    {
      "field": "FNAME",
      "message": "Please enter a value"
    },
    {
      "field": "LNAME",
      "message": "Please enter a value"
    },
    {
      "field": "REFERRAL",
      "message": "Please enter a value"
    },
    {
      "field": "REFERRER",
      "message": "Please enter a value"
    }
  ]
}

私は何を間違っていますか?MailChimp API に問題がありますか?

4

4 に答える 4

5

ユーザーをリストに追加するときは、リストに「必須」のすべてのフィールドを追加する必要があります。フィールドを表示するには、メール チンプにログインし、[リスト] をクリックしてリストに移動します。[設定] ドロップダウンから [リスト フィールドと|MERGE| ] を選択します。 タグ」。

ここに画像の説明を入力

ニュースレターは、私が追加した追加のカスタム必須フィールドです。送信しないと、必須フィールドであるため、エラーが発生します。すべての追加フィールドは、'NEWSLETTER' などの merge_fields 配列内に追加する必要があります。

$dataCenter ='us10'; //last part of the api key
$auth = base64_encode( 'user:'.$apikey );
$data = array(
   'apikey'        => $apikey,
   'email_address' => $email,
   'status'        => 'subscribed',
   'merge_fields'  => ['NEWSLETTER' => '1']
);
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/f3e05535e8/members/');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
'Authorization: Basic '.$auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
$result = curl_exec($ch);

フォームにさらにカスタム フィールドがある場合は、次のように追加します。

'merge_fields'  => [
    'NEWSLETTER' => '1',
    'ANOTHERFIELD' => 'this is example data',
]

Mail Chimp のドキュメントには、配列が json に変換されると json オブジェクトになる「merge_fields」オブジェクトが必要であると書かれています。

http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/

于 2016-02-07T10:33:51.000 に答える
0

REQUIRED 差し込みタグを埋めるか、それらを削除する必要があります。

注: REQUIRED 差し込み項目を削除した後、遅延が発生する可能性があります。

私はどのくらいの時間か確認しませんでした.リストを複製した後、必要なマージタグが必要であることを確認できます.

于 2016-08-18T01:53:37.823 に答える