2016-03-24 3 views
0

Wir aktualisieren unsere Mailchimp-Implementierung von 1.3 auf 3.0. Wir haben unseren Code erfolgreich aktualisiert, um jemanden auf eine Liste zu setzen. Jetzt versuchen wir, eine E-Commerce-Bestellung hinzuzufügen. In API v1.3 haben wir dies mit der Funktion campaignEcommOrderAdd gemacht. Ich fand die Funktion dazu mit in v3.0: /ecommerce/stores/{store_id}/orders (website link).Beim Hinzufügen von E-Commerce-Bestellungen mit Mailchimp API 3.0 wird immer der Fehler 404 angezeigt.

Aber ich kann es nicht zur Arbeit bringen. Wenn ich auf Mailchimp poste, erhalte ich einen Fehler 404, aber ich weiß nicht, was ich falsch mache. Unten ist mein Code.

$apiKey = "xxx"; //xxx for privacy reasons 

$json = json_encode(array(
    'id'   => $mailchimp_order['id'], 
    'customer'  => array(
     'id' => $mailchimp_order['email_id'], 
    ), 
    'campaign_id' => $mailchimp_order['campaign_id'], 
    'currency_code' => "EUR", 
    'order_total' => $mailchimp_order['total'], 
    'tax_total'  => $mailchimp_order['tax'], 
    'lines'   => $mailchimp_order['items'], 
)); 

$dataCenter = substr($apiKey,strpos($apiKey,'-')+1); 
$url = 'https://'.$dataCenter.'.api.mailchimp.com/3.0/ecommerce/stores/'.$mailchimp_order['store_id'].'/orders'; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 

$result = curl_exec($ch); 
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 

Dies ist die Ausgabe meiner $json var:

{ 
    "id":"10000003", 
    "customer":{ 
     "id":"a90f52f710" 
    }, 
    "campaign_id":"641657", 
    "currency_code":"EUR", 
    "order_total":"56.90", 
    "tax_total":"47.02", 
    "lines":[ 
     { 
      "id":"224", 
      "product_id":"4427", 
      "product_title":"Product name", 
      "product_variant_id":0, 
      "quantity":"1", 
      "price":"49.95" 
     } 
    ] 
} 

Und das ist der Fehler, den ich bekommen:

object(stdClass) { 
    type => 'http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/' 
    title => 'Resource Not Found' 
    status => (int) 404 
    detail => 'The requested resource could not be found.' 
    instance => '' 
} 

Antwort

0

Ohne mehr zu wissen, ich würde hier ein paar Dinge versuchen. Eins (Sie haben das vielleicht schon versucht, aber überprüfen Sie die Ausgabe von $url), um sicherzustellen, dass alles richtig gesetzt wird. Zweitens würde ich sicherstellen, dass die Speicherinstanz Sie diesen Auftrag einer Mitteilung verfassen, ist erreichbar/indem sie eine GET-Anforderung existiert, was wäre:

$url = 'https://'.$dataCenter.'.api.mailchimp.com/3.0/ecommerce/stores/'.$mailchimp_order['store_id']' 

Schließlich würde ich das überprüfen sowohl die Kampagne und Produktinstanzen im Zusammenhang mit die Reihenfolge sind erreichbar mit:

  • GET https: // {dc} .api.mailchimp.com/3.0/Kampagnen/641657

  • GET https: // {dc} .api.mailchimp .com/3.0/e-commerce/stores/{store_id}/produkte/4427

Auch wenn Sie eine Menge von dem Update auf 3.0 für Ihre Anwendung tun, könnte es nützlich sein, eine Bibliothek zu implementieren, die eine Menge von diesem Code abstrahiert aus Ich benutze diese:

https://github.com/Jhut89/Mailchimp-API-3.0-PHP

Mein Reputationswert lässt mich nicht mehr Links zu diesen Endpunkten posten, aber sie sollten leicht in der MailChimp-Dokumentation zu finden sein. Hoffnung, die hilft.

+1

Vielen Dank für Ihren Kommentar! Ich kann nicht die Zeit finden, das zu überprüfen. Ich werde irgendwann, aber ich wollte Ihnen im Voraus dafür danken, dass Sie sich die Zeit genommen haben, meine Frage zu beantworten – Femke

+0

Kein Problem, Freund! Ich hoffe es hilft. – jhut89

Verwandte Themen