PHP code example of christianjbrown / etsy-open-api-sdk
1. Go to this page and download the library: Download christianjbrown/etsy-open-api-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
christianjbrown / etsy-open-api-sdk example snippets
use ChristianBrown\Etsy\EtsyFactory;
use ChristianBrown\KeyValueStore\MemoryKeyValueStore;
use Symfony\Component\Clock\NativeClock;
// Access token: transient, an in-memory store is fine.
$accessTokenStore = new MemoryKeyValueStore(new NativeClock());
// Refresh token: must persist and already hold a valid refresh token.
// Any KeyValueStoreInterface works (DatabaseKeyValueStore, FirestoreKeyValueStore, …).
$refreshTokenStore = new MemoryKeyValueStore(new NativeClock());
$refreshTokenStore->setValue('your-seed-refresh-token');
$etsy = (new EtsyFactory())->create(
12345678, // your shop id
'your-app-keystring', // OAuth client_id, and the first half of x-api-key
'your-app-shared-secret', // the second half of x-api-key
$accessTokenStore,
$refreshTokenStore
);
$shopReceiptApi = $etsy->getShopReceiptApi(); // ShopReceiptApiInterface
use ChristianBrown\Etsy\Host\EtsyHost;
$host = new EtsyHost(
apiBaseUrl: 'https://openapi.etsy.com', // default; every API_URL* constant is rooted here
oAuthTokenUrl: 'https://api.etsy.com/v3/public/oauth/token', // default OAuth2 token endpoint
);
$etsy = (new EtsyFactory())->createForHost(12345678, 'your-app-keystring', 'your-app-shared-secret', $accessTokenStore, $refreshTokenStore, $host);
// Before
$etsy = new Etsy(12345678, 'your-app-keystring', 'your-app-shared-secret', $accessTokenStore, $refreshTokenStore);
$etsy = new Etsy(12345678, 'your-app-keystring', 'your-app-shared-secret', $accessTokenStore, $refreshTokenStore, $host);
// After
$etsy = (new EtsyFactory())->create(12345678, 'your-app-keystring', 'your-app-shared-secret', $accessTokenStore, $refreshTokenStore);
$etsy = (new EtsyFactory())->createForHost(12345678, 'your-app-keystring', 'your-app-shared-secret', $accessTokenStore, $refreshTokenStore, $host);
use ChristianBrown\Etsy\Exception\ExceptionInterface;
try {
$receipts = $shopReceiptApi->getMultiple();
} catch (ExceptionInterface $exception) {
// Anything this library throws lands here.
}
use ChristianBrown\ApiClient\ApiClientFactory;
use ChristianBrown\ApiClient\ClientOptions;
use ChristianBrown\Etsy\Api\ShopReceiptApi;
use ChristianBrown\Etsy\Auth\Credentials;
use ChristianBrown\Etsy\Cache\ResponseCache;
use ChristianBrown\Etsy\Serializer\CreateReceiptShipmentRequestSerializer;
use ChristianBrown\Etsy\Serializer\ReceiptShipmentCustomsItemRequestsSerializer;
use ChristianBrown\Etsy\Serializer\ReceiptShipmentCustomsItemRequestSerializer;
use ChristianBrown\Etsy\Serializer\UpdateShopReceiptRequestSerializer;
use ChristianBrown\Etsy\Transformer\ListingPropertyValuesTransformer;
use ChristianBrown\Etsy\Transformer\ListingPropertyValueTransformer;
use ChristianBrown\Etsy\Transformer\MoneyTransformer;
use ChristianBrown\Etsy\Transformer\ReceiptPageTransformer;
use ChristianBrown\Etsy\Transformer\ReceiptsTransformer;
use ChristianBrown\Etsy\Transformer\ReceiptTransformer;
use ChristianBrown\Etsy\Transformer\RefundsTransformer;
use ChristianBrown\Etsy\Transformer\RefundTransformer;
use ChristianBrown\Etsy\Transformer\ShipmentsTransformer;
use ChristianBrown\Etsy\Transformer\ShipmentTransformer;
use ChristianBrown\Etsy\Transformer\TransactionsTransformer;
use ChristianBrown\Etsy\Transformer\TransactionTransformer;
use ChristianBrown\Etsy\Transformer\TransactionVariationsTransformer;
use ChristianBrown\Etsy\Transformer\TransactionVariationTransformer;
use ChristianBrown\Etsy\Http\FormValueEncoder;
use ChristianBrown\KeyValueStore\MemoryKeyValueStore;
use ChristianBrown\OAuth2Client\Authentication\PublicClientAuthentication;
use ChristianBrown\OAuth2Client\Lock\NullLock;
use ChristianBrown\OAuth2Client\RefreshTokenManagerFactory;
use Symfony\Component\Clock\NativeClock;
$shopId = 12345678;
$keystring = 'your-app-keystring';
$sharedSecret = 'your-app-shared-secret';
$accessTokenStore = new MemoryKeyValueStore(new NativeClock());
$refreshTokenStore = new MemoryKeyValueStore(new NativeClock());
$refreshTokenStore->setValue('your-seed-refresh-token');
// Shared JSON request sender (wires Guzzle for you).
$requestSender = (new ApiClientFactory(new ClientOptions()))->create()->getJsonApiRequestSender();
// OAuth2 refresh machinery → a two-header credential (x-api-key + Bearer token).
$refreshTokenManager = (new RefreshTokenManagerFactory(new NativeClock()))->create(
$requestSender,
$accessTokenStore,
$refreshTokenStore,
'https://api.etsy.com/v3/public/oauth/token',
new PublicClientAuthentication(),
new NullLock()
);
$credentials = new Credentials($refreshTokenManager, $keystring, $sharedSecret);
// Receipt transformer chain. The single Money transformer is shared across every
// money field; the singular Receipt transformer is wrapped by ReceiptsTransformer
// for the list endpoint (and by ReceiptPageTransformer for getPage()) and used
// directly for getOneById().
$moneyTransformer = new MoneyTransformer();
$transactionTransformer = new TransactionTransformer(
$moneyTransformer,
new TransactionVariationsTransformer(new TransactionVariationTransformer()),
new ListingPropertyValuesTransformer(new ListingPropertyValueTransformer())
);
$receiptTransformer = new ReceiptTransformer(
$moneyTransformer,
new TransactionsTransformer($transactionTransformer),
new RefundsTransformer(new RefundTransformer($moneyTransformer)),
new ShipmentsTransformer(new ShipmentTransformer())
);
$receiptsTransformer = new ReceiptsTransformer($receiptTransformer);
// Write-side serializers for createReceiptShipment()/updateShopReceipt().
$createReceiptShipmentRequestSerializer = new CreateReceiptShipmentRequestSerializer(
new ReceiptShipmentCustomsItemRequestsSerializer(new ReceiptShipmentCustomsItemRequestSerializer())
);
$updateShopReceiptRequestSerializer = new UpdateShopReceiptRequestSerializer(new FormValueEncoder());
$shopReceiptApi = new ShopReceiptApi(
$requestSender,
$receiptTransformer,
$receiptsTransformer,
new ReceiptPageTransformer($receiptsTransformer),
$createReceiptShipmentRequestSerializer,
$updateShopReceiptRequestSerializer,
new ResponseCache(), // getMultiple()
new ResponseCache(), // getPage()
new ResponseCache(), // getOneById()
$credentials,
$shopId
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.