iugu / iugu-net Goto Github PK
View Code? Open in Web Editor NEWIugu for C#
Iugu for C#
É necessário implementa a API de assinaturas possibilitando a criação e gestão das mesmas.
Maiores informações em: IUGU - API de Assinaturas
Adicionar os badges:
Na linha 100 da classe APIResources.cs há um erro de sincronização, causando um deadlock enquanto a resposta da API é esperada. Uma possível solução é alterar o código :
HttpResponseMessage response = await client.PostAsJsonAsync(BaseURI, data);
por
HttpResponseMessage response = await client.PostAsJsonAsync(BaseURI, data).ConfigureAwait(false);
Alguns clientes relataram não receber respostas dos métodos assíncronos. Vocês tem alguma ideia do que poderia estar causando esse problema?
Para nessa linha:
https://github.com/iugu/iugu-net/blob/vnext/iugu.net/Lib/APIResource.cs#L108
Abraços
É permitido customizar a logo de uma fatura em marketplace, porém ainda não está documentada na IUGU.
Segue especificação:
Observei que a biblioteca está sendo compilada com a versão 4.6.1 do .NET. Acredito que seria interessante compilar com uma versão anterior, 4.5 talvez, que o pessoal que trabalha em projetos com versão mais antigas do framework possam utilizar.
No momento esta feature se aplica nas seguintes APIs:
Pessoal,
erro no response do Request Withdraw. O json de retorno do Iugu é:
{
"id": "530706A3862D4BB49C8AC9637B850CDE",
"status": "pending",
"created_at": "2015-11-26T10:02:23-02:00",
"updated_at": "2015-11-26T10:02:23-02:00",
"reference": null,
"amount": "R$ 10,00",
"account_name": "Conta",
"account_id": "A682CECA59D74527B984CA529D7C2ED4",
"feedback": null,
"bank_address": {
"bank": "Bradesco",
"bank_cc": "11231-2",
"bank_ag": "1234",
"account_type": "Corrente"
}
}
Recebo sempre a exceção falando que não conseguiu converter string em decimal, mas a transferência foi solicitada. Logo fui olhar o código de vocês e está assim:
var retorno = await Api.PostAsync<AccountRequestWithdrawResponseMessage>(new { amount = amount }, $"{targetAccountId}/request_withdraw", customUserApiToken).ConfigureAwait(false);
Deveria estar assim:
var retorno = await Api.PostAsync<AccountRequestWithdrawResponseMessage>(new { amount = decimal.Parse(amount.Trim().Replace("R$", "").Replace(" ", "") }, $"{targetAccountId}/request_withdraw", customUserApiToken).ConfigureAwait(false);
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.
Existem APIs, que tem mais campos do que o retornado pelo client, por conta dos mesmos não estarem documentados e o client utilizar os exemplos de resposta da documentação para criar os objetos.
Hoje as APIs que aceitam arquivos não estão com essa possibilidade via client.
Implementar Api
É necessário remover os .Results dos métodos e tornar o client verdadeiramente assíncrono e evitar deadlocks.
Ex:
// Devem existir 2 versões para o método Get (Uma sincrona e outra assíncrona)
// Versão síncrona
public CustomersModel Get()
{
var retorno = GetAsync().Result;
return retorno;
}
// Versão assincrona
public async Task<CustomersModel> GetAsync()
{
var retorno = await GetAsync<CustomersModel>().ConfigureAwait(false);
return retorno;
}
ref #1
Estou iniciando agora a integração e vi que com a utilização da API, caso tenha algum erro, o objeto é criado de forma normal sem os dados. Veja o exemplo:
using (IHttpClientWrapper stubHttpClient = new StandardHttpClient())
using (IApiResources apiClient = new APIResource(stubHttpClient))
using (var client = new Account(apiClient))
{
verifyAccountResponse = await client.VerifyUnderAccountAsync(requestAccountVerify, response.AccountId, response.UserToken).ConfigureAwait(false);
}
Recebi uma exception do Json com caracteres que não consegui tratar de nenhuma forma:
{"StatusCode":422,"ReasonPhase":"Unprocessable Entity","Message":"{\"errors\":{\"cnpj\":[\"n\\u00e3o pode ficar em branco\",\"n\\u00e3o \\u00e9 v\\u00e1lido\"],\"bank_cc\":[\"d\\u00edgito invalido. (Formato: Ag\\u00eancia: 9999, Conta: XXX99999999-D [X: Opera\\u00e7\\u00e3o])\"]}}"}
Como é feito o tratamento dos erros resultados pela API?
Prezados(as),
Sugiro a inclusão do objeto payer{} (PayerModel) para a classe InvoiceRequestMessage, pois hoje é só possível informá-lo no objeto ChargeRequestMessage.
Como preciso customizar data de vencimento e outros itens da invoice, o objeto Charge não atende.
Com a exigência de emissão de boletos registrados, preciso informar mais dados do pagador, além de apenas o e-mail do pagador.
Obrigado,
Ayslan Flores
Atualmente no projeto só existem testes integrado, entretanto, estão dentro do projeto de testes de unidade. É necessário então:
Eu baixei a última versão, ajustei as de dependências e executei, mas ele dá erro de dependência em tempo de execução, tentei pegar a versão do NuGet, mas ela não reconhece as classes PaymentTokenResponseMessage e PaymentTokenRequestMessage.
iugu-net/iugu.net/Lib/APIResource.cs
Line 166 in f3b0ec5
Nessa linha estamos dando throw numa exception com o reasonPhase da request. Segundo a documentação do c#, esse campo retorna uma string descrevendo o status da request (422 -> Unprocessable Entity, 404 -> Not Found), porém a API da iugu retorna uma mensagem detalhada sobre o erro no corpo da request.
É necessário implementar a API de customização da logo de emissão do boleto como descrito abaixo
URL: https://api.iugu.com/v1/accounts/<ID_DA_CONTA>
HTTP Method: PUT
Autorização : UserToken
Payload: custom_logo
Type: File
Tamanho máximo: 1Mb
Para que o usuários deste client possam receber suas atualizações de forma integrada ao visual studio e como biblioteca externa, via command line, tenha suas dependências diretas resolvidas, e não seja necessário subir nenhuma dll, é necessário transformar em pacote nuget.
Sou eu quem faz as solicitações de transferências da aplicação inteira de forma dinâmica, seja subconta ou conta principal. Não encontrei na API algo semelhante, sendo necessário a criação de um client e objetos manuais para realização do procedimento.
Ao incluir uma fatura obtive o seguinte retorno:
{"StatusCode":422,"ReasonPhase":"Unprocessable Entity","Message":"{\"errors\":{\"total\":[\"deve ser maior que 0\"]}}"}
Porém não existe "total" no item, eu apenas estava usando "price" ao invés de "price_cents". Talvez seja uma boa ajustar a mensagem da api.
É necessário implementar a API de configuração da conta criada.
Maiores informaçõs em IUGU - Api de Configuração de Conta
Listar de 30 em 30 as transações
GET(https://api.iugu.com/v1/financial_transaction_requests)
| https://api.iugu.com/v1/financial_transaction_requests/?start=30
Obs: Navegação entre páginas é feita enviando via queystring
Simula o adiantamento retornando as taxas e demais informações
GET(https://api.iugu.com/v1/financial_transaction_requests/advance_simulation)
| Parametro transactions é uma lista com os ids das transações obtidas pela chamada da listagem
Executa uma antecipação
POST(https://api.iugu.com/v1/financial_transaction_requests/advance)
| Parâmetro transactions é uma lista com os ids das transações obtidas pela chamada da listagem
O valor "Expired" da constante está com o E maiúsculo.
A API retorna com o "e" minúsculo.
Os valores das demais contantes está com tudo minúsculo.
É necessário implementar a API de cobrança para boleto bancário
Olá, boa noite!
Alguém possui um exemplo de como usar as seguintes funções:
Obrigado,
Homero.
Como recomendação sugiro criar o branch develop no repositório. E torna-lo o principal.
O objetivo desta issue é trazer mais testabilidade com as seguintes alterações:
Ex:
// Atualmente
public class Customer : APIResource
{
public Customer()
{
BaseURI += "/customers";
}
}
// Depois
public class Customer : IDisposable
{
private readonly IApiResource _client;
public Customer(IApiResourceclient) : this()
{
_client = client;
}
protected Customer()
{
_client = _client ?? new ApiResource();
_client.BaseURI += "/customers";
}
public void Dispose()
{
_client.Dispose();
GC.SuppressFinalize(this);
}
}
Não consegui encontrar na biblioteca uma forma de criar uma forma de pagamento, tendo o token, para um cliente já cadastrado. No meu fluxo de aplicação, eu irei cadastrar um cliente e só irei pegar o meio de pagamento posteriormente. Na API seria o POST em "https://api.iugu.com/v1/customers/ID_DO_CLIENTE/payment_methods". Existe essa funcionalidade na biblioteca?
Existem APIs que permitem buscas com filtros mais elaborados, como:
Ao utilizar a API Listar as Faturas (GET https://api.iugu.com/v1/invoices), e receber o retorno OK, e ao realizar o parse e/ou tentar popular os respectivos campos no lado da minha aplicação, os campos vem todos NULL. Analisando verifiquei que alguns poucos campos retornam dados e o preenchem em minha model. Também percebo que a Model Entity InvoiceModel não tem suas propriedades decoradas com os atributos retornados pela API em JSON, como as outras model tem. Será que alguem ja teve este problema, pois com as outras api que utilizo esta funcionando e esta não...
Ao utilizar o método da API VerifyUnderAccountAsync com Id que contenha hífen está sempre retornando Unauthorized.
Acredito que isso seja um bug pois em outras chamadas isso não acontece.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.