pagarme / pagarme-net

Pagar.me .NET library
MIT License
42 stars 49 forks source link

Unable to cast object of type 'System.Int64' to type 'System.String'. #82

Closed fjcunha closed 6 years ago

fjcunha commented 6 years ago

Exception é lançada quando tento acessar a propriedade Tid de uma Transaction após método Save(), pois o valor (Tid) gerado internamente trata-se de um int e o model que recebe é uma String.

ex: essa é uma transação que será capturada posteriormente:

PagarMeService.DefaultApiKey = "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0";

Transaction transaction = new Transaction();

transaction.Amount = 1000;
transaction.CardHash = "CARD_HASH_GERADO";
transaction.ShouldCapture = false,
transaction.Customer = new Customer() {
    Name = "John Appleseed",
    DocumentNumber = "92545278157",
    Email = "jappleseed@apple.com",
    Address = new Address() {
        Street = "Rua Dr. Geraldo Campos Moreira",
        Neighborhood = "Cidade Monções",
        Zipcode = "04571020",
        StreetNumber = "240"
    },
    Phone = new Phone() {
        Ddd = "11",
        Number = "15510101"
    }
};

transaction.Save();

Neste ponto quero salvar o Tid para fazer a captura depois. Mas no campo Tid ja está a Exception do cast errado e ao tentar usar a propriedade

string Tid = transaction.Tid;

ele quebra.

image

murilohns commented 6 years ago

Olá @fjcunha, para realizar a captura da transação posteriormente você deve salvar o campo ID.

O campo Tid pode variar de acordo com a adquirente onde sua transação foi processada, em casos de integração de apenas gateway, o Tid é retornado como string. Esse campo faz referência ao registro da transação entre Pagar.me e Adquirente e não necessariamente terá o mesmo valor que o ID da transação no Pagar.me.

Em resumo, utilize o campo Id invés do Tid.

string id = transaction.Id;
fjcunha commented 6 years ago

Obrigado @murilohns deu certo, com a biblioteca deu certo, aconteceu que tentei utilizar esse campo transaction.Id direto na chamada da API para testar e voltava not found, então notei que usando o Tid conseguia e tentei utilizar o Tid também no código e notei o problema.