Інтеграція інтернет-магазину з Amazon (SP-API)
Amazon Selling Partner API (SP-API) — сучасна заміна застарілому MWS. Використовується для управління листингами, цінами, інвентарем та замовленнями на глобальних маркетплейсах Amazon (US, EU, UK, DE, JP та інших).
Аутентифікація SP-API
SP-API використовує AWS Signature Version 4 + LWA (Login with Amazon) OAuth2:
import boto3
from sp_api.api import Products, Orders, Inventories
from sp_api.base import Marketplaces, Credentials
credentials = Credentials(
refresh_token = os.environ['SP_REFRESH_TOKEN'],
lwa_app_id = os.environ['LWA_APP_ID'],
lwa_client_secret = os.environ['LWA_CLIENT_SECRET'],
aws_access_key = os.environ['AWS_ACCESS_KEY'],
aws_secret_key = os.environ['AWS_SECRET_KEY'],
role_arn = os.environ['SP_API_ROLE_ARN'],
)
Створення/оновлення листингів
from sp_api.api import Listings
listings = Listings(credentials=credentials, marketplace=Marketplaces.DE)
def upsert_listing(product: dict) -> None:
listing_body = {
'productType': product['amazon_product_type'],
'attributes': {
'item_name': [{'value': product['name'], 'language_tag': 'de_DE'}],
'brand': [{'value': product['brand']}],
'description': [{'value': product['description'], 'language_tag': 'de_DE'}],
'list_price': [{
'currency': 'EUR',
'value': product['price'],
}],
'main_product_image_locator': [{'media_location': product['main_image']}],
},
}
listings.put_listings_item(
sellerId=SELLER_ID,
sku=product['sku'],
marketplaceIds=[Marketplaces.DE.marketplace_id],
body=listing_body,
)
Оновлення цін та інвентарю
from sp_api.api import Pricing, FbaInventory
# Ціна
pricing = Pricing(credentials=credentials, marketplace=Marketplaces.US)
pricing.get_competitive_pricing(Asins=[asin])
# FBA інвентар
fba = FbaInventory(credentials=credentials, marketplace=Marketplaces.US)
summary = fba.get_inventory_summaries(granularityType='Marketplace', granularityId=Marketplaces.US.marketplace_id)
Отримання замовлень
from sp_api.api import Orders as SpOrders
from datetime import datetime, timedelta
orders_api = SpOrders(credentials=credentials, marketplace=Marketplaces.DE)
orders = orders_api.get_orders(
MarketplaceIds=[Marketplaces.DE.marketplace_id],
CreatedAfter=(datetime.utcnow() - timedelta(hours=24)).isoformat(),
OrderStatuses=['Pending', 'Unshipped'],
)
Повідомлення (Push-повідомлення через SQS)
SP-API підтримує реальні push-повідомлення через Amazon SQS:
from sp_api.api import Notifications
notif = Notifications(credentials=credentials)
# Підписка на повідомлення про нові замовлення
notif.create_subscription(
notificationType='ORDER_CHANGE',
body={
'payloadVersion': '1.0',
'destinationId': SQS_QUEUE_ARN,
}
)
Регіональні особливості
Amazon має регіональні endpoint'и: sellingpartnerapi-na.amazon.com (US/CA/MX), sellingpartnerapi-eu.amazon.com (EU/UK/IN), sellingpartnerapi-fe.amazon.com (JP/AU). Кожен має свій marketplace_id.
Терміни
Реєстрація SP-API-додатку займає 1–2 тижні. Розробка інтеграції (товари + ціни + замовлення для одного регіону): 16–24 робочих днів.







