Guía de casos de uso de la API de mensajería v1
Enviar mensajes a los compradores sobre sus pedidos
¿Qué es la API de mensajería?
The Selling Partner API for Messaging (Messaging API) allows you to create applications that enable sellers to send messages to buyers after they place an order. Sellers can send a variety of message types. These include asking order related questions, arranging a delivery, and more. The Messaging API can send messages to a buyer, even if the buyer has not contacted the seller first. However, you cannot use this API to respond to messages from buyers.
Refer to the Messaging API reference for a list of operations that correspond to the available message types.
Terminología
URL prefirmada de Amazon S3: Una URL de un bucket de Amazon S3 al que puede cargar un objeto sin las credenciales ni los permisos de seguridad de AWS. Obtendrá una URL prefirmada de Amazon S3 en Paso 7. Crea un destino de carga.
Disponibilidad de mensajes
No todos los tipos de mensajes están disponibles en todas las circunstancias. Hay varios factores que pueden afectar a la disponibilidad de los mensajes, como si el pedido se ha gestionado, el tipo de vendedor o el número de mensajes ya enviados para el pedido.
Proceso para enviar un mensaje
Lo siguiente es para el usuario de la aplicación. El envío de un mensaje es un proceso de varios pasos que incluye llamadas a operaciones tanto en la API de mensajería como en la API de cargas. Este es el flujo de trabajo básico para enviar un mensaje:
-
En tu aplicación se muestran los pedidos recientes del vendedor, y el vendedor elige un pedido para el que
desea enviar un mensaje al comprador. -
Tu aplicación muestra los tipos de mensajes que están disponibles para el pedido que elija el vendedor. Para obtener los tipos de mensajes disponibles, llama al
getMessagingActionsForOrder
funcionamiento de la API de mensajería. -
El vendedor elige un tipo de mensaje para el pedido.
-
Si el tipo de mensaje permite mensajes personalizados, el vendedor introduce un mensaje personalizado.
-
Si el tipo de mensaje permite archivos adjuntos, el vendedor envía un archivo adjunto a la aplicación. El vendedor también da un nombre de archivo al archivo adjunto.
-
Si el vendedor sube un archivo adjunto a tu aplicación, la aplicación envía el archivo adjunto a un bucket de Amazon S3 con los pasos siguientes:
-
Calcular un hash Content-MD5 para el archivo adjunto, que es necesario para crear un destino de subida.
-
Crear un destino de subida al llamar a la operación
createUploadDestination
de la API de subidas. -
Subir el archivo adjunto al destino.
-
-
Tu aplicación solicita que el vendedor envíe un mensaje al comprador llamando a la operación que corresponde al tipo de mensaje que el vendedor eligió en el paso #3. Por ejemplo, tu aplicación llama al
createConfirmOrderDetails
operación si el vendedor eligió el tipo de mensaje «Confirmar detalles del pedido». -
Amazon envía por correo electrónico un mensaje del vendedor al comprador.
Consulta el Tutorial: Enviar un mensaje para ver el proceso detallado.
Tutorial: Enviar un mensaje
En este tutorial se enseña a crear una aplicación que permite a un vendedor enviar un mensaje a un comprador.
Requisitos
Para completar este tutorial, necesita:
-
Autorización del vendedor para el que realizas las llamadas. Consulta Autorización de aplicaciones de la API del colaborador comercial para obtener más información.
-
Aprobación del rol Comunicación con el comprador en tu perfil de desarrollador.
-
El rol Comunicación con el comprador seleccionado en la página de registro de la aplicación.
Paso 1. Obtener el pedido para el que el vendedor desea enviar un mensaje
-
Muestra una lista de los pedidos recientes del vendedor entre los que puede elegir.
-
El vendedor elige un pedido del que quiere enviar un mensaje al comprador.
-
Asocia un identificador de pedido de Amazon al pedido que elija el vendedor.
-
Guarda el identificador de pedido de Amazon para el Paso 2. Obtener una lista de los tipos de mensajes disponibles.
Paso 2. Obtener una lista de los tipos de mensajes disponibles
Llama a la operación getMessagingActionsForOrder
de la API de mensajería, especificando el identificador de pedido de Amazon obtenido en el
Paso 1. Obtener el pedido para el que el vendedor desea enviar un mensaje para obtener una lista de los tipos de mensaje disponibles para el pedido.
- Llama a la operación
getMessagingActionsForOrder
de la API de mensajería, utilizando los siguientes parámetros:
Parámetro de ruta:
Parámetro | Descripción | Obligatorio |
---|---|---|
amazonOrderId
|
Un identificador de pedido de Amazon. Especifica el pedido desde el que se enviará un mensaje. Obtén este valor en el Paso 1. Obtener el pedido para el que el vendedor desea enviar un mensaje. Tipo: cadena |
Sí |
Parámetro de consulta:
Parámetro | Descripción | Obligatorio |
---|---|---|
marketplaceIds
|
Un identificador de sitio web. Especifica el sitio web en el que se realizó el pedido. Solo se puede especificar un sitio web. Tipo: matriz [cadena] |
Sí |
Ejemplo de solicitud
GET https://sellingpartnerapi-na.amazon.com/messaging/v1/orders/902-6786204-8179805?marketplaceIds=ATVPDKIKX0DER
Respuesta
El esquema de respuesta para la operación getMessagingActionsForOrder
.
Nombre | Descripción | Schema |
---|---|---|
_links optional | Un objeto cuyos nombres de propiedad son tipos de relación de enlace y cuyos valores son un objeto de enlace o una matriz de objetos de enlace. El recurso sujeto de estos enlaces es el objeto de recursos, cuya propiedad es el objeto "_links", en el que es un objeto. | _links |
_embedded optional | Un objeto cuyos nombres de propiedad son tipos y valores de relación de enlace y son un objeto de recursos o una matriz de objetos de recursos. Los recursos integrados pueden ser una versión completa, parcial o incoherente de la representación proporcionada por el URI de destino. | _embedded |
errors optional | Una lista de respuestas de error devueltas cuando una solicitud no tiene éxito. | ErrorList |
_links
Nombre | Descripción | Schema |
---|---|---|
self required | Corresponde a la relación "propia" registrada por la IANA, cuyo destino es el URI del recurso. | LinkObject |
actions required | Acciones aptas para el AmazonOrderID especificado. | < LinkObject > array |
Nombre | Schema |
---|---|
actions required | matriz < GetMessagingActionResponse > |
Ejemplo de respuesta
{
"_links":
{
"actions": [
{
"href": "/messaging/v1/orders/902-6786204-
8179805/messages/confirmCustomizationDetails?marketplaceIds=ATVPDKIKX0
DER",
"name": "confirmCustomizationDetails"
},
{
"href": "/messaging/v1/orders/902-6786204-
8179805/messages/negativeFeedbackRemoval?marketplaceIds=ATVPDKIKX0DER"
,
"name": "negativeFeedbackRemoval"
},
{
"href": "/messaging/v1/orders/902-6786204-
8179805/messages/confirmOrderDetails?marketplaceIds=ATVPDKIKX0DER",
"name": "confirmOrderDetails"
},
],
"self":
{
"href": "/messaging/v1/orders/902-6786204-
8179805?marketplaceIds=ATVPDKIKX0DER"
}
},
"_embedded":
{
"actions": [
{
"_links":
{
"schema":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/confirmCustomizationDetails/schema",
"name": "confirmCustomizationDetails"
},
"self":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/confirmCustomizationDetails?marketplaceIds=ATVPDKIKX0DER",
"name": "confirmCustomizationDetails"
}
},
"_embedded":
{
"schema":
{
"_links":
{
"self":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/confirmCustomizationDetails/schema",
"name": "confirmCustomizationDetails"
}
},
"type": "object",
"name": "confirmCustomizationDetails",
"title": "Confirm customization details",
"description": "Ask your customer to provide details or verify the customization input provided (name spelling, imagery, initials).",
"properties":
{
"attachments":
{
"type": "array",
"items":
{
"type": "object",
"required": [],
"properties":
{
"fileName":
{
"type": "string"
},
"id":
{
"type": "string"
}
}
},
"title": "Add attachment",
"description": "You can upload text files, PDFs, Word documents, and these image file types: .jpg, .gif, and .png. The total size of attachments must be less than 10 MB.",
"x-ui-field-type": "attachments",
"maxItems": 5
},
"rawMessageBody":
{
"type": "string",
"title": "Explain why you are contacting and any action you need your customer to take. ",
"description": "800 character limit. Only links related to order completion are allowed, no HTML or email addresses.",
"x-ui-field-type": "text",
"minLength": 1,
"maxLength": 800
}
},
"required": [
"attachments",
"rawMessageBody"
],
"$schema": "http://json-schema.org/draft-04/schema#",
"x-ui-hidden": null
}
},
"name": "confirmCustomizationDetails",
"title": "Confirm customization details"
},
{
"_links":
{
"schema":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/negativeFeedbackRemoval/schema",
"name": "negativeFeedbackRemoval"
},
"self":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/negativeFeedbackRemoval?marketplaceIds=ATVPDKIKX0DER",
"name": "negativeFeedbackRemoval"
}
},
"_embedded":
{
"schema":
{
"_links":
{
"self":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/negativeFeedbackRemoval/schema",
"name": "negativeFeedbackRemoval"
}
},
"type": "object",
"name": "negativeFeedbackRemoval",
"title": "Request to update negative feedback",
"description": "Ask your customer to consider updating their seller feedback rating. You may only send this once per order.",
"properties": {},
"required": [],
"$schema": "http://json-schema.org/draft-04/schema#",
"x-ui-hidden": true
}
},
"name": "negativeFeedbackRemoval",
"title": "Request to update negative feedback"
},
{
"_links":
{
"schema":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/confirmOrderDetails/schema",
"name": "confirmOrderDetails"
},
"self":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/confirmOrderDetails?marketplaceIds=ATVPDKIKX0DER",
"name": "confirmOrderDetails"
}
},
"_embedded":
{
"schema":
{
"_links":
{
"self":
{
"href": "/messaging/v1/orders/902-6786204-8179805/messages/confirmOrderDetails/schema",
"name": "confirmOrderDetails"
}
},
"type": "object",
"name": "confirmOrderDetails",
"title": "Confirm order details",
"description": "Ask your customer a specific order-related question prior to shipping their order.",
"properties":
{
"rawMessageBody":
{
"type": "string",
"title": "Explain why you are contacting and any action you need your customer to take. ",
"description": "2000 character limit. Only links related to order completion are allowed, no HTML or email addresses.",
"x-ui-field-type": "text",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"rawMessageBody"
],
"$schema": "http://json-schema.org/draft-04/schema#",
"x-ui-hidden": null
}
},
"name": "confirmOrderDetails",
"title": "Confirm order details"
},
]
}
}
-
Guarda la lista de esquemas en la matriz
_embedded.actions
de la respuesta. En la sección_embedded.schema
de cada elemento de matriz, puedes encontrar un esquema para cada tipo de mensaje disponible. Utiliza el valor detitle
en cada esquema para crear una lista de tipos de mensaje disponibles para que el vendedor elija en el Paso 3. Obtener el tipo de mensaje elegido por el vendedor. Utiliza los esquemas para comprender cómo mostrar y aplicar las restricciones para mensajes personalizados y archivos adjuntos que se aplican a cada tipo de mensaje. Para obtener más información, consulta Paso 4. Obtener un mensaje de texto personalizado del vendedor (si es compatible) y Paso 5. Obtener un archivo adjunto del vendedor (si es compatible). -
Guarda la lista de rutas en la matriz
_links.actions
de la respuesta. El valor dehref
en cada elemento de matriz contiene una ruta para cada tipo de mensaje disponible. Puedes utilizar una de estas rutas en una llamada a la operación adecuada en el Paso 9. Enviar un mensaje al comprador.
Paso 3. Obtener el tipo de mensaje elegido por el vendedor
-
Muestra una lista de los tipos de mensaje disponibles para que el vendedor elija. Puedes obtenerlos de los valores de
title
que guardaste en el Paso 2. Obtener una lista de los tipos de mensajes disponibles. -
Deja que el vendedor elija el tipo de mensaje que desea enviar y guárdalo. Esta elección afecta a varios pasos posteriores, entre ellos:
-
Paso 4. Obtener un mensaje de texto personalizado del vendedor (si es compatible). La elección del tipo de mensaje determina si se permite un mensaje personalizado.
-
Paso 5. Recibir un archivo adjunto del vendedor (si es compatible). La elección del tipo de mensaje determina si se admiten archivos adjuntos.
-
Paso 9. Enviar un mensaje al comprador. La elección del tipo de mensaje determina la operación a la que se llamará en el Paso 9. Por ejemplo, si el vendedor elige el tipo de mensaje "Confirmar datos de personalización", en el paso 9 se ejecutará la operación
confirmCustomizationDetails
.
-
Paso 4. Obtener un mensaje de texto personalizado del vendedor (si es compatible)
Algunos tipos de mensaje permiten al vendedor incluir un mensaje personalizado en el correo electrónico que se envíe al comprador. Para saber si un tipo de mensaje permite mensajes personalizados, consulta la referencia de la API de mensajería para encontrar la operación que corresponde al tipo de mensaje. Por ejemplo, la operación createConfirmServiceDetails
corresponde al tipo de mensaje "Contactar con el servicio de atención al cliente de inicio". Si la operación incluye un parámetro de cuerpo de texto, el tipo de mensaje permitirá mensajes personalizados.
-
Determina si el tipo de mensaje que el vendedor ha seleccionado en el Paso 3. Obtener el tipo de mensaje elegido por el vendedor permite mensajes personalizados. Si no se admiten los mensajes personalizados, dirígete directamente al Paso 5. Obtener un archivo adjunto del vendedor (si es compatible). Si se permiten los mensajes personalizados, sigue con este procedimiento.
-
Permite que el vendedor introduzca el texto sin formato que desea para el mensaje personalizado.
-
Muestra y aplica las restricciones al texto del mensaje introducido por el vendedor. Puedes encontrar las restricciones de texto en la sección
_embedded.schema.properties.rawMessageBody
del elemento de matriz_embedded.actions
que corresponde al tipo de mensaje del vendedor. Encuéntralo en la respuesta a la operacióngetMessagingActionsForOrder
del Paso 2. Obtener una lista de los tipos de mensaje disponibles. -
Guarda el texto del mensaje y úsalo como entrada para el Paso 9. Enviar un mensaje al comprador.
Paso 5. Obtener un archivo adjunto del vendedor (si es compatible)
Algunos tipos de mensaje permiten al vendedor incluir un enlace a un archivo adjunto en el correo electrónico que se envíe al comprador. Para saber si un tipo de mensaje permite archivos adjuntos, consulta la referencia de la API de mensajería para encontrar la operación que se corresponde con el tipo de mensaje. Por ejemplo, la operación createWarranty
corresponde al tipo de mensaje "Enviar información de garantía". Si la operación incluye un parámetro de cuerpo de archivo adjunto, el tipo de mensaje permitirá archivos adjuntos.
-
Determina si el tipo de mensaje que el vendedor ha seleccionado en el Paso 3. Obtener el tipo de mensaje elegido por el vendedor permite archivos adjuntos. Si no se admiten los archivos adjuntos, dirígete directamente al Paso 9. Enviar un mensaje al comprador. Si se permiten los archivos adjuntos, sigue con este procedimiento.
-
Permite que el vendedor envíe un archivo adjunto a tu aplicación.
-
Muestra y aplica las restricciones al archivo adjunto enviado por el vendedor. Puedes encontrar las restricciones de archivo adjunto en la sección
_embedded.schema.properties.attachments
del elemento de matriz_embedded.actions
que corresponde al tipo de mensaje del vendedor. Encuéntralo en la respuesta a la operacióngetMessagingActionsForOrder
del Paso 2. Obtener una lista de los tipos de mensaje disponibles. -
Convierte el archivo adjunto en un flujo de entrada y guárdalo para el Paso 8. Subir el archivo adjunto.
-
Permite que el vendedor introduzca un nombre de archivo para el archivo adjunto, incluida la extensión del archivo.
-
Guarda el nombre del archivo y úsalo como entrada para el Paso 9. Enviar un mensaje al comprador.
Paso 6. Calcular un hash Content-MD5
Calcula un hash Content-MD5 para el archivo adjunto del Paso 5. Obtener un archivo adjunto del vendedor (si es compatible). Lo necesitarás para crear un destino de subida en el Paso 7. Crear un destino de subida.
El código Java de muestra de este paso contiene la lógica para calcular un hash Content-MD5. Este código de muestra utiliza el cliente HTTP Apache.
- Utiliza lo siguiente como entrada para el código de muestra:
• El flujo de entrada de archivos adjuntos del Paso 5. Obtener un archivo adjunto del vendedor (si es compatible) es el argumento del parámetro fis
del método computeContentMD5Value
de la clase CreateMD5
.
- Guarda el valor
md5Content
que se introducirá con el parámetroContent-MD5
en el Paso 7. Crear un destino de subida.
Ejemplo de código Java
package io.swagger.client.util;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class CreateMD5
{
public static String computeContentMD5Value(FileInputStream fis)
throws IOException,
NoSuchAlgorithmException
{
DigestInputStream dis = new DigestInputStream(fis,
MessageDigest.getInstance("MD5"));
byte[]buffer = new byte[8192];
while (dis.read(buffer) > 0);
String md5Content = new String(org.apache.commons.codec.binary.Base64
.encodeBase64(dis.getMessageDigest().digest()));
// Effectively resets the stream to be beginning of the file
// via a FileChannel.
fis.getChannel().position(0);
return md5Content;
}
}
Paso 7. Crear un destino de subida
Llama a la operación createUploadDestination
de la API de subidas para crear un destino de subida para tu archivo adjunto, en forma de una URL prefirmada de Amazon S3. Para ver las definiciones, consulta Terminología.
- Llama a la operación
createUploadDestination
de la API de subidas, utilizando los siguientes parámetros:
Parámetros de consulta:
Type | Nombre | Descripción | Schema |
---|---|---|---|
Query | marketplaceIds required | Una lista de identificadores de mercado. Aquí se especifican los sitios web en los que estará disponible la subida. Solo se puede especificar un mercado. Recuento máximo : 1 | < cadena > gama |
Query | Contenido MD5 required | El hash Content-MD5 que calculó en Paso 6. Calcule un hash MD5 de contenido. | string |
Path | recurso required | El recurso para el destino de carga que estás creando. Por ejemplo, si estás creando un destino de carga para la operación CreateLegalDisclosure de la API de mensajería, el {resource} sería /messaging/v1/orders/{amazonOrderId}/messages/legalDisclosure , y todo el camino sería /uploads/2020-11-01/uploadDestinations/messaging/v1/orders/{amazonOrderId}/messages/legalDisclosure . Si está creando un destino de carga para un documento de contenido de Aplus, el {resource} sería aplus/2020-11-01/contentDocuments y el camino sería /uploads/v1/uploadDestinations/aplus/2020-11-01/contentDocuments . | string |
Query | Tipo de contenido optional | El tipo de contenido de archivo que debe subirse. | string |
Ejemplo de solicitud
POST https://sellingpartnerapi-na.amazon.com/uploads/2020-11-01/uploadDestinations/messaging/v1/orders/7XX-5XXXXX-8XXXXXX/messages/invoice?marketplaceIds=A2Q3Y263D00KWC&contentMD5=qCcR3o%2BU0FUR1%2BgXhApNfQ%3D%3D
Respuesta
El esquema de respuesta para la operación createUploadDestination
.
Nombre | Descripción | Schema |
---|---|---|
payload optional | Información sobre un destino de subida. | UploadDestination |
errors optional | Una lista de respuestas de error devueltas cuando una solicitud no tiene éxito. | ErrorList |
Ejemplo de respuesta
{
"payload":
{
"uploadDestinationId": "sc/7ae2d3b1-fdd3-42c4-98c4-9cc509fb95d8.png",
"url": "https://aplus-media.s3.amazonaws.com/?x-amz-date=20201116T184623Z&x-amz-signature=c5c8efd95d883b6787a2b1a93c7c066f01cb4e8d7be3ece4360aa800332e0cf9&x-amz-meta-owner=A2CZ04NGKYDXDV&acl=private&key=sc/7ae2d3b1-fdd3-42c4-98c4-9cc509fb95d8.png&x-amz-algorithm=AWS4-HMAC-SHA256&policy=eyJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJhcGx1cy1tZWRpYS1iZXRhIn0seyJrZXkiOiJzb3RhLzdhZTJkM2IxLWZkZDMtNDJjNC05OGM0LTljYzUwOWZiOTVkOC5wbmcifSx7ImFjbCI6InByaXZhdGUifSx7IngtYW16LW1ldGEtb3duZXIiOiJBMkNaMDROR0tZRFhEViJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUE2TDZSN1FFNTZGNkdNRzVFLzIwMjAxMTE2L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWRhdGUiOiIyMDIwMTExNlQxODQ2MjNaIn0sWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMSwzMTQ1NzI4XV0sImV4cGlyYXRpb24iOiIyMDIwLTExLTE2VDIxOjQ2OjIzLjg2OFoifQ==&x-amz-credential=AKIA6L6R7QE56F6GMG5E/20201116/us-east-1/s3/aws4_request",
"headers":
{
"Content-MD5": "1jnGuPv7xwPiat6NesKL/w=="
}
}
}
- Guarda los siguientes valores:
- URL y encabezados. Utiliza estos valores en el Paso 8. Subir el archivo adjunto.
uploadDestinationId
. Use this value in Step 9. Send a message to the buyer.
Paso 8. Subir el archivo adjunto
Sube a un bucket de Amazon S3 el archivo adjunto que el vendedor ha enviado a tu aplicación en el Paso 5. Recibir un archivo adjunto del vendedor (si es compatible).
El código Java de muestra de este paso contiene la lógica para subir un archivo adjunto. Este código de muestra utiliza el cliente HTTP Apache.
Utiliza lo siguiente como entrada para el código de muestra:
-
Utiliza el valor URL que has guardado en el Paso 7. Crear un destino de subida como argumento de
URL(uploadDestinationPayload.getPayload().getUrl())
en la claseUploadFileToDestination
. -
Utiliza el valor encabezados que has guardado en el Paso 7. Crear un destino de subida como argumento de
(Map < String, String > )uploadDestinationPayload.getPayload().getHeaders()
en la claseUploadFileToDestination
. -
Utiliza el flujo de entrada de archivos adjuntos que has guardado en el Paso 4. Obtener un mensaje de texto personalizado del vendedor (si es compatible) y utilízalo como entrada para el método
out.write()
de la claseUploadFileToDestination
.
Ejemplo de código Java
package io.swagger.client.util;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import io.swagger.client.model.CreateUploadDestinationResponse;
public class UploadFileToDestination
{
private static String requestMethod = "PUT";
private static String contentType = "Content-Type";
private static String contentValue = "application/text";
private static URL url;
private static Map < String,
String > headers;
/* Upload file to destination using the response returned in
CreateUploadDestination. Reference https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObjectJavaSDK.html)
*/
public static void uploadFileInDestination(
CreateUploadDestinationResponse uploadDestinationPayload)
throws IOException
{
url = new URL(uploadDestinationPayload.getPayload().getUrl());
headers = (Map < String, String > )uploadDestinationPayload.getPayload()
.getHeaders();
// Create the connection and use it to upload the new object using the
// pre-signed URL.
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod(requestMethod);
connection.setRequestProperty(contentType, contentValue);
// headers that are returned in createDestination call
for (Map.Entry < String, String > headersEntry: headers.entrySet())
{
connection.setRequestProperty(headersEntry.getKey(),
headersEntry.getValue());
}
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream());
out.write("Text of the file");
out.close();
// Check the HTTP response code. To complete the upload and make the
// object available,
// you must interact with the connection object in some way.
connection.getResponseCode();
System.out.println("HTTP response code: " + connection.getResponseCode()
+ connection.getResponseMessage());
connection.disconnect();
}
}
El archivo adjunto se sube al bucket de Amazon S3.
Paso 9. Enviar un mensaje al comprador
To send a message from the seller to the buyer you need to call the operation that corresponds to the message type that the seller chose in Step 2. Get a list of available message types. For example, if the seller chose the "Confirm customization details" message type, you would call the confirmCustomizationDetails
operation. Refer to the Messaging API reference for the list of operations that are available. In this example, we will call the confirmCustomizationDetails
operation.
- Llama a la operación
confirmCustomizationDetails
de la API de mensajería, utilizando los siguientes parámetros:
Parámetro de ruta:
Parámetro | Descripción | Obligatorio |
---|---|---|
amazonOrderId
|
Un identificador de pedido de Amazon. Especifica el pedido en el que debe enviarse un mensaje. Utiliza el identificador de pedido de Amazon que guardaste en el Paso 1. Obtener el pedido para el que el vendedor desea enviar un mensaje. Tipo: cadena |
Sí |
Parámetro de consulta:
Parámetro | Descripción | Obligatorio |
---|---|---|
marketplaceIds
|
Un identificador de sitio web. Especifica el sitio web en el que se realizó el pedido. Solo se puede especificar un sitio web. Tipo: matriz [cadena] |
Sí |
Parámetro del cuerpo:
Parámetro | Descripción | Obligatorio |
---|---|---|
text
|
El mensaje personalizado que se incluirá en el correo electrónico que se envíe al comprador. Utiliza el texto del mensaje del Paso 4. Obtener un mensaje de texto personalizado del vendedor (si es compatible). Tipo: cadena |
Sí |
attachments
|
Archivos adjuntos que se incluirán en el mensaje para el comprador
|
Sí |
Ejemplo de solicitud
POST https://sellingpartnerapi-na.amazon.com/messaging/v1/orders/902-6786204-8179805/messages/confirmCustomizationDetails?marketplaceIds=ATVPDKIKX0DER
{
"text": "This is the message from the seller to the buyer that will appear in the email to the buyer.",
"attachments": [
{
"uploadDestinationId": "4370d51b-2954-445c-9f30-EXAMPLE6b9de",
"fileName": "example.txt"
}
]
}
Respuesta
No hay respuesta. En su lugar, Amazon envía por correo electrónico el mensaje del vendedor al comprador.
Actualizado hace 2 meses