I use C # Asp.Net MVC, I had to make the return of data from Secure Pag and I found the documentation a lot flawed, follow the solution I created below for those who have the same difficulties.
I use C # Asp.Net MVC, I had to make the return of data from Secure Pag and I found the documentation a lot flawed, follow the solution I created below for those who have the same difficulties.
First set the return of the data in the pagseguro for the page of your application, in the case of this example would be www.site.com.br/Home/RetornoPagamento
Order Domain
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Ui.Web.Helpers
{
public class Cliente
{
public int IDCliente { get; set; }
public string Nome { get; set; }
public string Email { get; set; }
public string TelefoneCodigoArea { get; set; }
public string Telefone { get; set; }
public string Endereco { get; set; }
public string EnderecoNumero { get; set; }
public string Complemento { get; set; }
public string Bairro { get; set; }
public string Cidade { get; set; }
public string UF { get; set; }
public string Pais { get; set; }
public string CEP { get; set; }
}
public class Pagamento
{
public int Tipo { get; set; }
public int Parcelas { get; set; }
public string TipoDesc
{
get
{
if (Tipo == 1)
return "Cartão de crédito";
else if (Tipo == 2)
return "Boleto";
else if (Tipo == 3)
return "Débito online (TEF)";
else if (Tipo == 4)
return "Saldo PagSeguro";
else if (Tipo == 5)
return "Oi Paggo";
else if (Tipo == 7)
return "Depósito em conta";
else
return "Origem Desconhecida";
}
}
public int Codigo { get; set; }
public string CodigoDesc
{
get
{
if (Codigo == 101)
return "Cartão de crédito Visa";
else if (Codigo == 102)
return "Cartão de crédito MasterCard";
else if (Codigo == 103)
return "Cartão de crédito American Express";
else if (Codigo == 104)
return "Cartão de crédito Diners.";
else if (Codigo == 105)
return "Cartão de crédito Hipercard";
else if (Codigo == 106)
return "Cartão de crédito Aura";
else if (Codigo == 107)
return "Cartão de crédito Elo";
else if (Codigo == 108)
return "Cartão de crédito PLENOCard";
else if (Codigo == 109)
return "Cartão de crédito PersonalCard";
else if (Codigo == 110)
return "Cartão de crédito JCB";
else if (Codigo == 111)
return "Cartão de crédito Discover";
else if (Codigo == 112)
return "Cartão de crédito BrasilCard";
else if (Codigo == 113)
return "Cartão de crédito FORTBRASIL";
else if (Codigo == 114)
return "Cartão de crédito CARDBAN";
else if (Codigo == 115)
return "Cartão de crédito VALECARD";
else if (Codigo == 116)
return "Cartão de crédito Cabal";
else if (Codigo == 117)
return "Cartão de crédito Mais";
else if (Codigo == 118)
return "Cartão de crédito Avista";
else if (Codigo == 119)
return "Cartão de crédito GRANDCARD";
else if (Codigo == 120)
return "Cartão de crédito Sorocred";
else if (Codigo == 201)
return "Boleto Bradesco";
else if (Codigo == 202)
return "Boleto Santander";
else if (Codigo == 301)
return "Débito online Bradesco";
else if (Codigo == 302)
return "Débito online Itaú";
else if (Codigo == 303)
return "Débito online Unibanco";
else if (Codigo == 304)
return "Débito online Banco do Brasil";
else if (Codigo == 305)
return "Débito online Banco Real";
else if (Codigo == 306)
return "Débito online Banrisul";
else if (Codigo == 307)
return "Débito online HSBC";
else if (Codigo == 401)
return "Saldo PagSeguro";
else if (Codigo == 501)
return "Oi Paggo";
else if (Codigo == 701)
return "Depósito em conta - Banco do Brasil";
else if (Codigo == 702)
return "Depósito em conta - HSBC";
else
return "Origem Desconhecida";
}
}
public string URL { get; set; }
}
public class Item
{
public int ID { get; set; }
public string Descricao { get; set; }
public int Quantidade { get; set; }
public decimal Preco { get; set; }
}
public class Pedido
{
public DateTime Data { get; set; }
public int TipoTransacao { get; set; }
public string TransacaoID { get; set; }
public string Referencia { get; set; }
public int Status { get; set; }
[NotMapped]
public string StatusDesc
{
get
{
if (Status == 1)
return "Aguardando pagamento";
else if (Status == 2)
return "Em análise";
else if (Status == 3)
return "Paga";
else if (Status == 4)
return "Disponível";
else if (Status == 5)
return "Em disputa";
else if (Status == 6)
return "Devolvida";
else if (Status == 7)
return "Cancelada";
else
return "Status Desconhecido";
}
}
public decimal Total { get; set; }
public decimal TotalDescontos { get; set; }
public decimal TotalTaxas { get; set; }
public decimal TotalLiquido { get; set; }
public DateTime DataLiberacaoCredito { get; set; }
public int TotalItensPedido { get; set; }
public Pagamento Pagamento = new Pagamento();
public Cliente Cliente = new Cliente();
public List<Item> Itens = new List<Item>();
}
}
Controller receiving notification
[HttpPost]
public void RetornoPagamento(FormCollection form)
{
string Email = "Email pagseguro";
string Token = "Token Pagseguro";
string TransacaoID = Request.Params["notificationCode"];
string Pagina = "https://ws.pagseguro.uol.com.br/v2/transactions/notifications/" + TransacaoID + "?email=" + Email + "&token=" + Token;
XElement xml = XElement.Load(Pagina);
// Dados Gerais do Pedido
var Pedido = new Pedido();
Pedido.TransacaoID = xml.Element("code").Value;
Pedido.Data = DateTime.Parse(xml.Element("date").Value);
Pedido.TipoTransacao = int.Parse(xml.Element("type").Value);
Pedido.Referencia = xml.Element("reference").Value;
Pedido.Status = int.Parse(xml.Element("status").Value);
Pedido.Total = decimal.Parse(xml.Element("grossAmount").Value);
Pedido.TotalDescontos = decimal.Parse(xml.Element("discountAmount").Value);
Pedido.TotalTaxas = decimal.Parse(xml.Element("feeAmount").Value);
Pedido.TotalLiquido = decimal.Parse(xml.Element("netAmount").Value);
Pedido.TotalItensPedido = int.Parse(xml.Element("itemCount").Value);
// Dados Cliente do Pedido
Pedido.Cliente.Nome = xml.Element("sender").Element("name").Value;
Pedido.Cliente.Email = xml.Element("sender").Element("email").Value;
Pedido.Cliente.TelefoneCodigoArea = xml.Element("sender").Element("phone").Element("areaCode").Value;
Pedido.Cliente.Telefone = xml.Element("sender").Element("phone").Element("number").Value;
Pedido.Cliente.Endereco = xml.Element("shipping").Element("address").Element("street").Value;
Pedido.Cliente.EnderecoNumero = xml.Element("shipping").Element("address").Element("number").Value;
Pedido.Cliente.Complemento = xml.Element("shipping").Element("address").Element("complement").Value;
Pedido.Cliente.Bairro = xml.Element("shipping").Element("address").Element("district").Value;
Pedido.Cliente.Cidade = xml.Element("shipping").Element("address").Element("city").Value;
Pedido.Cliente.UF = xml.Element("shipping").Element("address").Element("state").Value;
Pedido.Cliente.Pais = xml.Element("shipping").Element("address").Element("country").Value;
Pedido.Cliente.CEP = xml.Element("shipping").Element("address").Element("postalCode").Value;
// Dados de Pagamento do Pedido
Pedido.Pagamento.Tipo = int.Parse(xml.Element("paymentMethod").Element("type").Value);
Pedido.Pagamento.Parcelas = int.Parse(xml.Element("installmentCount").Value);
Pedido.Pagamento.Codigo = int.Parse(xml.Element("paymentMethod").Element("code").Value);
// Monta Itens do Pedido
foreach (var Item in xml.Elements("items").Elements("item").ToList())
{
Pedido.Itens.Add(new Helpers.Item()
{
ID = int.Parse(Item.Element("id").Value),
Descricao = Item.Element("description").Value,
Quantidade = int.Parse(Item.Element("quantity").Value),
Preco = decimal.Parse(Item.Element("amount").Value)
});
}
//Aqui você tem todos os dados e pode prosseguir com a inclusão no banco e regra de negócio.
}