none
Retorno Json -> ASpnet C# RRS feed

  • Pergunta

  • Bom dia pessoal! Estou com um problemão, após dar post com as informações de pagamento para a locaweb, eles retornam alguns dados como abaixo no formato json, como eu devo proceder para pegar estes valores e passar para variaveis ou labels? No caso no post eu ja envio o nome da página de retorno no caso retorno.aspx, pelo o que eu entendo quando a informação chegar lá automaticamente  a locaweb dará um post na minha página retorno.aspx com isto : 

      {
        "transacao" : {
          "status" : "aguardando_pagamento",
          "meio_pagamento" : "cielo",
          "numero_pedido" : 6512,
          "id" : 163,
          "detalhes" : {
            "arp" : null,
            "lr" : null,
            "nsu" : null,
            "pan" : null,
            "tid" : "10017348980825651001"
          },
          "erro" : null,
          "total" : "7630.00",
          "url_acesso" : "https://qasecommerce.cielo.com.br/web/index.cbmp?id=b817bc2ed8ac0009a1d6dc8199069b27"
        }
      }
     Então eu preciso pegar estas informações e gravar em uma tabela minha...alguém sabe?


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 11:28

Todas as Respostas

  • Você pode criar uma classe contendo os mesmos dados que esse JSON.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 11:42
  • Oi Murilo, bom dia!

    Você poderia me dar um simples exemplo? Eu não imagino como posso fazer isto =\


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 11:44
  • public class Transacao{
         public string Status{get;set;}
         public string Meio_Pagamento{get;set;}
         //etc
    }
    
    public class LocaWebReturn
    {
         public Transacao Transacao{get;set;}
    }

    e na sua Action:

    public ActionResult Post(LocaWebReturn locaweb)
    {
    }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Sugerido como Resposta geraldo.lopes quarta-feira, 14 de novembro de 2012 12:09
    • Não Sugerido como Resposta geraldo.lopes quarta-feira, 14 de novembro de 2012 12:30
    quarta-feira, 14 de novembro de 2012 11:51
  • namespace JsonTest
    {
        public class CIELO
        {
            public string Status { get; set; }
            public string meio_pagamento{ get; set; }
        }
    }

    Seria mais ou menos isto?

    No caso como eu sei que no meu json retornaria Status e meio_pagamento então é só colocar isto na classe e na page retorno.aspx eu chamo a classe do banco para gravar e digo xxx = {0}; yyy = {1}; é isto?

     


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 11:52
  • Murilo vc acha q desta forma q coloquei funcionaria?

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 11:55
  • Não funcionaria.

    Pensa no JSON como se fosse uma classe.

    A classe só tem 3 atributos (erro, total e url_acesso) e dentro dela tem um objeto chamado transacao com 10 atributos (status, meio_pagamento, numero_pedido, id, detalhes, arp, lr, nsu, pan, tid)

    No C# você cria uma classe correspondente aos atributos que você deseja que sejam mapeados.

    No seu caso até funcionaria, mas se você fizesse o post passando apenas a transacao (objeto.transacao) ao inves de fazer o post do objeto inteiro, caso contrário, ele iria procurar o atributo Status no objeto do JSON e não iria conseguir mapear.

    Se ainda tiver dúvidas, pergunte.

    Abraço

    quarta-feira, 14 de novembro de 2012 12:06
  • Cara, infelizmente tenho muitas dúvidas =\ Primeira vez que faço isto de retorno tal.. está dificil de pegar o conceito, se não se importar vou postar completo aqui.

    No post ainda manualmente (passando os valores fixos e não os dos campos do formulário), fiz desta forma:

     
                    //Enviando os dados para Localweb
                    WebRequest request = WebRequest.Create("https://api-sandbox.gatewaylocaweb.com.br/v1/transacao");
                    request.Method = "POST";
    
                    ASCIIEncoding encoding = new ASCIIEncoding();
                    string defaultParameter = "{";
                    defaultParameter += "\"token\": \"b30c04e1-450d-4537-88de-b00df7853891\",";
                    defaultParameter += "\"transacao\": {";
                    defaultParameter += "\"url_retorno\": \"http://www.ohyes.com.br/retorno.aspx\",";
                    defaultParameter += "\"capturar\": \"true\",";
                    defaultParameter += "\"pedido\": {";
                    defaultParameter += "\"numero\": \"12345689\",";
                    defaultParameter += "\"total\": \"1.00\",";
                    defaultParameter += "\"moeda\": \"real\",";
                    defaultParameter += "\"descricao\": \"Carrinho de Compras\"";
                    defaultParameter += "},";
                    defaultParameter += "\"pagamento\": {";
                    defaultParameter += "\"bandeira\": \"visa\",";
                    defaultParameter += "\"meio_pagamento\": \"cielo\",";
                    defaultParameter += "\"parcelas\": \"1\",";
                    defaultParameter += "\"tipo_operacao\": \"credito_a_vista\"";
                    defaultParameter += "},";
                    defaultParameter += "\"comprador\": {";
                    defaultParameter += "\"nome\": \"Bruna da Silva\",";
                    defaultParameter += "\"documento\": \"12345678900\",";
                    defaultParameter += "\"endereco\": \"Rua da Casa\",";
                    defaultParameter += "\"complemento\": \"Ap 82\",";
                    defaultParameter += "\"numero\": \"1\",";
                    defaultParameter += "\"cep\": \"09710240\",";
                    defaultParameter += "\"bairro\": \"Centro\",";
                    defaultParameter += "\"cidade\": \"São Paulo\",";
                    defaultParameter += "\"estado\": \"SP\"";
                    defaultParameter += "}";
                    defaultParameter += "}";
                    defaultParameter += "}";
    
                    string teste = defaultParameter;
    
                    byte[] byteArray = Encoding.UTF8.GetBytes(defaultParameter);
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.ContentLength = byteArray.Length;
                    Stream dataStream = request.GetRequestStream();
                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();
    
                    // Get the response.
                    WebResponse response = request.GetResponse();
                    // Display the status.
                    Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                    // Get the stream containing content returned by the server.
                    dataStream = response.GetResponseStream();
                    // Open the stream using a StreamReader for easy access.
                    StreamReader reader = new StreamReader(dataStream);
                    // Read the content.string responseFromServer = reader.ReadToEnd ();
    
                    // Clean up the streams.
                    reader.Close();
                    dataStream.Close();
                    response.Close();
    
                    lblmsgError.Attributes["style"] = "color:#000;";
                    lblmsgError.Text = "Formulário enviado com sucesso!";
                    checkSave = "ok";
                    
                    //##

    Ou seja passei para eles no formato json, e sim está gravando perfeitamente no portal. Segundo eles, exatamente no momento que eu der o post eles já retornarão dando um post na minha página de retorno. Então no caso criei uma class chamada ReturnCielo.cs assim:

    namespace Jalapao.App.CIELO
    {
        public class CIELO
        {
            //private
            private string status;
            private string meio_pagamento;
            private string numero_pedido;
    
            //public
            public string Status
            {
                get { return status; }
                set { status = value; }
            }
    
            public string Meio_pagamento
            {
                get { return meio_pagamento; }
                set { meio_pagamento = value; }
            }
    
            public string Numero_pedido
            {
                get { return numero_pedido; }
                set { numero_pedido = value; }
            }
        }
    }

    Bom inseri somente estes campos na class mas estão todos, estes são só exemplos para vc entender o q estou fazendo..

    Bom na página de retorno.aspx no caso em sua class interna, eu chamei a classe    CIELO ci = new CIELO(); e agora preciso pegar o json e colocar no ci.meio_pagamento, e é nesta hora que estou travado =(


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 12:12
  • public class Detalhes { public object arp { get; set; } public object lr { get; set; } public object nsu { get; set; } public object pan { get; set; } public string tid { get; set; } } public class Transacao { public string status { get; set; } public string meio_pagamento { get; set; } public int numero_pedido { get; set; } public int id { get; set; } public Detalhes detalhes { get; set; } public object erro { get; set; } public string total { get; set; } public string url_acesso { get; set; } } public class ObjetoRetorno { public Transacao transacao { get; set; } }

    Usando estas classes, gerei utilizando o site http://json2csharp.com/, que gera automático.

    Depois disso, você tem uma string que é o retorno da locaweb certo? Então vamos mapear a string (json) deles para dentro de uma classe:

    using System.Web.Script.Serialization; (Vai precisar disso)

    var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(responseFromServer);

    Depois disso vai conseguir usar o retorno como se fosse uma classe, já com os valores dentro dela.

    Isso resolve o problema? Me corrija se eu estiver errado.

    Abraço

    quarta-feira, 14 de novembro de 2012 12:29
  •  Bom vou tentar fazer desta forma, vamos ver se da certo aqui. obrigado.. aí eu posto aqui daqui 30 minutos dizendo se funcionou, mas vou ter q ver como funcionar esse "var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(responseFromServer);" não tenho nem idéia de como usar.


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 12:35
  • Geraldo, você disse:
    "Depois disso, você tem uma string que é o retorno da locaweb certo? Então vamos mapear a string (json) deles para dentro de uma classe:"

    Eu não tenho uma string, esta é a questão ...  Eu não consigo entender isto.. eles vao me mandar esta "classe" json.. cheio de informações eu não sei como colher estas informações.


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 12:45
  • Na verdade só é necessária essa linha, o método Deserialize vai converter toda a string do JSON passada por parâmetro em um objeto do tipo ObjetoRetorno.

    A variavel "responseFromServer" é a que possui a string de retorno da locaweb, certo?

    Acho até que ficou comentada a linha ali no seu bloco de código no comentário acima.

    quarta-feira, 14 de novembro de 2012 12:46
  • Douglas, põe aquela classe ObjetoRetorno que o Geraldo postou na sua action.

    É só isso.. o MVC automaticamente vai converter(se o post do json estiver certo) os dados postados pela locaweb no formato JSON para um objeto do tipo ObjetoRetorno.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 12:48
  •    Bom vamos a página de retorno, estou na class dela então retorno.aspx.cs dentro dela está assim:

    using System.Web.Script.Serialization;


    public partial class retorno : System.Web.UI.Page
    {
        var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>("AKI o que eu devo colocar?");

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public class Detalhes
        {
            public string arp { get; set; }
            public string lr { get; set; }
            public string nsu { get; set; }
            public string pan { get; set; }
            public string tid { get; set; }
        }

        public class Transacao
        {
            public string status { get; set; }
            public string meio_pagamento { get; set; }
            public int numero_pedido { get; set; }
            public int id { get; set; }
            public Detalhes detalhes { get; set; }
            public object erro { get; set; }
            public string total { get; set; }
            public string url_acesso { get; set; }
        }

        public class ObjetoRetorno
        {
            public Transacao transacao { get; set; }
        }
    }

    Até então está é a página e na retorno.aspx não tem nada está em branco, não coloquei nada nela. somente na .cs


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 12:54
  • Douglas.. seu projeto é em WebForms.. nós estamos te dizendo o que fazer em MVC auhahuaua

    No webforms você precisa pegar o valor postado pela LocaWeb através de Request.Form["name"].. agora tem que descobrir qual string usar no 'name'.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 12:59
  • Hahaha.. tenso esse negócio cara... Mas vamos lá.. vamos conseguir.. então assim.

      {
        "transacao": {
          "id" : 163,
          "status": "paga",
          "meio_pagamento" : "cielo",
          "numero_pedido" : 12345,
          "detalhes" : {
            "arp": "776655",
            "lr": null,
            "nsu": "998877",
            "pan": "887766",
            "tid": "10017348980826441001"
          },
          "erro": null,
          "total": "189.00",
          "url_acesso": "https://qasecommerce.cielo.com.br/web/index.cbmp?id=671387a5190760b7c9e0fa8ccbaf72c4"
        }
      }

     Este será o post da locaweb na minha página de retorno, Se eu criar uma classe CIELO aqui e fizer CIELO ci = new CIELO(); e depois ci.status = Request.Form["meio_pagamento"]; estará certo?



    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 13:06
  • Não. Afinal você está usando MVC ou Webforms?

    http://www.linkedin.com/pub/murilo-kunze/44/191/455


    • Editado Murilo Kunze quarta-feira, 14 de novembro de 2012 13:09
    quarta-feira, 14 de novembro de 2012 13:08
  • Ah, seu projeto não é MVC? haha

    protected void Page_Load(object sender, EventArgs e)
    {
        string postLocaweb = Request.Form["post"];
    
        var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(postLocaWeb);
    }
    

    Fica tipo isso mas, como o Murilo disse, só tem que ver o que é no lugar do "post", acho que a locaweb pode te dar esta informação.

    quarta-feira, 14 de novembro de 2012 13:11
  •   Então Murilo, eu não sei muito bem como funciona o MVC eu trabalho da seguinte maneira neste projeto, criei o projeto website

     Dentro da APPCODE tem uma Class UI e uma Class DAL, acredito que isto não seja MVC não é? 

      Geraldo, então no meu caso eu farei isto que você disse, na locaweb eles não dizem nada cara, é triste o negócio la.

     Bom se não for POST é GET é isso? rsrs eu troco caso de errado, mas depois do: 

         var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(postLocaWeb);

      O que devo fazer? para pegar estes valores separadamente? Eu preciso muito salvar isto no banco =( huahuaha meu Deus não pode ser tão complexo isso rs

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 13:16
  • Você está usando webforms então hehe.

    Depois que você fizer o .Deserialize, você terá um objeto com todos os dados, basta acessá-lo:

    var meioPagamento = entity.Transacao.Meio_Pagamento;

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 13:20
  •  Blz Murilo, vou testar agora e ja dou o retorno.

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 13:25
  • =( não rolou ..

    fiz assim:

     
    using System.Web.Script.Serialization;
    using Jalapao.App.DAL;
    
    
    public partial class retorno : System.Web.UI.Page
    {    
    
        protected void Page_Load(object sender, EventArgs e)
        {
            string postLocaweb = Request.Form["post"];
    
            var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(postLocaweb);
    
            string Status_Pag = entity.transacao.status;
            int Ped = entity.transacao.numero_pedido;
           
            DALpedidos dp = new DALpedidos();
            dp.UpdateStatusPag(Status_Pag, Ped);
        }
    
        public class Detalhes
        {
            public string arp { get; set; }
            public string lr { get; set; }
            public string nsu { get; set; }
            public string pan { get; set; }
            public string tid { get; set; }
        }
    
        public class Transacao
        {
            public string status { get; set; }
            public string meio_pagamento { get; set; }
            public int numero_pedido { get; set; }
            public int id { get; set; }
            public Detalhes detalhes { get; set; }
            public object erro { get; set; }
            public string total { get; set; }
            public string url_acesso { get; set; }
        }
    
        public class ObjetoRetorno
        {
            public Transacao transacao { get; set; }
        }
    }


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 13:37
  • Você tem que ver o que colocar no colocar de "post"... o Geraldo colocou "post" só de exemplo, mas agora você tem que ver o nome correto.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 13:43
  • demorou vou olhar aqui;.

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 13:45
  • Caras acho q esse negocio não rola, vcs não tem outra idéia?

    string postLocaweb = Request.Form["post"];


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 15:25
  • Preciso saber como receber o post do servidor dos caras.

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 15:55
  • hehehe

    Se você não sabe como eles mandam, ai não tem como pegar mesmo.

    Você não consegue debugar e ver quando é feito um post?


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 15:55
  • Então.. no meu modo de ver,, eles mandam isto como retorno.

      {
        "transacao" : {
          "status" : "aguardando_pagamento",
          "meio_pagamento" : "cielo",
          "numero_pedido" : 6512,
          "id" : 163,
          "detalhes" : {
            "arp" : null,
            "lr" : null,
            "nsu" : null,
            "pan" : null,
            "tid" : "10017348980825651001"
          },
          "erro" : null,
          "total" : "7630.00",
          "url_acesso" : "https://qasecommerce.cielo.com.br/web/index.cbmp?id=b817bc2ed8ac0009a1d6dc8199069b27"
        }
      }

    Preciso entender como isto chega para eu colocar na string =( rsrss q Osso véio.


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 16:01
  • Entra no chat e fala com um tecnico para tirar suas dúvidas sobre a LocaWeb, eles não vão lhe ajudar com códigos a não ser que tenha algum exemplo na Wiki deles.
    quarta-feira, 14 de novembro de 2012 16:05
  • oPa Paulo, eles não sabem nada a respeito disto eu já perguntei e só dão suporte ao gateway

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 16:08
  • Douglas.. cria uma página de teste e manda imprimir tudo que estiver em Request.Form.Keys.

    Ai você vai ver a string de todos os parametros que estão no POST.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 16:13
  • Pelo oque entendi vc quer salvar no seu banco esses dados que eles devolvem via Json?

    Ao receber na função do Controller faz algo assim:

    Function Save(ByVal Items As String) As JsonResult
            If ModelState.IsValid Then
                Dim model As PessoaModel = JsonConvert.DeserializeObject(Of PessoaModel)(Items)
                db.SeuModel.Add(model)
                db.SaveChanges()
                If (Not (model) Is Nothing) Then
                    Return Json(True)
                Else
                    Return Json(False)
                End If
            End If
        End Function



    quarta-feira, 14 de novembro de 2012 16:18
  • Certo.. entao passo para uma variavel  tipo string blabla = Request.Form.Keys;

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 16:18
  • Não, você usa isso em foreach:

    foreach(var key in Request.Form.Keys){
    	Response.Write(key);
    }

    Assim você vai ver todos os parametros.

    Mas faça isso em uma tela de teste se o seu sistema tiver clientes usando.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 16:22
  • Entao murilo isto não vai rolar, pq fica na página de retorno.. e ela é chamada pela locaweb, não tem como eu debugar isto 

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 16:33
  • Bom, de fato eles não informam nada além do que eu disse aqui =( Liguei la de novo.

    Eu só preciso saber quando existe um retorno de um server para uma página de retorno, como pegar estes dados. Só isto =(


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 17:18
  • Paulo, o q eu não sei é como receber a informação da locaweb, eu quero pegar estes valores e lançar numa string tipo, string variavel = XXXXXX neste XXXX o que eu devo colocar para receber os dados?

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 17:30
  • Só para entender, como eles te devolvem isso?

    Por um XML?

    Se usa o "Post" e o "Get" tente usar o Request.QueryString

    Por Exemplo, eu uso esse cara para pegar um "token"

    Dim gidToken As Guid = System.Guid.Parse(Request.QueryString("ClienteFuncionarioToken").ToString().Trim())

    quarta-feira, 14 de novembro de 2012 17:39
  • Em C# acho que ficaria assim

    Guid gidToken = System.Guid.Parse(Request.QueryString("ClienteFuncionarioToken").ToString().Trim());

    quarta-feira, 14 de novembro de 2012 17:42
  • Oi Paulo então, trata-se de um projeto website em C# eles me retornam em json eles me respondem assim:

      {
        "transacao" : {
          "status" : "aguardando_pagamento",
          "meio_pagamento" : "cielo",
          "numero_pedido" : 6512,
          "id" : 163,
          "detalhes" : {
            "arp" : null,
            "lr" : null,
            "nsu" : null,
            "pan" : null,
            "tid" : "10017348980825651001"
          },
          "erro" : null,
          "total" : "7630.00",
          "url_acesso" : "https://qasecommerce.cielo.com.br/web/index.cbmp?id=b817bc2ed8ac0009a1d6dc8199069b27"
        }
      }
    o Murilo / Gustavo me ensinaram a deserilizar porém para fazer isto preciso entender como receber isto tdo e jogar dentro de uma variavel.


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 17:46
  • Então, esse "pacote de dados" do Json eh um XML, correto?

    Vc terá que receber ele em uma View com JavaScript, esse JavaScript vai criar uma "lista" e vai enviar para sua função.

    Não seria isso? Eu não sei se ele consegue receber isso direto na função.

    Baixe esta exemplo e tente endenter como o Json funciona, quem sabe assim vc consegue.

    http://code.msdn.microsoft.com/Grid-Temporria-em-JS-b48e837f


    function salvar() {
     
            var dados = $.toJSON(Items);
    
            //Posting them to server with ajax
            $.ajax({
                url: '@Url.Content("~/Pessoa/Save")',
                data: { Items: dados },
                dataType: 'json',
                type: 'POST',
                success: function (result) {
                    if (result) {
                        alert(result);
                        window.location.href = "/Pessoa/index";
                    }
                    else {
                        alert('Failure');
                    }
                }
            });
        }

    Aqui no caso eu peguei o "items" que seria uma lista de todos os campos que queria pegar na view e mandei para a função via Json.

    quarta-feira, 14 de novembro de 2012 17:56
  • Então , mas a questão é quando  a locaweb der o retorno, o pacote dele ter que cair em qual função para ler estes dados. Qual é a primeira linha ?

    string TESTE = XXXXX preciso saber quem é o XXXX que será o responsavel pela transação para a minha variável.


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 18:10
  • Ex:

        protected void Page_Load(object sender, EventArgs e)
        {
                string postLocaweb = Request.Form["xxx"];

                var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(postLocaweb);

                string Status_Pag = entity.transacao.status;
                string Ped = Convert.ToString(entity.transacao.numero_pedido);

                DALpedidos dp = new DALpedidos();
                dp.UpdateStatusPag(Status_Pag, Ped);
            }
        }

    No lugar do xxx o que devo colocar?


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 18:13
  • https://qasecommerce.cielo.com.br/web/index.cbmp?id=b817bc2ed8ac0009a1d6dc8199069b27

    Analisando o seu "get"

    b817bc2ed8ac0009a1d6dc8199069b27  Isto seria seu "token da Cielo"

    cria uma variável para receber o token, e faz a função receber ela

    quarta-feira, 14 de novembro de 2012 18:26
  • Não é não Paulo, cada post gera um ID diferente, o token vai no cabeçalho do json que envio para gravar as informações no portal deles.

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 18:32
  • Por isso mesmo, ele vai receber um id diferente cada vez, por isso cria-se uma variável para receber.

    eu faria algo como

    Guid gidToken = System.Guid.Parse(Request.QueryString("id").ToString().Trim());

    ele vai entender que após o "id" é o valor que ele tem q receber


    quarta-feira, 14 de novembro de 2012 18:44
  • oi Paulo, ele diz que não pode ser criado como metodo.

    System.Guid.Parse(Request.QueryString("id").ToString().Trim());


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 18:48
  • Tentou fazer algo assim?

    protected void Page_Load(object sender, EventArgs e) { string recebeCielo = System.Guid.Parse(Request.QueryString("id").ToString().Trim());

    string postLocaweb = Request.Form["recebeCielo"]; var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(postLocaweb); string Status_Pag = entity.transacao.status; string Ped = Convert.ToString(entity.transacao.numero_pedido); DALpedidos dp = new DALpedidos(); dp.UpdateStatusPag(Status_Pag, Ped); } }


    quarta-feira, 14 de novembro de 2012 18:52
  • Exato:

    string postLocaweb = System.Guid.Parse(Request.QueryString("id").ToString().Trim());

    acedito que no lugar de ("id) seja ["id"] porém ele nao permite converter guid para string


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 19:00
  • string postLocaweb = (Request.QueryString["id"].ToString().Trim());

    faz alguma diferença se eu deixar assim?


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 19:02
  • Douglas, já tentou colocar "transacao" na string para ver se funciona?

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 14 de novembro de 2012 19:03
  • coloquei assim:

        protected void Page_Load(object sender, EventArgs e)
        {
            string postLocaweb = (Request.QueryString["id"].ToString().Trim());
    
            var entity = new JavaScriptSerializer().Deserialize<ObjetoRetorno>(postLocaweb);
    
            int id = entity.transacao.id;
            Response.Redirect("https://qasecommerce.cielo.com.br/web/index.cbmp?id="+ id);
    
            //string Ped = Convert.ToString(entity.transacao.numero_pedido);
    
            //DALpedidos dp = new DALpedidos();
            //dp.UpdateStatusPag(Status_Pag, Ped);
        }
    


    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 19:06
  • Oi Murilo coloquei e não aconteceu nada rs

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 19:07
  • Uma pergunta.. se quando eu envio meus dados a locaweb aciona a minha página www.ohyes.com.br/retorno.aspx se eu colocar um response.redirect mandando para qualquer página só para saber se realmente está funcionando esta coisa de resposta deles, a página faria o redirecionamento mesmo sem pegar as informaçoes?

    Douglas Bertelli

    quarta-feira, 14 de novembro de 2012 19:11
  • Nunca tentei isso Douglas

    A minha função ela faz um select no Bd, olha só

     Dim gidToken As Guid = System.Guid.Parse(Request.QueryString("Token").ToString().Trim())
                    Dim Email = From e In db.Revendas
                                Where e.Token = gidToken
                                Select e

    quarta-feira, 14 de novembro de 2012 19:18
  • Ja tentou carregar
    "url_acesso"
    ?
    quarta-feira, 14 de novembro de 2012 19:19