Guia de casos de uso da API de mensagens v1
Envie mensagens aos compradores sobre seus pedidos
O que é a API de mensagens?
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.
Terminologia
URL pré-assinada do Amazon S3: Uma URL para um bucket do Amazon S3 para o qual você pode fazer upload de um objeto sem credenciais ou permissões de segurança da AWS. Você recebe uma URL pré-assinada do Amazon S3 em Etapa 7. Crie um destino de upload.
Disponibilidade de mensagens
Nem todos os tipos de mensagens estão disponíveis em todas as circunstâncias. Há vários fatores que podem afetar a disponibilidade da mensagem, incluindo se o pedido foi atendido, o tipo de vendedor ou o número de mensagens já enviadas para o pedido.
Fluxo de trabalho para enviar uma mensagem
O seguinte é para o usuário do aplicativo. O envio de uma mensagem é um processo de várias etapas que inclui chamadas para operações na API de mensagens e na API de uploads. Aqui está o fluxo de trabalho básico para enviar uma mensagem:
-
Seu aplicativo exibe os pedidos recentes do vendedor, e o vendedor escolhe um pedido para o qual
ele quer enviar uma mensagem ao comprador. -
Seu aplicativo exibe os tipos de mensagem que estão disponíveis para o pedido escolhido pelo vendedor. Obtenha os tipos de mensagens disponíveis ligando para o
getMessagingActionsForOrder
operação da API de mensagens. -
O vendedor escolhe um tipo de mensagem para o pedido.
-
Se o tipo de mensagem permitir mensagens personalizadas, o vendedor insere uma mensagem personalizada.
-
Se o tipo de mensagem permitir anexos, o vendedor envia um anexo para seu aplicativo. O vendedor também informa um nome de arquivo para o anexo.
-
Se o vendedor fizer upload de um anexo em seu aplicativo, seu aplicativo enviará o anexo a um bucket do Amazon S3 executando as seguintes etapas:
-
Calcular um hash Content-MD5 para o anexo, o que é necessário para criar um destino de upload.
-
Criar um destino de upload chamando a operação
createUploadDestination
da API de Uploads. -
Fazer o upload do anexo para o destino.
-
-
Seu aplicativo solicita que uma mensagem seja enviada do vendedor para o comprador ligando para a operação que corresponde ao tipo de mensagem que o vendedor escolheu na etapa #3. Por exemplo, seu aplicativo chama o
createConfirmOrderDetails
operação se o vendedor escolher o tipo de mensagem “Confirmar detalhes do pedido”. -
A Amazon envia por e-mail uma mensagem do vendedor para o comprador.
Veja o fluxo de trabalho detalhado no Tutorial: enviar uma mensagem.
Tutorial: enviar uma mensagem
Este tutorial ensina como criar um aplicativo que permite que um vendedor envie uma mensagem para um comprador.
Pré-requisitos
Para concluir este tutorial, você precisa:
-
Autorização do vendedor para quem você está fazendo chamadas. Consulte Autorização de Aplicações da API do parceiro de vendas para obter mais informações.
-
Aprovação da função de comunicação do comprador em seu perfil de desenvolvedor.
-
A função de Comunicação do comprador selecionada na página de registro do seu aplicativo.
Etapa 1. Obter o pedido para o qual o vendedor deseja enviar uma mensagem
-
Exibe uma lista dos pedidos recentes do vendedor dentre os quais ele pode escolher.
-
O vendedor escolhe um pedido do qual deseja enviar uma mensagem ao comprador.
-
Associe um identificador de pedido da Amazon ao pedido escolhido pelo vendedor.
-
Salve o identificador de pedido da Amazon para a Etapa 2. Obter uma lista dos tipos de mensagens disponíveis.
Etapa 2. Obter uma lista dos tipos de mensagens disponíveis
Chame a operação getMessagingActionsForOrder
da API de mensagens, especificando o identificador de pedido da Amazon obtido na
Etapa 1. Obter o pedido para o qual o vendedor deseja enviar uma mensagem para obter uma lista dos tipos de mensagens que estão disponíveis para o pedido.
- Chame a operação
getMessagingActionsForOrder
da API de mensagens, passando os seguintes parâmetros:
Parâmetro do caminho:
Parâmetro | Descrição | Obrigatório |
---|---|---|
amazonOrderId
|
Um identificador de pedido da Amazon. Isso especifica o pedido do qual uma mensagem será enviada. Obtenha esse valor na Etapa 1. Obter o pedido para o qual o vendedor deseja enviar uma mensagem. Tipo: string |
Sim |
Parâmetro de consulta:
Parâmetro | Descrição | Obrigatório |
---|---|---|
marketplaceIds
|
Um identificador de marketplace. Isso especifica o marketplace no qual o pedido foi feito. Você pode especificar somente um marketplace. Tipo: matriz [string] |
Sim |
Exemplo de solicitação
GET https://sellingpartnerapi-na.amazon.com/messaging/v1/orders/902-6786204-8179805?marketplaceIds=ATVPDKIKX0DER
Resposta
O esquema de resposta da operação getMessagingActionsForOrder
.
Nome | Descrição | Schema |
---|---|---|
_links optional | Um objeto cujos nomes de propriedade são tipos de relação de link e os valores são um objeto de link ou uma matriz de objetos de link. O recurso de assunto desses links é o Objeto de recurso, do qual o objeto “_links” que o contém é uma propriedade. | _links |
_embedded optional | Um objeto cujos nomes de propriedades são tipos e valores de relação de link e são um Objeto de recurso ou uma matriz de Objetos de recurso. Os recursos incorporados podem ser uma versão completa, parcial ou inconsistente da representação fornecida pelo URI de destino. | _embedded |
errors optional | Uma lista de respostas de erro retornadas quando uma solicitação não é bem-sucedida. | ErrorList |
_links
Nome | Descrição | Schema |
---|---|---|
self required | Corresponde à relação “própria” registrada pela IANA, cujo alvo é o URI do recurso. | LinkObject |
actions required | Ações elegíveis para o AmazonOrderID especificado. | < LinkObject > array |
Nome | Schema |
---|---|
actions required | Matriz < GetMessagingActionResponse > |
Exemplo de resposta
{
"_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"
},
]
}
}
-
Salve a lista de esquemas na matriz de
_embedded.actions
da resposta. Na seção_embedded.schema
de cada elemento da matriz, você pode encontrar um esquema para cada tipo de mensagem disponível. Use o valor detitle
em cada esquema para criar uma lista de tipos de mensagens disponíveis para o vendedor escolher na Etapa 3. Obter a escolha do tipo de mensagem do vendedor. Use os esquemas para entender como exibir e aplicar as restrições para mensagens e anexos personalizados que se aplicam a cada tipo de mensagem. Para obter mais informações, consulte Etapa 4. Receber uma mensagem de texto personalizada do vendedor (se houver suporte) e Etapa 5. Obter um anexo do vendedor (se houver suporte). -
Salve a lista de caminhos na matriz de
_links.actions
da resposta. O valor dehref
em cada elemento da matriz contém um caminho para cada tipo de mensagem disponível. Você pode usar um desses caminhos em uma chamada para a operação apropriada na Etapa 9. Enviar uma mensagem ao comprador.
Etapa 3. Obter a escolha do tipo de mensagem do vendedor
-
Exiba uma lista dos tipos de mensagens disponíveis para o vendedor escolher. Obtenha-os dos valores de
title
que você salvou na Etapa 2. Obter uma lista dos tipos de mensagens disponíveis. -
Deixe que o vendedor escolha o tipo de mensagem que deseja enviar e salve-o. Essa escolha afetará várias etapas subsequentes, incluindo:
-
Etapa 4. Receber uma mensagem de texto personalizada do vendedor (se for suportada). A escolha do tipo de mensagem determina se uma mensagem personalizada é permitida.
-
Etapa 5. Obter um anexo do vendedor (se for suportado). A escolha do tipo de mensagem determina se os anexos são suportados.
-
Etapa 9. Enviar uma mensagem para o comprador. A escolha do tipo de mensagem determina qual operação você chamará na Etapa 9. Por exemplo, se o vendedor escolher o tipo de mensagem “Confirmar detalhes de personalização”, você chamará a operação
confirmCustomizationDetails
na Etapa 9.
-
Etapa 4. Receber uma mensagem de texto personalizada do vendedor (se for suportada)
Alguns tipos de mensagem permitem que o vendedor inclua uma mensagem personalizada no e-mail para o comprador. Para descobrir se um tipo de mensagem permite mensagens personalizadas, consulte a referência de API de mensagens para encontrar a operação que corresponde ao tipo de mensagem. Por exemplo, a operação createConfirmServiceDetails
corresponde ao tipo de mensagem “Contatar o cliente do Home Service”. Se a operação incluir um parâmetro de corpo de texto, o tipo de mensagem permitirá mensagens personalizadas.
-
Determine se o tipo de mensagem que o vendedor escolheu na Etapa 3. Obter a escolha do tipo de mensagem do vendedor permite mensagens personalizadas. Se as mensagens personalizadas não forem suportadas, vá diretamente para Etapa 5. Obter um anexo do vendedor (se for suportado). Se mensagens personalizadas forem permitidas, continue com esse procedimento.
-
Permita que o vendedor insira o texto bruto que deseja para a mensagem personalizada.
-
Exiba e aplique quaisquer restrições ao texto da mensagem inserida pelo vendedor. Você pode encontrar as restrições de texto na seção
_embedded.schema.properties.rawMessageBody
do elemento de matriz de_embedded.actions
que corresponde ao tipo de mensagem do vendedor. Encontre isso na resposta da operaçãogetMessagingActionsForOrder
na Etapa 2. Obter uma lista dos tipos de mensagens disponíveis. -
Salve o texto da mensagem e use-o como entrada para Etapa 9. Enviar uma mensagem para o comprador.
Etapa 5. Obter um anexo do vendedor (se for suportado)
Alguns tipos de mensagem permitem que o vendedor inclua um link para um anexo no e-mail para o comprador. Para descobrir se um tipo de mensagem permite anexos, consulte a referência de API de mensagens para encontrar a operação que corresponde ao tipo de mensagem. Por exemplo, a operação createWarranty
corresponde ao tipo de mensagem “Enviar informações de garantia”. Se a operação incluir um parâmetro de corpo de anexos, o tipo de mensagem permitirá anexos.
-
Determine se o tipo de mensagem que o vendedor escolheu na Etapa 3. Obter a escolha do tipo de mensagem do vendedor permite anexos. Se os anexos não forem suportados, vá diretamente para Etapa 9. Enviar uma mensagem para o comprador. Se forem permitidos anexos, continue com esse procedimento.
-
Permita que o vendedor envie um anexo para seu aplicativo.
-
Exiba e aplique quaisquer restrições ao anexo enviado pelo vendedor. Você pode encontrar as restrições de anexo na seção
_embedded.schema.properties.attachments
do elemento de matriz de_embedded.actions
que corresponde ao tipo de mensagem do vendedor. Encontre isso na resposta da operaçãogetMessagingActionsForOrder
na Etapa 2. Obter uma lista dos tipos de mensagens disponíveis. -
Converta o anexo em um fluxo de entrada e salve-o para a Etapa 8. Fazer upload do anexo.
-
Permita que o vendedor insira um nome de arquivo para o anexo, incluindo a extensão do arquivo.
-
Salve o nome do arquivo e use-o como entrada para Etapa 9. Enviar uma mensagem para o comprador.
Etapa 6. Calcular um hash Content-MD5
Calcule um hash Content-MD5 para o anexo a partir de Etapa 5. Obter um anexo do vendedor (se for suportado). Você precisará dele para criar um destino de upload na Etapa 7. Criar um destino de upload.
O código de amostra Java nesta etapa contém a lógica para calcular um hash Content-MD5. Esse código de exemplo usa o cliente HTTP Apache.
- Use o seguinte como entrada para o código de amostra:
• O fluxo de entrada de anexo da Etapa 5. Obter um anexo do vendedor (se for suportado) é o argumento para o parâmetro fis
do método computeContentMD5Value
da classe CreateMD5
.
- Salve o valor
md5Content
a ser passado com o parâmetroContent-MD5
na Etapa 7. Criar um destino de upload.
Exemplo 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;
}
}
Etapa 7. Criar um destino de upload
Chame a operação createUploadDestination
da API de Uploads para criar um destino de upload para seu anexo, na forma de um URL pré-assinado do Amazon S3. Para obter definições, consulte Terminologia.
- Chame a operação
createUploadDestination
da API de Uploads, passando os seguintes parâmetros:
Parâmetros de consulta:
Type | Nome | Descrição | Schema |
---|---|---|---|
Query | marketplaceIds required | Uma lista de identificadores de mercado. Isso especifica os mercados em que o upload estará disponível. Somente um mercado pode ser especificado. Contagem máxima : 1 | < fio > matriz |
Query | Conteúdo MD5 required | O hash Content-MD5 que você calculou em Etapa 6. Calcular um hash de conteúdo MD5. | string |
Path | recurso required | O recurso para o destino de upload que você está criando. Por exemplo, se você estiver criando um destino de upload para a operação CreateLegalDisclosure da API Messaging, o {resource} seria /messaging/v1/orders/{amazonOrderId}/messages/legalDisclosure , e todo o caminho seria /uploads/2020-11-01/uploadDestinations/messaging/v1/orders/{amazonOrderId}/messages/legalDisclosure . Se você estiver criando um destino de upload para um documento de conteúdo do Aplus, o {resource} seria aplus/2020-11-01/contentDocuments e o caminho seria /uploads/v1/uploadDestinations/aplus/2020-11-01/contentDocuments . | string |
Query | contentType optional | O tipo de conteúdo do arquivo a ser carregado. | string |
Exemplo de solicitação
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
Resposta
O esquema de resposta da operação createUploadDestination
.
Nome | Descrição | Schema |
---|---|---|
payload optional | Informações sobre um destino de upload. | UploadDestination |
errors optional | Uma lista de respostas de erro retornadas quando uma solicitação não é bem-sucedida. | ErrorList |
Exemplo de resposta
{
"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=="
}
}
}
- Salve os seguintes valores:
- url e headers. Use esses valores na Etapa 8. Fazer upload do anexo.
uploadDestinationId
. Use this value in Step 9. Send a message to the buyer.
Etapa 8. Fazer upload do anexo
Faça o upload para um bucket do Amazon S3 do anexo que o vendedor enviou para seu aplicativo na Etapa 5. Obter um anexo do vendedor (se for suportado).
O código de amostra Java nesta etapa contém a lógica para fazer o upload de um anexo. Esse código de exemplo usa o cliente HTTP Apache.
Use o seguinte como entrada para o código de amostra:
-
Use o valor url que você salvou na Etapa 7. Criar um destino de upload como argumento para
URL(uploadDestinationPayload.getPayload().getUrl())
na classeUploadFileToDestination
. -
Use o valor headers que você salvou na Etapa 7. Criar um destino de upload como entrada para
(Map < String, String > )uploadDestinationPayload.getPayload().getHeaders()
na classeUploadFileToDestination
. -
Use o fluxo de entrada de anexos que você salvou na Etapa 4. Receber uma mensagem de texto personalizada do vendedor (se for suportada) e use-o como entrada para o método
out.write()
da classeUploadFileToDestination
.
Exemplo 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();
}
}
O anexo é enviado para o bucket do Amazon S3.
Etapa 9. Enviar uma mensagem para o 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.
- Chame a operação
confirmCustomizationDetails
da API de mensagens, passando os seguintes parâmetros:
Parâmetro de caminho:
Parâmetro | Descrição | Obrigatório |
---|---|---|
amazonOrderId
|
Um identificador de pedido da Amazon. Isso especifica a ordem para a qual uma mensagem deve ser enviada. Use o identificador de pedido da Amazon que você salvou na Etapa 1. Obter o pedido para o qual o vendedor deseja enviar uma mensagem. Tipo: string |
Sim |
Parâmetro de consulta:
Parâmetro | Descrição | Obrigatório |
---|---|---|
marketplaceIds
|
Um identificador de marketplace. Isso especifica o marketplace no qual o pedido foi feito. Você pode especificar somente um marketplace. Tipo: matriz [string] |
Sim |
Parâmetro do corpo:
Parâmetro | Descrição | Obrigatório |
---|---|---|
text
|
A mensagem personalizada a ser incluída no e-mail para o comprador. Use o texto da mensagem de Etapa 4. Receber uma mensagem de texto personalizada do vendedor (se for suportada). Tipo: string |
Sim |
attachments
|
Anexos a serem incluídos na mensagem para o comprador
|
Sim |
Exemplo de solicitação
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"
}
]
}
Resposta
Não há resposta. Em vez disso, a Amazon envia por e-mail a mensagem do vendedor para o comprador.
Atualizado há 2 meses