Conectar-se à API do parceiro de vendas usando um SDK C# gerado

Conecte-se à SP-API usando um SDK C# gerado.

Este tutorial descreve como usar um kit de desenvolvimento de software (SDK) gerado em C# para fazer chamadas à API. O SDK expõe classes para configurar as credenciais do LWA e da AWS e as usa para gerar tokens do LWA e assinar solicitações por você. Para obter mais informações, consulte Gerar um SDK em C# com geração e autenticação de tokens do LWA.

Antes que seu aplicativo possa se conectar à API do parceiro de vendas, você precisa registrá-lo e um parceiro de vendas deve autorizá-lo. Consulte Como registrar seu aplicativo e Como autorizar aplicativos da API do parceiro de vendas.

Você também deve instalar as seguintes dependências via https://visualstudio.microsoft.com/downloads no Visual Studio:

  • JsonSubTypes 1.2.0 ou todos
  • Newtonsoft.json 12.0.3 ou todos
  • RestSharp 106.12.0
  • RateLimiter 2.2.0 ou mais recente (isso também instalará ComposableAsync.Core)

Etapa 3. Configurar as credenciais do LWA

Crie uma instância de LWAAuthorizationCredentials usando estes parâmetros:

NomeDescriçãoObrigatório
ClientIdSeu identificador de cliente do LWA. Para obter mais informações, consulte Visualizar as informações e credenciais do aplicativo.Sim
ClientSecretSeu segredo de cliente do LWA. Para obter mais informações, consulte Visualizar as informações e credenciais do aplicativo.Sim
RefreshTokenO token de atualização do LWA. Obtenha esse valor quando o parceiro de vendas autorizar seu aplicativo. Para obter mais informações, consulte Como autorizar aplicativos da API do parceiro de vendas.Não. Inclua RefreshToken se a operação que você chamar na etapa a seguir exigir autorização do parceiro de vendas. Todas as operações que não são operações sem concessão exigem autorização do parceiro de vendas. Se você incluir RefreshToken, não inclua Scopes.
Scopes

O escopo da concessão de autorização da LWA. Assume o valor ScopeNotificationsAPI para o API de notificações.

Não. Inclua Scopes se a operação que você chamar na etapa a seguir for uma operação sem concessão. Se você incluir Scopes, não inclua RefreshToken.
EndpointO URI do servidor de autenticação do LWA.Sim

Exemplo de uma chamada de operação que exige autorização do parceiro de vendas:

using Amazon.SellingPartnerAPIAA; LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials { ClientId = "myClientId", ClientSecret = "myClientSecret", RefreshToken = "Aztr|...", Endpoint = new Uri(""https://api.amazon.com/auth/o2/token"") };

Exemplo de uma chamada de operação sem concessão

using Amazon.SellingPartnerAPIAA; LWAAuthorizationCredentials lwaAuthorizationCredentials = new LWAAuthorizationCredentials { ClientId = "myClientId", ClientSecret = "myClientSecret", Scopes = new List<string>() { ScopeConstants.ScopeNotificationsAPI, ScopeConstants.ScopeMigrationAPI } Endpoint = new Uri(""https://api.amazon.com/auth/o2/token"") };

Etapa 3. Criar uma instância da API do vendedor e chamar uma operação

Depois de configurar seu LWAAuthorizationCredentials, você pode criar uma instância de SellersApi e chame uma operação.

Por exemplo:

SellersApi sellersApi = new SellersApi.Builder() .SetLWAAuthorizationCredentials(lwaAuthorizationCredentials) .Build();

Solucionar problemas de um SDK C#

Erros de IRestRequest: “RestSharp Version=105.0.0.0. Culture=neutral. PublicKevToken=598062e77f915f75 está definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly {{2}}”

Clique para expandir a resposta. Atualize o pacote do {{0}} para a versão 106.12.0.0. Verifique a referência para garantir que a versão 106.12 tenha sido atualizada com êxito. Se a versão 105.0.0.0 continuar sendo exibida, remova a versão antiga da referência e adicione o pacote 106.12.0.0 manualmente da pasta de pacotes com a biblioteca de clientes gerada.

“O tipo ou o nome do espaço de nomes {{0}} não foi encontrado (está faltando uma diretiva de uso ou uma referência de assembly?)”

Selecione para expandir a resposta.

In some scenarios, even though you have the required version in the NuGet packages for Newtonsoft, it requires manual addition from the package folder in the file system. To resolve this, use the following steps:

  1. In Visual Studio, right-click your generated SDK package and choose Add, then References.

  2. On the references window in the .Net Assembly, choose browse.

  3. Navigate to the generated client library folder in local > packages and add the specific package for Newtonsoft.

“Mensagem: Não foi possível carregar o tipo de campo SellingPartnerAPI.servicesApi.Client.ApiClient:rateLimiter (3) devido a: Não foi possível carregar o arquivo ou o assembly ComposableAsync.Core, Version=1.1.1.0, Culture=neutral, PublicKeyToken=null ou uma de suas dependências.”

Selecione para expandir a resposta.

Se você receber esse erro depois de criar e executar seu código, isso significa que o pacote de dependência ComposableAsync.Core foi baixado, mas não foi incluído como referência. Certifique-se de adicionar manualmente a dll como referência.

Problemas de mapeamento com modelos

Selecione para expandir a resposta.

O modelo ItemAsin foi gerado com o tipo JsonObject, mas a string necessária ItemAttributes requer o JsonObjectAttribute. Você pode usar esse comando, que usa a API de itens do catálogo, para importar o mapeamento necessário para os modelos:

`java -jar swagger-codegen-cli.jar generate -i catalogItems_2022-04-01.json -l csharp -t sellingpartner-api-aa-csharp\src\Amazon.SellingPartnerAPIAA\resources\swagger-codegen\templates —import-mappings ItemAttributes=Newtonsoft.Json.JsonObjectAttribute —import-mappings ItemAsin=System.string -o catalogItems2022-04-01_import`

HttpRequestHeaders.ToJson(): nenhum método adequado foi encontrado para a substituição.”

Selecione para expandir a resposta.

Substitua a palavra-chave override por virtual. Declare os métodos como virtual para que possam ser substituídos.

public virtual string ToJson() { return JsonConvert.SerializeObject(this, Formatting.Indented); }

“O nome BaseValidate não existe no contexto atual”

Selecione para expandir a resposta.

Remova o comentário dos métodos mencionados na classe:

// IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> IValidatableObject.Validate(ValidationContext validationContext) // { // foreach (var x in BaseValidate(validationContext)) // yield return x; // yield break; // }

Esta página ajudou você?