Example #1
0
        // Gerar pagamento do PagSeguro
        public static Dados GerarPagamento(Dados dados = null)
        {
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
            if (dados == null)
            {
                return(null);
            }
            dados.stringConexao = "";
            try
            {
                //URI de checkout.
                string uri = @"https://ws.pagseguro.uol.com.br/v2/checkout";
                //Conjunto de parâmetros/formData.
                var nome = dados.Nome.ReplaceDiacritics();

                System.Collections.Specialized.NameValueCollection postData =
                    new System.Collections.Specialized.NameValueCollection
                {
                    { "email", dados.MeuEmail },
                    { "token", dados.MeuToken },
                    { "currency", "BRL" },
                    { "itemId1", dados.ProductId },
                    { "itemDescription1", dados.TituloPagamento.ReplaceDiacritics().Left(100) },
                    { "itemAmount1", dados.Valor.Replace(",", ".") },
                    { "itemQuantity1", dados.Qtd.ToString() },
                    { "itemWeight1", (dados.Peso.ToString()).PadLeft(3, '0') },
                    { "reference", dados.Referencia },
                    { "senderName", nome.Left(50) },
                    { "senderAreaCode", dados.DDD },
                    { "senderPhone", dados.NumeroTelefone },
                    { "senderEmail", dados.Email },
                    { "shippingAddressRequired", dados.SolicitaEnderecoEnvio.ToString().ToLower() }
                };
                //String que receberá o XML de retorno.
                string xmlString = null;
                //Webclient faz o post para o servidor de pagseguro.
                using (WebClient wc = new WebClient())
                {
                    //Informa header sobre URL.
                    wc.Headers[HttpRequestHeader.ContentType]     = "application/x-www-form-urlencoded";
                    wc.Headers[HttpRequestHeader.AcceptCharset]   = "ISO-8859-1";
                    wc.Headers[HttpRequestHeader.ContentEncoding] = "ISO-8859-1";

                    //Faz o POST e retorna o XML contendo resposta do servidor do pagseguro.
                    byte[] result;
                    try
                    {
                        result = wc.UploadValues(uri, postData);
                    }
                    catch (Exception ex)
                    {
                        var str = "";
                        postData.AllKeys.ToList().ForEach(k => str += k + ":" + postData[k].ToString() + "|");
                        throw new Exception("URI:" + uri + "|NOME(SA): " + nome + "|POSTDATA:" + str, ex);
                    }
                    //Obtém string do XML.
                    xmlString = Encoding.ASCII.GetString(result);
                }
                //Cria documento XML.
                XmlDocument xmlDoc = new XmlDocument();
                //Carrega documento XML por string.
                xmlDoc.LoadXml(xmlString);
                //Obtém código de transação (Checkout).
                var code = xmlDoc.GetElementsByTagName("code")[0];
                //Monta a URL para pagamento.
                if (!code.InnerText.Equals(""))
                {
                    dados.CodigoAcesso  = code.InnerText;
                    dados.stringConexao = string.Concat("https://pagseguro.uol.com.br/v2/checkout/payment.html?code=", code.InnerText);
                }
            }
            catch (Exception ex)
            {
                dados.CodigoAcesso  = "";
                dados.stringConexao = "";
                dados.Erro          = ex.ToString();
            }
            // Retorna com a URL para carregar na tela

            return(dados);
        }
Example #2
0
        public static Dados FazerConsulta(Dados dados, int?page = null, string transactioncode = null)
        {
            if (dados == null)
            {
                return(null);
            }
            Dados retorno = new Dados();

            try
            {
                //uri de consulta da transação.


                string uri = "https://ws.pagseguro.uol.com.br/v2/transactions{codigo}" +
                             "?email=" + dados.MeuEmail + "&token=" + dados.MeuToken;

                if (page != null)
                {
                    uri += "&maxPageResults=" + dados.maxPageResults.ToString() + "&page" + page.ToString();
                }
                else if (transactioncode != null)
                {
                    uri = uri.Replace("{codigo}", "/" + transactioncode);
                }
                else
                {
                    uri += "&maxPageResults=" + dados.maxPageResults.ToString() + "&initialDate=" + dados.DataDesde.ToString("yyyy-MM-ddTHH:mm");
                }

                uri = uri.Replace("{codigo}", "");

                //Classe que irá fazer a requisição GET.
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
                //Método do webrequest.
                request.Method = "GET";
                //String que vai armazenar o xml de retorno.
                string xmlString = null;
                //Obtém resposta do servidor.
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    //Cria stream para obter retorno.
                    using (Stream dataStream = response.GetResponseStream())
                    {
                        //Lê stream.
                        using (StreamReader reader = new StreamReader(dataStream))
                        {
                            //Xml convertido para string.
                            xmlString = reader.ReadToEnd();
                            //Cria xml document para facilitar acesso ao xml.

                            //Carrega xml document através da string com XML.
                            retorno.xmlDoc.LoadXml(xmlString);
                            //busca os casos de tratamento

                            //Fecha reader.
                            reader.Close();
                            //Fecha stream.
                            dataStream.Close();
                        }
                    }
                    return(retorno);
                }
            }
            catch (Exception ex)
            {
                retorno.Erro = ex.ToString();
                return(dados);
            }
        }