2016-03-24 6 views
0

Мы обновляем нашу реализацию Mailchimp с 1,3 до 3,0. Мы успешно обновили наш код, чтобы подписаться на список. Теперь мы пытаемся добавить заказ электронной торговли. В API v1.3 мы сделали это с помощью функции campaignEcommOrderAdd. Я нашел функцию с этим в v3.0: /ecommerce/stores/{store_id}/orders (website link).Всегда добавляйте ошибки 404 при добавлении заказов электронной торговли с использованием Mailchimp API 3.0

Но я не могу заставить его работать. При отправке в Mailchimp я получаю ошибку 404, но я не знаю, что я делаю неправильно. Ниже мой код.

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

Это выход моего $json вар:

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

И это ошибка я получаю:

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 => '' 
} 

ответ

0

Не зная, чем больше я хотел бы попробовать кое-что здесь. Один (возможно, вы уже пробовали это, но проверьте вывод $url), чтобы убедиться, что все, что правильно установлено. Во-вторых, я хотел бы убедиться, что экземпляр магазина вы публикуете этот порядок достижим/существует, делая запрос GET к, что бы:

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

Наконец, я бы убедиться, что обе кампании и продукт экземпляры, связанные с порядок достижимы с помощью:

  • GET https: // {} постоянного тока .api.mailchimp.com/3.0/кампании/641657

  • GET https: // {} .api.mailchimp постоянного тока .com/3.0/ecommerce/stores/{store_id}/products/4427

Кроме того, если вы делаете много обновления 3.0 для вашего приложения может оказаться полезным для реализации библиотеки, которая абстрагирует из много этого кода я использую этот один:

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

Мой рейтинг репутации не позволит мне размещать больше ссылок на эти конечные точки, но их следует легко найти в документации MailChimp. Надеюсь, что это поможет.

+1

Спасибо за ваш комментарий! Кажется, я не могу найти время проверить это. Я в конце концов, но я хотел бы поблагодарить вас заранее за то, что вы нашли время ответить на мой вопрос. – Femke

+0

Без проблем друг! Надеюсь, поможет. – jhut89