Closed Thiago4breu closed 7 years ago
@Thiago4breu ,
Você não está confundindo? Não conheço o IUGU.js, mas a api que permite um envio de token no corpo da request é a de Charge (ChargeRequestMessage).
Veja se não é dessa request que você está falando: POST https://api.iugu.com/v1/charge
Rodrigo, creio que os assuntos são distintos. Neste caso, não é uma cobrança direta, é uma Assinatura utilizando o Subscription. No caso do Charge API funcionaría com o IUGU.js porque possui o campo TOKEN para envio.
Sobre o IUGU.js (https://iugu.com/referencias/iugu-js) é um modelo (não sei se novo deles) onde o formulário com dados do cartão é enviado diretamente e retornado um TOKEN, não sendo necessário a utilização do método de criação do TOKEN (https://iugu.com/referencias/api#criar-um-token)
Lembrando que neste caso, como é uma assinatura que estou gerando, estou seguindo o passo-a-passo conforme documento ilustrativo (https://d21fvzaqybvyws.cloudfront.net/9CA0F40E971643D1B7C8DE46BBC18396/images/207/207/5745f26d5b2450d08645d0ddab6915e0690c8437f5427.jpg) e utilizando o método de assinaturas (https://iugu.com/referencias/api#criar-uma-assinatura este que não recebe o token, nem dados do cartão, apenas o cliente e utiliza a forma de pagamento prioritário).
Espero ter ajudado, grande abs.
Fala @Thiago4breu,
Então eu acho que não entendi...rsrs. Lendo a documentação da API de assinatutas ela não aceita nenhum token. Na de token de pagamento tbm não.
Onde precisa ter o dado do Token que não tem? Em que API? Pelo que estou entendendo isso não está documentado ainda.
Então Rodrigo, é um pouco confusa mesmo a API neste sentido. Tanto que solicitei auxilio do suporte para compreender este modelo de assinaturas. Resumindo, o Fluxo neste caso seria +/- este (para cartão de crédito):
Front-End 1 - Gerar o TOKEN de pagamento (formulário HTML com IUGU.js que retorna o TOKEN)
Back-End 1 - Envia o TOKEN via post 2 - Cadastra o cliente no IUGU (API: https://iugu.com/referencias/api#criar-um-cliente) 3 - Cadastro o Meio de Pagamento usando o Token (API: https://iugu.com/referencias/api#criar-uma-forma-de-pagamento) 4 - Cria a assinatura para o Cliente (API: https://iugu.com/referencias/api#criar-uma-assinatura)
São 3 operações separadas que criam a assinatura para o cliente utilizando o meio de pagamento preferencial dele, um pouco diferente da ChargeAPI é verdade.
Abs
Boa tarde pessoal.
O que o @Thiago4breu está querendo dizer é que falta o parâmetro token aqui https://github.com/iugu/iugu-net/blob/vnext/iugu.net/Entity/PaymentMethodModel.cs
Assim, em vez de mandar o parâmetro data com os dados do cartão, ele pode mandar o token que vem do iugu.js.
Abraços
@alepaez não é bem exatamente colocar este parâmetro token apenas. Deve haver uma lógica no processo segundo a documentação e algo que constatei na prática utilizando uma API REST.
Para o caso de enviar o TOKEN deve-se remover o campo ITEM_TYPE e o campo DATA do request, ou será disparado erro, pois este é obrigatório quando o campo DATA é enviado.
E pelos testes que executei, esta lógica no JSON de request deve ser seguida senão a API retorna erro.
Portanto, se utilizar token (formato novo):
{ "description":"Teste Criado API", "token":"0f8fad5b-d9cb-469f-a165-70867728950e" }
Se enviar os dados do Cartão (formato antigo que será descontinuado segundo a API):
{ "description":"Teste Criado API", "item_type":"credit_card", "data" : { "number" : "4111111111111111", "verification_value" : "123", "first_name": "teste", "last_name": "usuario", "month" : "02", "year" : "2020" } }
Abs
@Thiago4breu
Eu estou muito pegado essa semana por isso ainda não fiz essa alteração no client pra atender esse novo modelo, não é dificil fazer só estou sem tempo infelizmente só poderei fazer semana que vem. Se vc quiser submeter a PR eu olho e aceito rápido, ai é so rodar o deploy do novo nuget e pronto.
Se você puder esperar esses dias, semana que vem posso fazer. Se arrumar algum tempo antes eu faço.
Mas relembro que PRs são bem vindas. 😄
Um abraço @rscouto
@Thiago4breu , Essa era uma implementação antiga já existia o método no client pra isso, porem ele sempre enviava os 2 o token e os dados do cartão, dando o erro que vc mesmo citou. Corrigi isso, melhorei a documentação do método. Infelizmente não pude mudar a assinatura horrivel dele. Fica pra v2.0 já que não posso quebrar as assinaturas nesse momento.
// https://iugu.com/referencias/api#criar-uma-forma-de-pagamento
using (var apiClient = new PaymentMethod("id_do_cliente"))
{
// sorry pela assinatura horrorosa :(
var paymentmMethod = await apiClient.CreateAsync("my credit data", null, null, "my token")
.ConfigureAwait(false);
};
Disponivel na versão: 1.8.10 do client nuget 1.8.10
@rscouto
Valeu Rodrigo! Ficou ótimo!
Abraços
@rscouto Beleza Rodrigo, na verdade eu também estou bem complicado acabei fazendo este método nativo com httpclient para resolver meu problema aqui.
Mas ja vou ajustar meu código para utilizar a Lib.
Grande Abs
Fala @Thiago4breu,
Por acaso chegou a testar e tal? Posso fechar a issue?
De acordo com a análise da API atual (https://iugu.com/referencias/api) há algumas divergências que impedem o novo modelo indicado para uso.
A equipe de suporte do iugu me recomendou integração utilizado do iugu.js para registrar o meio de pagamento e depois vincular o cliente ao Token de pagamento apenas e não mais utilizar o atributo Data para envio dos dados de pagamento, pois este está obsoleto.
O problema é que o request para registrar o meio de pagamento não possui o campo Token e por isto não consigo vincular o cliente com a forma de pagamento gerada pelo iugu.js.
*Obs: não analisei a API toda, este foi o ponto que identifiquei de problema no arquivo de Request de um meio de pagamento (https://github.com/iugu/iugu-net/blob/vnext/iugu.net/Request/PaymentTokenRequestMessage.cs)
Issue criada conforme solicitação da equipe de suporte.