bigcommerce api php получить купон на заказ

Мы переходим в BC, и я получаю заказы через API, используя функцию usexml, так как мне нужно вывести файл для каждого заказа. Я успешно получал заказы, продукты в заказах и адрес доставки от BC. Мне пришлось добавить ряд функций в библиотеку bigcommerce.php, чтобы сделать это, поскольку на них можно ссылаться в онлайн-документах, на самом деле их нет в библиотеке. Мой последний шаг — получение купонов, связанных с заказом. Функции, которые я реализовал в библиотеке:

// Функция отсутствует в добавленной библиотеке 030215 PH — Получить товары по заказу

public static function getOrderProducts($id)
{
return self::getCollection('/orders/' . $id . '/products','Order');
}

// Function missing form library added 030215 - Get Shipping adds on order

public static function getOrderShippingAddresses($id)
{
return self::getCollection('/orders/' . $id .'/shipping_addresses','Order');
}

// Добавлена ​​функция отсутствующей библиотеки форм 030215 — Получить купоны на заказ

    public static function getOrderCoupons($id)
{
return self::getCollection('/orders/' . $id . '/coupons','Order');
}

Хотя схожий по синтаксису, я не могу заставить функцию getOrderCoupons возвращать информацию о купоне, чтобы заменить ссылку, предоставленную в обычном возвращении getOrders.

Я использую ту же логику для купона, что и для получения адресов доставки, как показано ниже. Любые решения приветствуются.

N.Bigcommerce :: useXML (); используется, поэтому используются строки XML

      $shipping_xml = Bigcommerce::getOrderShippingAddresses($order->id);
$shippings = simplexml_load_string($shipping_xml);

// Для каждого заказа должен быть указан только один адрес доставки

      foreach($shippings as $shipping) {
$xmlship = $shipping->asXML();
$domship = new DOMDocument();
$domship = dom_import_simplexml($shipping);
$domordship = dom_import_simplexml($order->shipping_addresses);
$domship = $domordship->ownerDocument->importNode($domship, TRUE);
$domordship->appendChild($domship);
}

$coupon_xml = Bigcommerce::getOrderCoupons($order->id);
$coupons = simplexml_load_string($coupon_xml);

// Должен иметь только один купон на заказ

    foreach($coupons as $coupon) {
$xmlcoup = $coupon->asXML();
$domcoup = new DOMDocument();
$domcoup = dom_import_simplexml($coupon);
$domordcoup = dom_import_simplexml($order->coupons);
$domcoup = $domordcoup->ownerDocument->importNode($domcoup, TRUE);
$domordcoup->appendChild($domcoup);
}

3

Решение

Я использую API Bigcommerce и могу получать заказы, купоны, купоны по идентификатору, адреса доставки, но я использую только класс Connection.php с моими собственными методами для их получения.

Вы должны отследить и проверить правильность URL-адреса curl, выполнив var_dum ($ url);

метод в connection.php // Bigcommerce \ Api \ Connection

public function get($url, $query=false)
{
$this->initializeRequest();

if (is_array($query)) {
$url .= '?' . http_build_query($query);
}

var_dum($url);//**CHECK IF THIS URL IS BUILT CORRECTLY**//

curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($this->curl, CURLOPT_URL, $url);
curl_setopt($this->curl, CURLOPT_HTTPGET, true);
curl_exec($this->curl);

return $this->handleResponse();
}

Вы также можете проверить ответ в connection.php

private function handleResponse()
{
if (curl_errno($this->curl)) {

throw new NetworkError(curl_error($this->curl), curl_errno($this->curl));
}
var_dump(body);//CHECK THIS LINE
$body = ($this->useXml) ? $this->getBody() : json_decode($this->getBody());

$status = $this->getStatus();
var_dump(status);//CHECK THIS LINE
if ($status >= 400 && $status <= 499) {
if ($this->failOnError) {
throw new ClientError($body, $status);
} else {
$this->lastError = $body;
return false;
}
} elseif ($status >= 500 && $status <= 599) {
if ($this->failOnError) {
throw new ServerError($body, $status);
} else {
$this->lastError = $body;
return false;
}
}

if ($this->followLocation) {
$this->followRedirectPath();
}
var_dump(body);//CHECK THIS LINE
return $body;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]