2015-10-06 12 views
6

Ich habe ein Problem mit dem Erstellen neuer Mitglieder in der Liste mit v3 API. Ich schicke Post-Anforderung mit json Daten:Erstellen eines neuen Abonnenten Validierungsfehler mit MailChimp API v3.0

url:

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

Header:

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

Json Körper:

{ 
    "status": "pending", 
    "email_address": "[email protected]", 
    "merge_fields": { 
    "FNAME": "John", 
    "LNAME": "Smith", 
    "REFERRER": "referrer", 
    "REFERRAL": "referral" 
    } 
} 

Es basiert auf API-Dokumentation und Tutorials https://teamtreehouse.com/library/mailchimp-api/mailchimp-api/adding-new-members-to-your-list . Aber jede Antwort sieht so aus:

{ 
    "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" 
    } 
    ] 
} 

Was mache ich falsch? Ist es ein Problem mit der MailChimp API?

+0

Ich habe versucht, Ihre JSON in MailChimp Spielplatz und zumindest scheint es in dort zu funktionieren https://us5.api.mailchimp.com/playground/ – lehtu

+0

Wie senden Sie diese Daten an diesen Endpunkt? mit Curl oder was? Weil diese Errora-Nachrichten ziemlich aussagekräftig sind, dass sie nicht Ihre merge_fields-Werte, sondern nur Schlüssel erhalten. – lehtu

Antwort

2

Wenn Sie einen Benutzer zu einer Liste hinzufügen, müssen Sie alle Felder hinzufügen, die in Ihrer Liste "erforderlich" sind. Um Ihre Felder zu sehen, melden Sie sich bei Mail Schimpansen klicken Sie auf "Listen" und dann in Ihre Liste. Wählen Sie im Dropdown-Menü "Einstellungen" die Option "Listenfelder" und dann | MERGE | Tags '.

enter image description here

Newsletter ist ein zusätzliches benutzerdefinierten Pflichtfelder, die ich hinzugefügt. Wenn ich es nicht sende, erhalte ich den Fehler, den Sie haben, weil es ein erforderliches Feld ist. Alle zusätzlichen Felder müssen innerhalb des merge_fields-Arrays wie "NEWSLETTER" hinzugefügt werden.

$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); 

Wenn ich in meiner Form mehr benutzerdefinierte Felder hätte, würde ich sie wie so hinzufügen:

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

Mail-Schimpanse Dokumentation sagt, dass es ein Objekt ‚merge_fields‘ erfordert, die, wenn das Array umgewandelt wird es JSon wird ein JSON-Objekt.

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

0

Sie benötigen ERFORDERLICH fusionieren Tags zu füllen oder zu entfernen,

Hinweis: Es gibt eine (mögliche) eine Verzögerung nach dem obligatorischen Felder verschmelzen zu entfernen.

Ich blieb nicht um zu sehen, wie lange, ich kann bestätigen, nach der Replikation der Liste, die erforderliche Merge-Tags erforderlich sind.

1

Zusätzlich (zu fehlenden Pflichtfelder) stieß ich auf dieses Problem, indem ich versuche, E-Mails mit Großbuchstaben hinzuzufügen. Dies kann auch auftreten, wenn die zu sendenden Daten ein falsches Format haben.

0

Ich denke, der Json ist in Ordnung. Obwohl es merge Felder heißt, ist die Test-E-Mail-Adresse nicht geeignet.

kann ich einen 400-Fehlercode auf zwei Arten machen:

  • Versuch, eine E-Mail-Adresse hinzuzufügen, die auf der Liste ist bereits
  • Versuch, eine falsche Adresse hinzuzufügen ([email protected]), dass validiert nicht oder etwas ...

Wenn Sie eine eine gefälschte Adresse @ freddiesjokes.com
ex // [email protected]

Ich habe versucht, das @ example.com verwenden zu machen, hoffe, das hilft Zukunft Menschen (Beantwortet fast 2 Jahre nach gefragt)