#rest #curl #php-curl #shopify-app #shopify-api
Вопрос:
Я добавляю продукты в api-интерфейсы shopify для REST. Я использую curl и php, так как это мой любимый язык, но я открыт для использования других.
Это мой код для справки.
Он правильно добавляет продукт, название, текст и т.д., Но не вариант или варианты.
Вероятно, я что-то упускаю в построении запроса.
Спасибо
$products = $shopify-gt;rest_api('/admin/api/2021-10/products.json', array( "product"=gt;array( "title"=gt; "Bu 151", "body_html"=gt; "lt;stronggt;Good!lt;/stronggt;", "vendor"=gt; "AAAA", "product_type"=gt; "Snowboard", "published"=gt; true , "published_scope" =gt; "web", "variants"=gt;array( array( "id"=gt; 1070325028, "product_id"=gt; 1071559582, "title"=gt; "Default Title", "sku"=gt;"t_009", "price"=gt;20.00, "grams"=gt;200, "taxable"=gt;false, ) ) ) ), 'POST');
Остальные вызывали функцию:
public function rest_api($api_endpoint, $query = array(), $method = 'GET') { $url = 'https://' . $this-gt;api_key . ':' . $this-gt;password . '@' . $this-gt;shop_url . $api_endpoint; if (in_array($method, array('GET', 'DELETE') ) amp;amp; !is_null($query)) { $url = $url . '?' . http_build_query($query); } $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); if( $method != 'GET' amp;amp; in_array($method, array('POST', 'PUT'))) { if( is_array($query) ) $query = http_build_query($query); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); } $response = curl_exec($ch); $error = curl_error($ch); $errormsg = curl_error($ch); curl_close($ch); if($error) { return $errormsg; } else { $response = preg_split("/rnrn|nn|rr/", $response, 2); $headers = array(); $content = explode("n", $response[0]); $headers['status'] = $content[0]; array_shift($content); foreach ($content as $c) { $data = explode(":", $c); $headers[trim($data[0])] = trim($data[1]); } return array('headers' =gt; $headers, 'body' =gt; $response[1]); } }