2015-06-01 44 views
0

我对此相当新,所以希望它不是愚蠢的我错过了。我正在尝试为使用API​​的人创建订单。发布Json通过API使用卷曲,没有结果

我已经搜索了几个小时如何做到这一点在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

感谢您的支持!我改变了访问令牌,那是我非常愚蠢的。 我现在得到这个错误 - {“状态”:“500”,“错误”:“内部服务器错误”},似乎非常通用,任何想法? –