2015-06-01 3 views
0

Я довольно новичок в этом, поэтому надеюсь, что это не что-то глупое, я пропущу. Я пытаюсь создать заказ для кого-то, использующего API.Опубликовать Json через API с помощью curl, нет результатов

Я искал часы, как это сделать на stackoverflow, и все сообщения были большой помощью. Но теперь я ударил кирпичную стену. Этот код, похоже, не вызывает ошибок при посещении страницы PHP, и он не берет этот элемент в стороне от акций, как это было сделано.

Я пропустил что-то действительно простое, также есть способ проверить, работает ли он?

<?php 
 

 
$today = date("D M j Y G:i:s T"); 
 
$data = array(
 
\t "order" => [ 
 
\t "order_number" => "", 
 
      "company_id" => 690094, 
 
      "billing_address_id" => 1018327, 
 
      "shipping_address_id" => 1018327, 
 
      "stock_location_id" => 16377, 
 
      "ship_at" => $today, 
 
      "issued_at" => $today, 
 
      "tax_type" => "exclusive", 
 
      "payment_status" => "unpaid", 
 
      "fulfillment_status" => "shipped", 
 
      "email" => null, 
 
      "reference_number" => 7784, 
 
      "status" => "fulfilled", 
 
      "order_line_items" => [ 
 
       "quantity" => 1, "discount" => null, "price" => 1, 
 
       "tax_rate_override" => null, "freeform" => false, 
 
       "variant_id" => 6983077 
 
      ], 
 
     ], 
 
); 
 

 
$url ="https://api.tradegecko.com/orders/"; 
 
$str_data = json_encode($data); 
 

 
function sendPostData($url, $str_data){ 
 
    $ch = curl_init($url); 
 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
 
    'Content-Type: application/json', 
 
    'Accept: application/json',                                
 
\t 'http' => array(
 
     'header' => "Authorization: Bearer 872ed5e72dfc7e4e0adaa7c663cab7d81415078fdbe4f486d085b718c93b3eb3") 
 
    )                  
 
); 
 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$str_data); 
 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
 
    $result = curl_exec($ch); 
 
    curl_close($ch); // Seems like good practice 
 
    return $result; 
 
} 
 

 
echo sendPostData($url, $str_data); 
 
?>

ответ

0

Установка заголовка Authorization не делается в правильном направлении. Это должно быть сделано как в:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json', 
    'Accept: application/json',                                
    'Authorization: Bearer 872ed5e72dfc7e4e0adaa7c663cab7d81415078fdbe4f486d085b718c93b3eb3') 
); 

Для целей отладки полезно добавить:

curl_setopt($ch, CURLOPT_VERBOSE, 1); 

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

+0

Спасибо за это! Я изменил токен доступа, это было очень глупо. Я получаю эту ошибку сейчас - {"status": "500", "error": "Internal Server Error"}, кажется очень общим, любые идеи? –

Смежные вопросы