Conexión a la Selling Partner API
Cómo conectarse a la SP-API.
Antes de que su aplicación pueda conectarse a la API del selling partner, debe registrarla y debe ser autorizada por un selling partner. Consulte Registro de su aplicación y Autorización de aplicaciones Selling Partner API .
Estas instrucciones le muestran los pasos para realizar una llamada a la API del Selling Partner. Para obtener ayuda con la construcción de un URI de API de selling partner y agregarle headers, consulte Generación de una biblioteca de cliente Java . Para obtener una solución más completa que incluya código para intercambiar tokens LWA y autenticación, consulte Generación de un SDK de Java con intercambio y autenticación de tokens LWA .
Paso 1. Solicitar un inicio de sesión con token de acceso de Amazon
Un token de acceso Login with Amazon (LWA) autoriza a su aplicación a realizar ciertas acciones en nombre de un selling partner. Un token de acceso LWA caduca una hora después de su emisión.
Nota sobre operaciones restringidas. Se debe incluir un token de acceso LWA en las llamadas a todas las operaciones, excepto las operaciones restringidas, que devuelven información de identificación personal (PII). Al llamar a operaciones restringidas, en lugar de incluir un token de acceso LWA, incluye un token de acceso restringido (RDT). Para obtener información sobre cómo obtener RDT y llamar a operaciones restringidas, consulte la Guía de casos de uso de la API de tokens .
Para solicitar un token de acceso a LWA, realice una POST HTTP segura al servidor de autenticación de LWA (https://api.amazon.com/auth/o2/token
) con los siguientes parámetros:
Nombre | Descripción | Requerido |
---|---|---|
grant_type | El tipo de concesión de acceso solicitada. Valores:
| Sí |
refresh_token | El LWA refresh token. Obtenga este valor cuando el selling partner autorice su aplicación. Para obtener más información, consulte Autorización de aplicaciones API de Selling Partner . | No. Incluya refresh_token para operaciones de llamada que requieran autorización de un selling partner. Si incluye refresh_token, no incluya ámbito. |
scope | El scope de la concesión de la autorización LWA. Valores:
| No. Incluir alcance para llamar a una operaciones sin garantía. Si incluye ámbito, no incluya refresh_token. |
client_id | Obtenga este valor cuando registre su aplicación. Consulte Visualización de su información de desarrollador. | Sí |
client_secret | Obtenga este valor cuando registre su aplicación. Consulte Visualización de su información de desarrollador. | Sí |
Ejemplo para llamar a una operación que requiere autorización de selling partner:
POST /auth/o2/token HTTP/l.l
Host: api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=refresh_token
&refresh_token=Aztr|...
&client_id=foodev
&client_secret=Y76SDl2F
Ejemplo para llamar a una grantless:
POST /auth/o2/token HTTP/l.l
Host: api.amazon.com
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
grant_type=client_credentials
&scope=sellingpartnerapi::notifications
&client_id=foodev
&client_secret=Y76SDl2F
Sugerencia: Para evitar recibir un error de autoridad de certificación (CA) que no sea de confianza al llamar al servidor de autorización de LWA, asegúrese de actualizar su trust store para que su aplicación confíe en el servidor de autorización de LWA.
Respuesta
Una respuesta exitosa incluye los siguientes valores.
Nombre | Descripción |
---|---|
access_token | El access_token a LWA. Tamaño máximo: 2048 bytes. |
token_type | El tipo de token devuelto. Debe ser bearer . |
expires_in | La cantidad de segundos antes de que el access_token a LWA deje de ser válido. |
refresh_token | El refresh_token de LWA que envió en la solicitud. Tamaño máximo: 2048 bytes. |
HTTP/l.l 200 OK
Content-Type: application/json;charset UTF-8
Cache-Control: no-store
Pragma:no-cache
{
"access_token":"Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE",
"token_type":"bearer",
"expires_in":3600,
"refresh_token":"Atzr|IQEBLzAtAhRPpMJxdwVz2Nn6f2y-tpJX2DeXEXAMPLE"
}
Para obtener más información, visite la página Authorization Code Grant en la documentación de Inicio de sesión con Amazon.
Paso 2. Construya un URI Selling Partner API
Estos son los componentes de un URI Selling Partner API .
Nombre | Descripción | Ejemplo |
---|---|---|
HTTP method | El método HTTP. | GET |
Endpoint | Un Endpoint de Selling Partner API endpoint . | https://sellingpartnerapi-na.amazon.com |
Path | La sección/versión de la Selling Partner API. número de la sección/recurso. | /fba/inbound/v0/shipments/{shipmentId}/preorder/confirm |
Query string | Los query parameters. | ?marketplace=ATVPDKIKX0DER |
Path parameter | Los path parameters. | shipmentId1 |
Por ejemplo:
PUT https://sellingpartnerapi-na.amazon.com/fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10
Paso 3. Agregar headers a la URI
Agregue headers al URI que construyó en el Paso 2. Construya un URI de la Selling Partner API. Estos son los headers HTTP que debe incluir en las solicitudes a la Selling Partner API.
solicitud de headers
host | El marketplace endpoint. Consulte SP-API Endpoints . |
x-amz-access-token | El token de acceso a LWA. Vea el Paso 1. Solicite un inicio de sesión con token de acceso de Amazon . Nota sobre operaciones restringidas. Si está llamando a una operación restringida, pase un token de datos restringidos (RDT) aquí en lugar de un token de acceso LWA. Para obtener información sobre cómo obtener RDT y llamar a operaciones restringidas, consulte la Guía de casos de uso de la API de tokens en la Guía de casos de uso de la API de tokens. |
x-amz-date | La fecha y hora de su solicitud. |
user-agent | Su nombre de aplicación y número de versión, plataforma y lenguaje de programación. Estos ayudan a Amazon a diagnosticar y solucionar problemas que pueda encontrar con el servicio. Consulte Incluya un User-Agent header en todas solicitudes . |
Este es un ejemplo de una solicitud a la Selling Partner API con URI y headers, pero sin información de signing:
PUT /fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10 HTTP/1.1
host: sellingpartnerapi-na.amazon.com
user-agent: My Selling Tool/2.0 (Language=Java/1.8.0.221;
Platform=Windows/10)
x-amz-access-token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE
x-amz-date: 20190430T123600Z
Para firmar una solicitud a la Selling Partner API, consulte el Paso 4. Crea y firmar tu solicitud.
Paso 4. Crea y firmar tu solicitud
La Selling Partner API utiliza el Signature Version 4 Signing Process para autenticar las solicitudes. Cuando envía solicitudes HTTP a la Selling Partner API, firmar las solicitudes para que Amazon pueda identificar quién las envió. Usted firmar las solicitudes con sus AWS access keys, que consisten en un access key ID y una secret access key. Amazon recomienda utilizar el AWS Security Token Service (AWS STS) para solicitud temporary AWS access keys para firmar sus solicitudes. Consulte Creación y configuración de políticas y entidades de IAM para crear un usuario de IAM (con una política de AWS STS adjunta) que asume un IAM role. A continuación, registra su aplicación mediante el IAM role. Para obtener más información sobre el uso de AWS STS y los SDK de AWS que pueden ayudarlo con su implementación, consulte requesting temporary security credentials.
Nota: debe aprender a Firmar solicitudes HTTP solo cuando las crea manualmente. Cuando utiliza uno de los SDK de AWS para calcular las firmas, el SDK firma automáticamente las solicitudes con la AWS access key que especifica cuando lo configura. Cuando usa un SDK, no necesita aprender a firmar solicitudes usted mismo. Los desarrolladores de Java, por ejemplo, pueden usar AWS4Signer.javade AWS SDK para Java como modelo para calcular una signature. Puede encontrar SDK para otros idiomas en el AWS GitHub repository. .
Para crear y firmar su solicitud, complete lo siguiente:
-
Crear una canonical solicitud
Siga las instrucciones de la Task 1: Create a Canonical request for Signature Version 4 en la
documentación de AWS, utilizando esta guía:-
Vea el Paso 3. Agregar headers a la URI para obtener un ejemplo de una solicitud sin firmar para comenzar
cuando cree su canonical solicitud. -
Utilice SHA-256 para el algoritmo hash.
-
No ponga información de autenticación en los parámetros de consulta. Ponlo en el Parámetro de header
Authorization
. Para obtener información sobre el uso de la Parámetro de headerAuthorization
para la información de autenticación, consulte Authorization header .
-
-
Crear una string para sign
Siga las instrucciones de la Task 2: Create a String to Sign for Signature Version 4 en la
documentación de AWS, utilizando esta guía:-
El valor de designación del algoritmo es
AWS4-HMAC-SHA256
-
Para determinar el scope de la credencial, consulte Credential scope.
-
-
Calcular la signature
Siga las instrucciones de la Task 3: Calculate the Signature for AWS Signature Version 4 en la documentación de AWS.
Importante: Consulte Credential scopepara ayudarlo a completar este paso.
-
Agregar la información de sign
Siga las instrucciones de la Task 4: Add the Signature to the HTTP request en la documentación de AWS,
utilizando esta guía:-
No agregue información de signing a la query string. Agrégalo a la Parámetro de header
Authorization
. -
Consulte el Authorization header .para obtener detalles sobre cómo crear un Parámetro de header
Authorization
.
-
El siguiente ejemplo muestra el aspecto que podría tener una solicitud después de haberle agregado la
información de signing mediante el Authorization header.
PUT /fba/inbound/v0/shipments/shipmentId1/preorder/confirm?MarketplaceId=ATVPDKIKX0DER&NeedByDate=2020-10-10HTTP/1.1
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIHV6HIXXXXXXX/20201022/us-east-1/execute-api/aws4_request, SignedHeaders=host;user-agent;x-amz-access-token,
Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924aEXAMPLE
host: sellingpartnerapi-na.amazon.com
user-agent: My Selling Tool/2.0 (Language=Java/1.8.0.221;
Platform=Windows/10)
x-amz-access-token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSREXAMPLE
x-amz-date: 20190430T123600Z
Credential scope
El credential scope es un componente de la "string to sign" que crea cuando firmar una solicitud a la Selling Partner API. ConsulteCrea y firmar tu solicitud.
El Credential scope se representa mediante una slash-separated string of dimensions, como se muestra en la siguiente tabla:
Dimensión | ||
---|---|---|
Date | Una string de ocho dígitos que representa el año (AAAA), el mes (MM) y el día (DD) de la solicitud. | 20190430 |
AWS region | La región a la que está enviando la solicitud. Consulte SP-API Endpoints . | us-east-1 |
Service | El servicio que requesting. Puede encontrar este valor en el endpoint. Consulte SP-API Endpoints. | execute-api |
Termination string | Una string de terminación especial. Para AWS Signature Version 4, el valor es aws4_request | aws4_request |
Por ejemplo:
20190430/us-east-1/execute-api/aws4_request
Importante: La date que usa como parte del credential scope debe coincidir con la date de su resquest, como se especifica en el header x-amz-date. Para obtener más información, consulte Handling Dates in Signature Version 4 en la documentación de AWS
Para obtener más información, consulte el Paso 4. Crea y firmar tu solicitud.
Authorization header.
El Authorization header contiene la información de signing de una solicitud. Aunque el header se denomina "Authorization", la información de signing se utiliza para la authentication.
Estos son los componentes de un Authorization header:
Componente | Descripción |
---|---|
El algoritmo utilizado para signing | El algoritmo hash utilizado durante todo el proceso de signing. La Selling Partner API requiere SHA-256. Usted especifica esto en el Paso 4. Crea y firmar tu solicitud. |
credencial | Su AWS access key ID más el Credential scope. Obtiene su AWS access key ID en el paso 2. Cree un usuario de IAM . |
SignedHeaders | Una lista de todos los HTTP headers que incluyó con la solicitud signed. Para ver un ejemplo, consulte el Paso 3. Agregar headers a la URI. |
Signature | La firma calculada en el Paso 4. Crea y firmar tu solicitud. |
Por ejemplo:
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIHV6HIXXXXXXX/20201022/us-east-1/execute-api/aws4_request, SignedHeaders=host;user-agent;x-amz-access-token;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924aEXAMPLE
Para obtener más información, consulte el Paso 4. Crea y firmar tu solicitud.
Updated over 1 year ago