繁体   English   中英

PHP 和 Shopify API 连接

[英]PHP and Shopify API connection

我正在尝试为一个项目学习 shopify api。 在他们的论坛上尝试了一些粘贴的代码,使我的代码适应他们的。

该文档说通过提供以下内容以这种方式进行身份验证:

https://{用户名}:{密码}@{shop}.myshopify.com/admin/api/{api-version}/{resource}.json

  • {username} — 您生成的 API 密钥
  • {password} — API 密码
  • {shop} - 您为开发商店输入的名称
  • {api-version} — 您要使用的支持的 API 版本
  • {resource} — 来自 REST admin API 的资源端点

我正在尝试对商店中的所有订单发出 GET 请求。

/ info
$API_KEY = '75c89bf******ea919ce****7702';
$PASSWORD = '2061******82d2802**f***9403';
$STORE_URL = '*****-na-***-c***.myshopify.com';

$AUTHORIZATION = base64_encode($API_KEY . ':' . $PASSWORD);


$url = 'https://' . $API_KEY . ':' . $PASSWORD . '@' . $STORE_URL . '/admin/api/2020-01/orders.json';


$header = array();
$header[] = 'Accept: application/json';
$header[] = 'Content-Type: application/json';
$header[] = 'Authorization: Basic ' . $AUTHORIZATION;

$session = curl_init();

//options
curl_setopt($session, CURLOPT_URL, $url);
curl_setopt($session, CURLOPT_HTTPHEADER, $header);
curl_setopt($session, CURLOPT_GET, 1);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

//exec
$response = curl_exec($session);
curl_close($session);

print_r($response);

// error
if($response === false)
{
    print_r('Curl error: ');
}

该代码根本不起作用,没有任何错误代码,完全空白,仅显示第一个项目回显。 我验证了我的 API 密钥并且它们正在工作,我可以将它们手动插入到 chrome 中。

您不需要授权标头。 您的代码应如下所示:

$API_KEY = '75c89bf******ea919ce****7702';
$PASSWORD = '2061******82d2802ff***9403';
$STORE_URL = 'porcao-na-sua-casa.myshopify.com';

$url = 'https://' . $API_KEY . ':' . $PASSWORD . '@' . $STORE_URL . '/admin/api/2020-01/orders.json';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');


$headers = array();
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE) //can check status code, requst successfully processed if return 200
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

我在终端运行时发现问题,没有在这台机器上安装 php-curl。 当 curl 正确安装时,@Kshitij 解决方案就像我的一样有效。

// Provide the required parameters like store url , endpoint etc.
   
 function shopifyApiCall($STORE_URL ,$query = [], $endpoint, $API_KEY, $PASSWORD){
    //API_Key : your API key, you can get it from your APP setup.
   //Password : Your Access Token
    $url = 'https://' . $API_KEY . ':' . $PASSWORD . '@' . $STORE_URL . $endpoint;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode($query));
    $headers = array();
    $headers[] = 'Content-Type: application/json';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
        $response = curl_exec($ch);
        $error_number = curl_errno($ch);
        $error_message = curl_error($ch);
        curl_close($ch);
    
        // Return an error is cURL has a problem
        if ($error_number) {
            return $error_message;
        } else {
    
            // No error, return Shopify's response by parsing out the body and the headers
            $response = preg_split("/\r\n\r\n|\n\n|\r\r/", $response, 2);
    
            // Convert headers into an array
            $headers = array();
            $header_data = explode("\n",$response[0]);
            $headers['status'] = $header_data[0]; // Does not contain a key, have to explicitly set
            array_shift($header_data); // Remove status, we've already set it above
            foreach($header_data as $part) {
                $h = explode(":", $part);
                $headers[trim($h[0])] = trim($h[1]);
            }
    
            // Return headers and Shopify's response
            //return array('headers' => $headers, 'response' => $response[1]);changed headers
            return array('headers' => $header_data, 'response' => $response[1]);
    
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM