hmalicha/etsy-php
Composer 安装命令:
composer require hmalicha/etsy-php
包简介
Simple PHP wrapper for Etsy API
README 文档
README
Based on Etsy Rest API description output, this wrapper provides a simple client with all available methods on Etsy API (thanks to the __call magic PHP method!), validating its arguments on each request (Take a look to https://github.com/inakiabt/etsy-php/blob/master/src/Etsy/methods.json for full list of methods and its arguments).
I'm looking for help
Lately, I couldn't dedicate the time I think this repo deserved, so I'm looking for help!
Requirements
Note: I will be working on remove this dependencies
- cURL devel:
- Ubuntu:
sudo apt-get install libcurl4-dev - Fedora/CentOS:
sudo yum install curl-devel
- Ubuntu:
- OAuth pecl package:
sudo pecl install oauth- And then add the line
extension=oauth.soto yourphp.ini
Installation
The following recommended installation requires composer. If you are unfamiliar with composer see the composer installation instructions.
Add the following to your composer.json file:
{
"require": {
"inakiabt/etsy-php": ">=0.10"
}
}
Usage
All methods has only one argument, an array with two items (both are optional, depends on the method):
- params: an array with all required params to build the endpoint url.
Example: getSubSubCategory: GET /categories/:tag/:subtag/:subsubtag
# it will request /categories/tag1/subtag1/subsubtag1 $api->getSubSubCategory(array( 'params' => array( 'tag' => 'tag1', 'subtag' => 'subtag1', 'subsubtag' => 'subsubtag1' )));
- data: an array with post data required by the method
Example: createShippingTemplate: POST /shipping/templates
# it will request /shipping/templates sending the "data" array as the post data $api->createShippingTemplate(array( 'data' => array( "title" => "First API Template", "origin_country_id" => 209, "destination_country_id" => 209, "primary_cost" => 10.0, "secondary_cost" => 10.0 )));
OAuth configuration script
Etsy API uses OAuth 1.0 authentication, so lets setup our credentials.
The script scripts/auth-setup.php will generate an OAuth config file required by the Etsy client to make signed requests.
Example:
export ETSY_CONSUMER_KEY=qwertyuiop123456dfghj export ETSY_CONSUMER_SECRET=qwertyuiop12 php scripts/auth-setup.php /path/to/my-oauth-config-destination.php
It will show an URL you must open, sign in on Etsy and allow the application. Then copy paste the verification code on the terminal. (On Mac OSX, it will open your default browser automatically)
Generated OAuth config file
After all, it should looks like this:
<?php return array ( 'consumer_key' => 'df7df6s5fdsf9sdh8gf9jhg98', 'consumer_secret' => 'sdgd6sd4d', 'token_secret' => 'a1234567890qwertyu', 'token' => '3j3j3h33h3g5', 'access_token' => '8asd8as8gag5sdg4fhg4fjfgj', 'access_token_secret' => 'f8dgdf6gd5f4s', );
Initialization
<?php require('vendor/autoload.php'); $auth = require('/path/to/my-oauth-config-destination.php'); $client = new Etsy\EtsyClient($auth['consumer_key'], $auth['consumer_secret']); $client->authorize($auth['access_token'], $auth['access_token_secret']); $api = new Etsy\EtsyApi($client); print_r($api->getUser(array('params' => array('user_id' => '__SELF__'))));
Examples
print_r($api->createShippingTemplate(array( 'data' => array( "title" => "First API Template", "origin_country_id" => 209, "destination_country_id" => 209, "primary_cost" => 10.0, "secondary_cost" => 10.0 )))); # Upload local files: the item value must be an array with the first value as a string starting with "@": $listing_image = array( 'params' => array( 'listing_id' => '152326352' ), 'data' => array( 'image' => array('@/path/to/file.jpg;type=image/jpeg') )); print_r($api->uploadListingImage($listing_image));
Asociations
You would be able to fetch associations of given your resources using a simple interface:
$args = array( 'params' => array( 'listing_id' => 654321 ), // A list of associations 'associations' => array( // Could be a simple association, sending something like: ?includes=Images 'Images', // Or a composed one with (all are optional as Etsy API says) "scope", "limit", "offset", "select" and sub-associations ("associations") // ?includes=ShippingInfo(currency_code, primary_cost):active:1:0/DestinationCountry(name,slug) 'ShippingInfo' => array( 'scope' => 'active', 'limit' => 1, 'offset' => 0, 'select' => array('currency_code', 'primary_cost'), // The only issue here is that sub-associations couldn't be more than one, I guess. 'associations' => array( 'DestinationCountry' => array( 'select' => array('name', 'slug') ) ) ) ) ); $result = $this->api->getListing($args);
To read more about associations: https://www.etsy.com/developers/documentation/getting_started/resources#section_associations
JSON params
There are some methods that Etsy requires to be a JSON string encoded param (ie: param "variations" for "createListingVariations"). For these cases, those params should be defined like this:
$args = array( 'params' => array( 'listing_id' => 654321 ), 'data' => array( 'variations' => array( 'json' => json_encode( array( array( 'property_id' => 200, 'value' => "Black" ), array( 'property_id' => 200, 'value' => "White" ) ) ) ) ) ); $result = $this->api->createListingVariations($args);
Testing
$ vendor/bin/phpunit
Changelog
- 1.0
- Init commit, working module.
Author
Iñaki Abete web: http://github.com/inakiabt email: inakiabt+github@gmail.com twitter: @inakiabt
Contribute
Found a bug? Want to contribute and add a new feature?
Please fork this project and send me a pull request!
License
mobiledevice is licensed under the MIT license:
hmalicha/etsy-php 适用场景与选型建议
hmalicha/etsy-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.76k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 03 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 hmalicha/etsy-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 hmalicha/etsy-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 4.76k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 20
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-03-11