All Projects → inakiabt → etsy-php

inakiabt / etsy-php

Licence: other
Etsy API wrapper for PHP

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to etsy-php

sp-api-sdk
Amazon Selling Partner SPI - PHP SDKs
Stars: ✭ 34 (-49.25%)
Mutual labels:  sdk-php
cdek-sdk
SDK для СДЭК
Stars: ✭ 38 (-43.28%)
Mutual labels:  sdk-php
line-pay-sdk-php
LINE Pay SDK for PHP
Stars: ✭ 68 (+1.49%)
Mutual labels:  sdk-php
codex
🤖 PHP library for building API Client SDK for PHP
Stars: ✭ 21 (-68.66%)
Mutual labels:  sdk-php
tcb-php-sdk
tencent cloud base sdk for php
Stars: ✭ 13 (-80.6%)
Mutual labels:  sdk-php
alpaca-trade-api-php
PHP SDK for the Alpaca trade API
Stars: ✭ 26 (-61.19%)
Mutual labels:  sdk-php
PackageEws365
PHP SDK for Office 365 Exchange Web Services with SOAP
Stars: ✭ 14 (-79.1%)
Mutual labels:  sdk-php
braze-php-sdk
A PHP client to interact with Braze API
Stars: ✭ 15 (-77.61%)
Mutual labels:  sdk-php
uniteller-php-sdk
PHP (7.2+) SDK for integration internet-acquiring of the Uniteller (unofficial)
Stars: ✭ 21 (-68.66%)
Mutual labels:  sdk-php
laravel-dadata
PHP SDK Laravel пакет работы с сервисом DaData.ru, для исправления синтаксических ошибок в информации контактных данных клиентов сайта и вывода подсказок поля форм.
Stars: ✭ 39 (-41.79%)
Mutual labels:  sdk-php
etsy-ts
Etsy API wrapper written in typescript
Stars: ✭ 18 (-73.13%)
Mutual labels:  etsy
twitter-php-ads-sdk
A Twitter supported and maintained Ads API SDK for PHP.
Stars: ✭ 51 (-23.88%)
Mutual labels:  sdk-php
go-dmr
Digital Mobile Radio
Stars: ✭ 53 (-20.9%)
Mutual labels:  etsy
laravel-youtrack-sdk
Laravel wrapper for the YouTrack PHP Software Development Kit provides set of tools to interact with JetBrains YouTrack.
Stars: ✭ 17 (-74.63%)
Mutual labels:  sdk-php
Core
PHP Telegram Bot based on the official Telegram Bot API
Stars: ✭ 2,899 (+4226.87%)
Mutual labels:  sdk-php

Etsy PHP SDK Build Status

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
  • OAuth pecl package:
    • sudo pecl install oauth
    • And then add the line extension=oauth.so to your php.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: [email protected] 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:

www.opensource.org/licenses/MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].