Im, используя плагин для CakePHP, чтобы позвонить, чтобы получить определенные заказы. Я могу вызывать все заказы с определенными полями, но мне было интересно, как мне сделать звонок, чтобы получить заказы с определенным именем или order_number? Вот источник звонка Shopify. Его уже заверены и все:Чтобы узнать, как получить заказ по имени или номеру заказа
public function call($method, $path, $params=array())
{
if (!$this->isAuthorized())
return;
$password = $this->is_private_app ? $this->secret : md5($this->secret.$this->ShopifyAuth->token);
$baseurl = "https://{$this->api_key}:[email protected]{$this->ShopifyAuth->shop_domain}/";
$url = $baseurl.ltrim($path, '/');
$query = in_array($method, array('GET','DELETE')) ? $params : array();
$payload = in_array($method, array('POST','PUT')) ? stripslashes(json_encode($params)) : array();
$request_headers = in_array($method, array('POST','PUT')) ? array("Content-Type: application/json; charset=utf-8", 'Expect:') : array();
$request_headers[] = 'X-Shopify-Access-Token: ' . $this->ShopifyAuth->token;
list($response_body, $response_headers) = $this->Curl->HttpRequest($method, $url, $query, $payload, $request_headers);
$this->last_response_headers = $response_headers;
$response = json_decode($response_body, true);
if (isset($response['errors']) or ($this->last_response_headers['http_status_code'] >= 400))
throw new ShopifyApiException($method, $path, $params, $this->last_response_headers, $response);
return (is_array($response) and (count($response) > 0)) ? array_shift($response) : $response;
}
private function shopApiCallLimitParam($index)
{
if ($this->last_response_headers == null)
{
return 0;
}
$params = explode('/', $this->last_response_headers['http_x_shopify_shop_api_call_limit']);
return (int) $params[$index];
}
... и код, который делает GET
вызов:
// I only want the id and title of the collections
$fields = "fields=name,id,status,financial_status,fulfillment_status,billing_address,customer";
// get list of collections
$custom_collections = $this->ShopifyAPI->call('GET', "/admin/orders.json", $fields);
$this->set('collections', $custom_collections);
Я думаю, что я не хватает места, где я могу поставить условия для вызова получить определенные заказы. Я уже прочитал документацию API, но не могу получить ответ.
Я попытался положить ?name=%231001
на URL после .json
, чтобы попытаться получить заказ # 1001, но она приносит обратно пустой массив.
Затем я попробовал ? Order_number = 1001, но он приносит мне каждый заказ вместе с 1001 D: Это действительно сбивает с толку, может ли кто-нибудь мне помочь?
Заранее спасибо.
Если вам придется вручную избежать # в строке запроса, это означает, что то api-вызов проходит через исходный вход. Реальное исправление должно быть в вашем классе HttpRequest, который должен быть передан в URL-адресах запроса URL-адреса. http://php.net/manual/en/function.http-build-query.php – txyoji
Фактически Im, кодирующий #, вызывает префикс, который наш магазин использует для имени заказов. У других может быть другой префикс номера заказа. И кодировка # on http будет больше причиной работы не каждый раз, когда я буду отправлять имя в полях ShopfyAPI для вызова. –
Я понимаю имя = # 000000 - это формат. Я говорю, что если вам нужно вручную избежать значения (используя% 23 вместо #), это означает, что любое значение в вашей строке запроса с зарезервированным символом (пробел, #? &) Не будет закодировано правильно. Исправление этой проблемы с кодировкой в методе -> call() означает, что вам не нужно беспокоиться о специальных символах в ваших данных «$ fields». http_build_query() может позаботиться об этой детали для вас. – txyoji