2015-09-21 34 views
3

我爲我的書店使用postmates API。 我正在使用他們的測試憑據,但我不知道如何使用它。請引導我如何進行基本的api調用。 我正在使用PHP。我想發送數據後使用捲曲 謝謝Postmate API不起作用

<?php 
 
    $url = "https://api.postmates.com/v1/customers/my-customer-key/delivery_quotes"; 
 
    $uname = "my-api-key"; 
 
    $pwd = null; 
 
    $data = array(
 
     'dropoff_address' => '20 McAllister St, San Francisco, CA 94102', 
 
     'pickup_address' => '101 Market St, San Francisco, CA 94105', 
 
    ); 
 

 
    $ch = curl_init(); 
 

 
    curl_setopt($ch, CURLOPT_URL, $url); 
 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 
 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
 
    curl_setopt($ch, CURLOPT_USERPWD, "$uname:$pwd"); 
 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
 
    curl_setopt($process, CURLOPT_POST, 1); 
 
    curl_setopt($process, CURLOPT_POSTFIELDS, $data); 
 
    
 
     $output = curl_exec($ch); 
 
     if (curl_errno($ch)) { 
 
      echo 'error:' . curl_error($ch); 
 
     } 
 
     curl_close($ch); 
 

 
     echo $output; 
 
?>

+0

你能否提供一個'postmates'的鏈接來拯救人們試圖追捕它? –

+0

它是[this](https://postmates.com/developer/docs)?文檔看起來相當不錯 - 是否存在您遇到問題的特定問題? –

+0

我是初學者,我想知道,我如何在postmate上驗證自己?我正在使用cUrl發送請求,並且還設置了標題,但是我收到了「invalid_authorization_error」。可以請示例在PHP中的示例代碼? –

回答

2

the documentation

的Postmates API需要通過HTTP基本認證頭認證。您的API密鑰應作爲用戶名包含在內。密碼應保留爲空。

這意味着你需要做的事情如下:

$curl = curl_init(); 
$url = "http://whatever-this-should-be"; 
curl_setopt($curl, CURLOPT_URL, $url); 
$username = "your-api-key-goes-here"; 
$password = ""; // leave this blank, as per the doc 
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password"); 
$res = curl_exec($curl); 

你需要調整其他選項的捲曲處理輸出等。但是這是你的核心」我需要。

如果您想在稍高(即更容易)的水平上完成所有這些工作,您可能還想查看​​。

更新:請注意,這只是示例代碼。我不會主張將您的API密鑰存儲在生產代碼的腳本文件中!

+0

謝謝你的代碼,我已經改變了我的代碼,但是現在我得到了這個錯誤, string(394)「HTTP/1.1 100 Continue HTTP/1.1 400 BAD REQUEST Content-Type:appli陽離子/ json –

+0

在它上面我更新的代碼。 –

1

我已經使這個代碼,它工作正常。謝謝大家回答我的問題。

$url = "https://api.postmates.com/v1/customers/my-customer-id/delivery_quotes"; 

    $uname = "my-api-key"; 
    $pwd = null; 

    $process = curl_init($url); 
    curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded','Accept: application/json')); 
    curl_setopt($process, CURLOPT_HEADER, 1); 
    curl_setopt($process, CURLOPT_USERPWD, $uname . ":" . $pwd); 
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
    curl_setopt($process, CURLOPT_POST, 1); 
    curl_setopt($process, CURLOPT_POSTFIELDS, "dropoff_address=20 McAllister St, San Francisco, CA 94102&pickup_address=101 Market St, San Francisco, CA 94105"); 
    curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false); 
    $return = curl_exec($process); 

    curl_close($process); 

    var_dump($return);