simplia / api
此包最新版本(0.1.18)没有提供许可证信息。
0.1.18
2024-09-09 14:43 UTC
Requires
- php: >=7.4
- ext-json: *
- nyholm/psr7: ^1.4
- psr/http-client: ^1.0
This package is auto-updated.
Last update: 2024-09-10 08:27:38 UTC
README
Simplia.cz SDK pro API eshopů(https://api.simplia.cz/)针对内部集成。自动从 OpenAPI 定义生成。
相比直接使用 REST API 的优点
- 支持静态分析(PHPStan)和调试问题,无需调用 API
- 更简单的测试(与 SDK 的通信比整个 HTTP 通信更容易模拟)
- 编辑器中的自动完成
安装
composer require simplia/api:dev-master
贡献
整个仓库自动从 OpenAPI 定义生成,需要向生成器发送 pull request(或只需在此 issue 中描述问题)
术语
- ___Endpoint - 操作类别
- ___Request - 输出参数,如排序、过滤器等
- ___FieldConfig - 从后端获取的字段列表
- ___Input - 操作的输入,例如新产品描述等,作为 API 请求体发送
示例
创建新订单
use \Simplia\Api\Api; use \Simplia\Api\Input\AddressTypeApiInput; use \Simplia\Api\Input\OrderCreateTypeApiInput; use \Simplia\Api\Input\OrderItemTypeApiInput; use \Simplia\Api\Entity\OrderApiEntity; $api = Api::withUsernameAuth($httpClient, 'demo2.simpliashop.cz', 'api_user', '*********'); $order = $api->getOrdersEndpoint()->create( OrderCreateTypeApiInput::create() ->setDeliveryAddress( AddressTypeApiInput::create() ->setFirstName('John') ->setLastName('Smith') ->setCity('Prague') ->setEmail('info@example.org') ) ->setCustomerNote('customer note') ->setItems([ OrderItemTypeApiInput::create() ->setItemId(123) ->setQuantity(2) ->setPriceVat(200) // unit price with vat ]), OrderApiEntity::createFieldConfig() ->withId() ); echo $order->getId();
更改订单状态
use \Simplia\Api\Api; use \Simplia\Api\Input\OrderStatusTypeApiInput; $api = Api::withUsernameAuth($httpClient, 'demo2.simpliashop.cz', 'api_user', '*********'); $api->getOrdersEndpoint()->updateStatus( '123', OrderStatusTypeApiInput::create() ->setStatusId(4) );
按名称列出具有特定状态的订单
use \Simplia\Api\Api; use \Simplia\Api\Entity\ContactApiEntity; use \Simplia\Api\Entity\OrderApiEntity; use \Simplia\Api\Request\OrderApiRequest; $api = Api::withUsernameAuth($httpClient, 'demo2.simpliashop.cz', 'api_user', '*********'); $orders = $api->getOrdersEndpoint()->iterate( OrderApiRequest::create() ->whereStatus(1), OrderApiEntity::createFieldConfig() ->withId() ->withDeliveryAddress( ContactApiEntity::createFieldConfig() ->withCompanyName() ) ); foreach ($orders as $order) { echo $order->getId(); echo $order->getDeliveryAddress()->getCompanyName(); }
获取单个订单
use \Simplia\Api\Api; use \Simplia\Api\Entity\ContactApiEntity; use \Simplia\Api\Entity\OrderApiEntity; $api = Api::withUsernameAuth($httpClient, 'demo2.simpliashop.cz', 'api_user', '*********'); $order = $api->getOrdersEndpoint()->get( '123', OrderApiEntity::createFieldConfig() ->withId() ->withDeliveryAddress( ContactApiEntity::createFieldConfig() ->withCompanyName() ) ); echo $order->getId(); echo $order->getDeliveryAddress()->getCompanyName(); echo $order->getCurrency(); // throws error because currency with wasn't loaded from API (is not defined in field config)
按主题列出文章
use \Simplia\Api\Api; use \Simplia\Api\Request\ArticleApiRequest; use \Simplia\Api\Entity\ArticleApiEntity; $api = Api::withUsernameAuth($httpClient, 'demo2.simpliashop.cz', 'api_user', '*********'); $articles = $api->getArticlesEndpoint()->iterate( ArticleApiRequest::create() ->whereTopic(7) ->orderByPublishedAsc(), ArticleApiEntity::createFieldConfig() ->withName() ->withUrl() ); foreach ($articles as $article) { echo '<a href="' . $article->getUrl() . '">' . $article->getName() . '</a>'; }