bubbstore / cnova-php-sdk
Fork CNOVA/Via Varejo 市场SDK官方版本
此软件包的官方仓库似乎已消失,因此已冻结该软件包。
dev-master
2019-02-14 21:17 UTC
Requires
- php: ~5.6|~7.0
This package is auto-updated.
Last update: 2020-10-15 02:22:41 UTC
README
Fork CNOVA/Via Varejo 市场SDK官方版本
安装
composer require bubbstore/cnova-php-sdk
为卖家API V2提供的PHP SDK
提供CNova提供的卖家API V2的PHP组件。
创建API客户端
在使用API之前,需要创建一个客户端,包含基本路径配置和访问凭证。
以下是一个示例代码:
require_once 'CNovaApiLojistaV2.php'; \cnova\client\Configuration::$apiKey['client_id'] = 'll0rQx9SSshr'; \cnova\client\Configuration::$apiKey['access_token'] = 'nllKgtXTMv0G'; $api_client = new \cnova\client\ApiClient('https://sandbox.cnova.com/api/v2');
辅助操作
处理API调用中接收到的错误结构
function deserializeErrors($errorsJson, $apiClient) { $errors = null; try { $errors = $apiClient->deserialize(json_decode($errorsJson), 'Errors'); } catch (\Exception $e) {} return $errors; }
格式化日期以进行特定期间的查询
function formatDateRange($initialDate, $finalDate, $apiClient) { $dtIni = '*'; $dtEnd = '*'; if ($initialDate != null && $initialDate instanceof \DateTime) { $dtIni = $initialDate->format(\DateTime::ISO8601); } if ($finalDate != null && $finalDate instanceof \DateTime) { $dtEnd = $finalDate->format(\DateTime::ISO8601); } return $dtIni . ',' . $dtEnd; }
可用API
以下介绍了Marketplace的主要操作和API示例。
Loads API
用于操作负载的API。
产品加载
$loads = new \cnova\LoadsApi($api_client); // Criação de um novo produto $product = new \cnova\model\Product(); $product->sku_seller_id = 'CEL_LGG4'; $product->product_seller_id = 'CEL'; $product->title = 'Produto de testes LG G4'; $product->description = '<h2>O novo produto de testes</h2>, LG G4'; $product->brand = 'LG'; $product->gtin = array('123456ft'); $product->categories = array ( 'Teste>API' ); $product->images = array ( 'http://img.g.org/img1.jpeg' ); $price = new \cnova\model\ProductLoadPrices(); $price->default = 1999.0; $price->offer = 1799.0; $product->price = $price; $stock = new \cnova\model\ProductLoadStock(); $stock->quantity = 100; $stock->cross_docking_time = 0; $product->stock = $stock; $dimensions = new \cnova\model\Dimensions(); $dimensions->weight = 10; $dimensions->length = 10; $dimensions->width = 10; $dimensions->height = 10; $product->dimensions = $dimensions; $product_attr = new \cnova\model\ProductAttribute(); $product_attr->name = 'cor'; $product_attr->value = 'Verde'; $product->attributes = array($product_attr); // Adiciona o novo produto na lista a ser enviada $products = array($product); try { // Envia a carga de produtos $loads->postProducts($products); } catch (\cnova\client\ApiException $e) { $errors = deserializeErrors($e->getResponseBody(), $api_client); if ($errors != null) { foreach ($errors->errors as $error) { echo ($error->code . ' - ' . $error->message . "\n"); } } else { echo ($e->getMessage()); } }
查询已发送的负载
$loads_api = new \cnova\LoadsApi($api_client); try { $get_products_response = $loads_api->getProducts(null, null, 0, 10); var_dump($get_products_response); } catch (\cnova\client\ApiException $e) { $errors = deserializeErrors($e->getResponseBody(), $api_client); if ($errors != null) { foreach ($errors->errors as $error) { echo ($error->code . ' - ' . $error->message . "\n"); } } else { echo ($e->getMessage()); } }
查询已发送负载中的特定产品
$loads_api = new \cnova\LoadsApi($api_client); try { $get_product_with_errors_response = $loads_api->getProduct('CEL_LGG4'); var_dump($get_product_with_errors_response); } catch (\cnova\client\ApiException $e) { $errors = deserializeErrors($e->getResponseBody(), $api_client); if ($errors != null) { foreach ($errors->errors as $error) { echo ($error->code . ' - ' . $error->message . "\n"); } } else { echo ($e->getMessage()); } }
使用Loads API修改一个或多个订单的跟踪信息
$loads_api = new \cnova\LoadsApi($api_client); $orders_trackings = new \cnova\model\OrdersTrackings(); $order_tracking = new \cnova\model\OrderTracking(); $order_id = new \cnova\model\OrderId(); $order_id->id = 123; $order_tracking->order = $order_id; $order_tracking->control_point = 'ABC'; $order_tracking->cte = '123'; $oif = new \cnova\model\OrderItemReference(); $oif->sku_seller_id = '123456'; $oif->quantity = 1; $order_tracking->items = array($oif); $order_tracking->occurred_at = new \DateTime('NOW'); $order_tracking->seller_delivery_id = '99995439701'; $order_tracking->number = '01092014'; $order_tracking->url = 'servico envio2'; $carrier = new \cnova\model\Carrier(); $carrier->cnpj = '72874279234'; $carrier->name = 'Sedex'; $order_tracking->carrier = $carrier; $invoice = new \cnova\model\Invoice(); $invoice->cnpj = '72874279234'; $invoice->number = '123'; $invoice->serie = '456'; $invoice->issued_at = new \DateTime('NOW'); $invoice->access_key = '01091111111111111111111111111111111111101092'; $invoice->link_xml = 'link xlm teste5'; $invoice->link_danfe = 'link nfe teste5'; $order_tracking->invoice = $invoice; $orders_trackings->trackings = array($order_tracking); try { $loads_api->postOrdersTrackingSent($orders_trackings); } catch (\cnova\client\ApiException $e) { $errors = deserializeErrors($e->getResponseBody(), $api_client); if ($errors != null) { foreach ($errors->errors as $error) { echo ($error->code . ' - ' . $error->message . "\n"); } } else { echo ($e->getMessage()); } }
Seller Items API
用于管理卖家发送的资源。
查询卖家商品
$seller_items_Api = new \cnova\SellerItemsApi($api_client); try { $get_seller_items_response = $seller_items_Api->getSellerItems('EX', 0, 100); var_dump($get_seller_items_response); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
修改价格
$seller_items_api = new \cnova\SellerItemsApi($api_client); try { $prices = new \cnova\model\Prices(); $prices->default = 100; $prices->offer = 100; $seller_items_api->putSellerItemPrices('31.0019', $prices); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
修改库存
$seller_items_api = new \cnova\SellerItemsApi($api_client); try { $stock = new \cnova\model\Stock(); $stock->quantity = 200; $stock->cross_docking_time = 0; $seller_items_api->putSellerItemStock('31.0019', $stock); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
Orders API
用于管理订单。
查询所有订单
$orders_api = new \cnova\OrdersApi($api_client); try { $get_orders_response = $orders_api->getOrders(0, 100); var_dump($get_orders_response); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
查询状态为“新”的所有订单
$orders_api = new \cnova\OrdersApi($api_client); try { $purchased_at = formatDateRange(null, new \DateTime('NOW'), $api_client); $get_orders_response = $orders_api->getOrdersByStatusNew($purchased_at, null, null, 0, 100); var_dump($get_orders_response); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
创建新的跟踪,通知订单已发送
$orders_api = new \cnova\OrdersApi($api_client); $new_tracking = new \cnova\model\NewTracking(); $new_tracking->items = array('23258312-1', '23258312-2'); $new_tracking->occurred_at = new \DateTime('NOW'); $new_tracking->seller_delivery_id = '99995439701'; $new_tracking->number = '"01092014'; $new_tracking->url = 'servico envio2'; $carrier = new \cnova\model\Carrier(); $carrier->cnpj = '72874279234'; $carrier->name = 'Sedex'; $new_tracking->carrier = $carrier; $invoice = new \cnova\model\Invoice(); $invoice->cnpj = '72874279234'; $invoice->number = '123'; $invoice->serie = '456'; $invoice->issued_at = new \DateTime('NOW'); $invoice->access_key = '01091111111111111111111111111111111111101092'; $invoice->link_xml = 'link xlm teste5'; $invoice->link_danfe = 'link nfe teste5'; $new_tracking->invoice = $invoice; try { $orders_api->postOrderTrackingSent($new_tracking, '1024101'); } catch (\cnova\client\ApiException $e) { $errors = deserializeErrors($e->getResponseBody(), $api_client); if ($errors != null) { foreach ($errors->errors as $error) { echo ($error->code . ' - ' . $error->message . "\n"); } } else { echo ($e->getMessage()); } }
查询状态为“已发送”的订单
$orders_api = new \cnova\OrdersApi($api_client); try { $get_orders_response = $orders_api->getOrdersByStatusSent(null, null, null, 0, 100); var_dump($get_orders_response); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
Tickets API
用于管理票据。
创建新的票据
$tickets_api = new cnova\TicketsApi($api_client); $new_ticket = new NewTicket(); $new_ticket->to = 'atendimento+OS_706000500000@mktp.extra.com.br'; $new_ticket->body = 'Corpo da mensagem do ticket'; try { $tickets_api->postTicket($new_ticket); } catch (\cnova\client\ApiException $e) { $errors = deserializeErrors($e->getResponseBody(), $api_client); if ($errors != null) { foreach ($errors->errors as $error) { echo ($error->code . ' - ' . $error->message . "\n"); } } else { echo ($e->getMessage()); } }
查询状态为“打开”的票据
$tickets_api = new cnova\TicketsApi($api_client); try { $tickets = $tickets_api->getTickets('opened', '439211092852', null, null, null, 0, 5); var_dump($tickets); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
修改票据状态
$tickets_api = new cnova\TicketsApi($api_client); try { $ticket_status = new \cnova\model\TicketStatus(); $ticket_status->ticket_status = 'Em Acompanhamento'; $tickets_api->putTicketStatus('123123', $ticket_status); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
Categories API
用于获取可用分类树。
查询可用分类
$categories_api = new cnova\CategoriesApi($api_client); try { $get_categories_response = $categories_api->getCategories(0, 5); foreach ($get_categories_response->categories as $categorie) { echo ($categorie->id . ' - ' . $categorie->name . "\n"); } } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
Sites API
用于获取站点列表。
查询可用站点
$sites_api = new \cnova\SitesApi($api_client); try { $get_sites_response = $sites_api->getSites(); var_dump($get_sites_response); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }
Warehouses API
用于获取仓库列表。
查询可用仓库
$warehouses_api = new \cnova\WarehousesApi($api_client); try { $get_warehouses_response = $warehouses_api->getWarehouses(); var_dump($get_warehouses_response); } catch (\cnova\client\ApiException $e) { echo ($e->getMessage()); }