Integração PagSeguro com Asp.Net MVC ?

Comentários

8 comentários

  • Felipe Olimpio

    Olá Fernando, tudo bem?

    Possuímos um repositório oficial no github com uma sdk .net. Segue o link: https://github.com/pagseguro/pagseguro-sdk-dotnet

    Recomendo dar uma olhada em nossa documentação oficial para entender mais sobre como realizar as chamadas para nossas APIs em conjunto à SDK, inclusive como utilizar o Sandbox para efetuar seus testes. Segue link:

    https://dev.pagseguro.uol.com.br/v2/reference

  • Fernando Paiva

    Felipe Soares vc tem algum exemplo de uma aplicação que use Checkout Transparente com essa SDK DotNet ?

    Olhei a documentação porém não encontrei um exemplo claro de como começar e terminar uma aplicação usando essa biblioteca. Além disso, no diretório Example tbm não tem exemplos claros. 

    Por isso, precisava de um exemplo claro do uso dessa biblioteca.

    obrigado!

     

  • Felipe Olimpio

    Oi Fernando, tudo bem?

    O único exemplo que possuímos da SDK é o que está dentro do diretório Exemple.

    Para o Checkout Transparente, dentro do diretório "Direct" você encontrará exemplos via: Boleto, Cartão de Crédito e Débito Online. 

    Na pasta Configuration através do nó XML <credential> você poderá configurar suas credenciais para rodar o exemplo da pasta Direct.

    Lembre-se de que no Checkout Transparente você precisa passar o parâmetro senderHash em cada chamada. (no caso da lib, o método é: checkout.Sender.Hash) Para obter o hash você precisa utilizar a biblioteca JS diretamente do browser do comprador. Nossa documentação explica como utilizar essa biblioteca: https://dev.pagseguro.uol.com.br/v2/reference#checkout-transparente-importando-a-biblioteca-javascript

    O mesmo vale para transações via cartão de crédito no parametro creditCardToken (checkout.Token), com a biblioteca JS você vai conseguir gerar o token do cartão do seu comprador.

  • Fernando Paiva

    Felipe, eu estou tentando usar a SDK para C# que você sugeriu mas está dando erro. Quero fazer um Checkout Transparete usando essa biblioteca, mas ainda estou sem sucesso. Vou postar meu codigo e espero que me ajude pq ta bemm complicado de implementar isso pois a documentação não ajuda muito. 

    Erro: HttpStatusCode: Unauthorized

     

    Controller

    //finaliza venda PagSeguro
    public JsonResult FinalizaVenda(PagarMeModel model) {

    try{
    AccountCredentials credentials = PagSeguroConfiguration.Credentials(true);

    PaymentRequest payment = new PaymentRequest();
    payment.Currency = Currency.Brl;
    payment.Reference = DateTime.Now.ToString("ddMMyyyyhhmmss");

    //telefone do cliente
    Phone phone = new Phone();
    String area = model.telFonePropCartao.Substring(0, 2);
    String numero = model.telFonePropCartao.Substring(2, 9);
    phone.AreaCode = area;
    phone.Number = numero;

    //cliente
    Sender cliente = new Sender(model.nomeComprador,
    model.emailComprador,
    phone);
    payment.Sender = cliente;

    //item
    payment.Items.Add(
    new Item(
    "0001",
    "Pacote de acesso de 30 dias",
    1,
    PagSeguroCfg.VALOR_PACOTE_DECIMAL
    )
    );

    Uri paymentRedirectUri = payment.Register(credentials);

    Debug.WriteLine(paymentRedirectUri);

    jsonResposta.Add("status", "1");
    jsonResposta.Add("msg", "Transação realizada com sucesso!");

    }
    catch (PagSeguroServiceException e){
    jsonResposta.Add("status", "0");
    jsonResposta.Add("msg", e.Message);
    Debug.WriteLine("Erro de Pagamento: " + e.Message);
    }

    return Json(jsonResposta);
    }

     

    XML

    <?xml version="1.0" encoding="UTF-8"?>
    <PagSeguroConfiguration>
    <!-- Urls defaults for call services PagSeguro -->
    <Urls>
    <!-- url for payment service -->
    <Payment>
    <Link>https://ws.pagseguro.uol.com.br/v2/checkout</Link>
    </Payment>
    <!-- url for paymentRedirect service -->
    <PaymentRedirect>
    <Link>https://pagseguro.uol.com.br/v2/checkout/payment.html</Link>
    </PaymentRedirect>
    <!-- url for notifications service -->
    <Notification>
    <Link>https://ws.pagseguro.uol.com.br/v3/transactions/notifications</Link>
    </Notification>
    <!-- url for transactions service -->
    <Search>
    <Link>https://ws.pagseguro.uol.com.br/v3/transactions</Link>
    </Search>
    <SearchAbandoned>
    <Link>https://ws.pagseguro.uol.com.br/v2/transactions</Link>
    </SearchAbandoned>
    <!-- url for cancel transactions service -->
    <Cancel>
    <Link>https://ws.pagseguro.uol.com.br/v2/transactions/cancels</Link>
    </Cancel>
    <!-- url for refund transactions service -->
    <Refund>
    <Link>https://ws.pagseguro.uol.com.br/v2/transactions/refunds</Link>
    </Refund>
    <!-- urls for preApproval -->
    <PreApproval>
    <!-- urls for preApproval request service -->
    <Link>https://ws.pagseguro.uol.com.br/v2/pre-approvals/request</Link>
    <PreApprovalRequest>
    <Link>https://ws.pagseguro.uol.com.br/v2/pre-approvals/request</Link>
    </PreApprovalRequest>
    <!-- url for preApproval redirect service -->
    <PreApprovalRedirect>
    <Link>https://pagseguro.uol.com.br/v2/pre-approvals/request.html</Link>
    </PreApprovalRedirect>
    <!-- url for preApproval notifications service -->
    <PreApprovalNotification>
    <Link>https://ws.pagseguro.uol.com.br/v2/pre-approvals/notifications</Link>
    </PreApprovalNotification>
    <!-- url for preApproval search transactions service -->
    <PreApprovalSearch>
    <Link>https://ws.pagseguro.uol.com.br/v2/pre-approvals</Link>
    </PreApprovalSearch>
    <!-- url for preApproval cancel transaction service -->
    <PreApprovalCancel>
    <Link>https://ws.pagseguro.uol.com.br/v2/pre-approvals/cancel</Link>
    </PreApprovalCancel>
    <!-- url for preApproval charge payment service -->
    <PreApprovalPayment>
    <Link>https://ws.pagseguro.uol.com.br/v2/pre-approvals/payment</Link>
    </PreApprovalPayment>
    </PreApproval>
    <!-- url for direct payment -->
    <DirectPayment>
    <!-- url for get session -->
    <Session>
    <Link>https://ws.pagseguro.uol.com.br/v2/sessions</Link>
    </Session>
    <!-- url for get installments -->
    <Installment>
    <Link>https://ws.pagseguro.uol.com.br/v2/installments</Link>
    </Installment>
    <!-- url for transactions -->
    <Transactions>
    <Link>https://ws.pagseguro.uol.com.br/v2/transactions</Link>
    </Transactions>
    </DirectPayment>
    <!-- url for authorization -->
    <Authorization>
    <!-- url for authorization request service -->
    <AuthorizationRequest>
    <Link>https://ws.pagseguro.uol.com.br/v2/authorizations/request</Link>
    </AuthorizationRequest>
    <!-- url for authorization request transaction service -->
    <AuthorizationURL>
    <Link>https://pagseguro.uol.com.br/v2/authorization/request.jhtml</Link>
    </AuthorizationURL>
    <!-- url for authorization search service -->
    <AuthorizationSearch>
    <Link>https://ws.pagseguro.uol.com.br/v2/authorizations/</Link>
    </AuthorizationSearch>
    <!-- url for authorization nofitication service -->
    <AuthorizationNotification>
    <Link>https://ws.pagseguro.uol.com.br/v2/authorizations/notifications/</Link>
    </AuthorizationNotification>
    </Authorization>
    </Urls>
    <!-- user's credential -->
    <Credential>
    <!-- your email here -->
    <Email>backoffice@lojamodelo.com.br</Email>
    <!-- your token here -->
    <Token>256422BF9E66458CA3FE41189AD1C94A</Token>
    <!-- your sandbox email here -->
    <SandboxEmail>meuemail@gmail.com</SandboxEmail>
    <!-- your sandbox token here -->
    <SandboxToken>D43A181FF404447C920021A374668E45</SandboxToken>
    <!-- your appId here -->
    <AppId>app8888888888</AppId>
    <!-- your appKey here -->
    <AppKey>82EBFA59F1F1469FF47B3FBB8D2526BC</AppKey>
    <!-- your sandbox appId here -->
    <SandboxAppId>app8888888888</SandboxAppId>
    <!-- your sandbox appKey here -->
    <SandboxAppKey>82EBFA59F1F1469FF47B3FBB8D2526BC</SandboxAppKey>
    </Credential>
    <!-- configuration default for PagSeguro API-->
    <Configuration>
    <!-- version library API PagSeguro .NET C# -->
    <LibVersion>2.4.0</LibVersion>
    <!-- content type -->
    <FormUrlEncoded>application/x-www-form-urlencoded</FormUrlEncoded>
    <!-- encoding of the outcoming/incoming communication to/from PagSeguro API -->
    <Encoding>ISO-8859-1</Encoding>
    <!-- default request timeout for call service -->
    <RequestTimeout>10000</RequestTimeout>
    </Configuration>
    </PagSeguroConfiguration>

     

  • Fernando Paiva

    Opa Felipe, consegui resolver e agora está funcionando 99% 

    Digo 99% pq eu fiz o teste com meu cartão de crédito, o pagamento foi enviado, porém na resposta do Transaction não retorna que foi pago. 

    Olhei na minha conta no PagSeguro e o pagamento estava com status de "Em Análise", e olhei no meu extrato bancário o valor havia sido debitado, ou seja, descontou no cartão mas no PagSeguro está como "Em Análise". 

    Pq o Transaction não retorna o status "Paid" sendo que foi pago e pq o PagSeguro mantém "Em Análise" sendo que foi debitado da minha conta, por tanto está pago ?

  • Flávio Sena

    O erro Unauthorized acredito que você resolveu passando as credenciais corretamente...

    A questão do pagamento é um pouco complexa, mas no resumo, existe a análise da bandeira, e a análise do PagSeguro, que nesse caso sua bandeira liberou o pagamento, porém o PagSeguro ainda está analisando. Somente após a conclusão disso será migrado paga pago. Inclusive existe a possibilidade de virar um cancelado se você cair na análise de risco.

  • Fernando Paiva

    Flávio, então quando o cliente paga com cartão e está tudo certo, o status da compra é "Em Análise" imediatamente ?

    O Transaction retorna código 2 nessa situação ?

     

     

     

  • Flávio Sena

    Fernando,

    Depende, se precisar de análise vai para análise, mas existem casos que não vão para análise e vão direto para pago sim.