Пример #1
0
        public ActionResult Checkout(string senderName, string senderEmail, string senderHash, string phoneNumber, string phoneDDD, string documentCpfNumber, string fretePreco,
                                     string ruaEndereco, string numeroEndereco, string complementoEndereco, string distritoEndereco, string cidadeEndereco, string ufEndereco, string cepEndereco, string tokenCard,
                                     string qntdParcela, string valorParcela, string maxInstallmentNoInterest, string nomeCartao, string cpfCartao, string dataNascimentoCartao, string phoneCartao, string dddPhoneCartao,
                                     string ruaCobranca, string numeroCobranca, string complementoCobranca, string distritoCobranca, string cidadeCobranca, string estadoCobranca, string cepCobranca, string precoTotal)
        {
            try
            {
                string         xmlString;
                MemoryStream   stream         = new MemoryStream();
                ComprasService _serviceCompra = new ComprasService();
                var            idCompra       = _serviceCompra.GetIdVenda();
                var            paymentModel   = new payment()
                {
                    mode   = "default",
                    method = "creditCard",
                    sender = new sender
                    {
                        name  = senderName,
                        email = senderEmail,
                        phone = new phone
                        {
                            areaCode = phoneDDD,
                            number   = phoneNumber
                        },
                        documents = new List <document>
                        {
                            new document
                            {
                                type  = "CPF",
                                value = documentCpfNumber
                            }
                        },
                        hash = senderHash
                    },
                    currency        = "BRL",
                    notificationURL = "https://looks-alice.com/Compras/GetStatus/",
                    items           = _serviceCompra.PopularItems(User.Identity.Name),
                    extraAmount     = "0.00",
                    reference       = idCompra.ToString(),
                    shipping        = new shipping
                    {
                        addressRequired = "true",
                        address         = new address
                        {
                            street     = ruaEndereco,
                            number     = numeroEndereco,
                            complement = complementoEndereco,
                            district   = distritoEndereco,
                            city       = cidadeEndereco,
                            state      = ufEndereco,
                            country    = "BRA",
                            postalCode = cepEndereco
                        },
                        type = 2,
                        cost = fretePreco
                    },
                    creditCard = new creditCard
                    {
                        token       = tokenCard,
                        installment = new installment
                        {
                            quantity = qntdParcela,
                            value    = valorParcela,
                            noInterestInstallmentQuantity = maxInstallmentNoInterest
                        },
                        holder = new holder
                        {
                            name      = nomeCartao,
                            documents = new List <document>
                            {
                                new document
                                {
                                    type  = "CPF",
                                    value = cpfCartao
                                }
                            },
                            birthDate = dataNascimentoCartao,
                            phone     = new phone
                            {
                                areaCode = dddPhoneCartao,
                                number   = phoneCartao
                            }
                        },
                        billingAddress = new billingAddress
                        {
                            street     = ruaCobranca,
                            number     = numeroCobranca,
                            complement = complementoCobranca,
                            district   = distritoCobranca,
                            city       = cidadeCobranca,
                            state      = estadoCobranca,
                            country    = "BRA",
                            postalCode = cepCobranca
                        }
                    }
                };

                var           xml           = new XmlSerializer(paymentModel.GetType());
                XmlTextWriter xmlTextWriter = new XmlTextWriter(stream, Encoding.UTF8);
                xml.Serialize(xmlTextWriter, paymentModel);
                stream    = (MemoryStream)xmlTextWriter.BaseStream;
                xmlString = Encoding.UTF8.GetString(stream.ToArray());
                byte[] byteArray = Encoding.UTF8.GetBytes(xmlString);

                WebRequest request = WebRequest.Create("https://ws.pagseguro.uol.com.br/v2/transactions/[email protected]&token=062392d8-2fdc-452b-ac1d-df7dbae6ad43220b81ee47f29c2eea94ff46991bec27c092-1640-4c3c-be51-eb15ea22f18a");
                request.Method        = "POST";
                request.ContentLength = byteArray.Length;
                request.ContentType   = "application/xml; charset=UTF-8";
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                var response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    Stream       receiveResponse = response.GetResponseStream();
                    StreamReader reader          = new StreamReader(receiveResponse, Encoding.UTF8);
                    XmlDocument  xmlDoc          = new XmlDocument();
                    xmlDoc.Load(reader);
                    XmlNode session    = xmlDoc.SelectSingleNode("//transaction");
                    var     codeT      = session.SelectNodes("//code");
                    var     codeResult = codeT[0].InnerText.ToString();
                    compraService.checkoutCred(User.Identity.Name, Convert.ToDouble(precoTotal), ruaEndereco, cepEndereco, ufEndereco, numeroEndereco, codeResult);
                    LooksAliceWebAspNet.Services.EmailService _emailService = new LooksAliceWebAspNet.Services.EmailService();
                }
                return(Json(response));
            }
            catch (Exception e)
            {
                return(Json(e));
            }
        }