Ejemplo n.º 1
0
        /// <summary>
        /// CreatePreApproval is the actual implementation of the Register method
        /// This separation serves as test hook to validate the Uri
        /// against the code returned by the service
        /// </summary>
        /// <param name="credentials">PagSeguro credentials</param>
        /// <param name="preApproval">PreApproval request information</param>
        /// <returns>The Uri to where the user needs to be redirected to in order to complete the payment process</returns>
        public static Uri CreatePreApproval(Credentials credentials, PreApprovalRequest preApproval)
        {
            PagSeguroTrace.Info(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - begin", preApproval));

            try
            {
                using (var response = HttpURLConnectionUtil.GetHttpPostConnection(
                           PagSeguroConfiguration.PreApprovalUri.AbsoluteUri, BuildPreApprovalUrl(credentials, preApproval)))
                {
                    if (HttpStatusCode.OK.Equals(response.StatusCode))
                    {
                        using (XmlReader reader = XmlReader.Create(response.Content.ReadAsStreamAsync().Result))
                        {
                            PreApprovalRequestResponse preApprovalResponse = new PreApprovalRequestResponse(PagSeguroConfiguration.PreApprovalRedirectUri);
                            PreApprovalSerializer.Read(reader, preApprovalResponse);
                            PagSeguroTrace.Info(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - end {1}", preApproval, preApprovalResponse.PreApprovalRedirectUri));
                            return(preApprovalResponse.PreApprovalRedirectUri);
                        }
                    }
                    else
                    {
                        PagSeguroServiceException pse = HttpURLConnectionUtil.CreatePagSeguroServiceException(new System.Exception(response.StatusCode.ToString()));
                        PagSeguroTrace.Error(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - error {1}", preApproval, pse));
                        throw pse;
                    }
                }
            }
            catch (System.Exception exception)
            {
                PagSeguroServiceException pse = HttpURLConnectionUtil.CreatePagSeguroServiceException(exception);
                PagSeguroTrace.Error(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - error {1}", preApproval, pse));
                throw pse;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// createCheckoutRequest is the actual implementation of the Register method
        /// This separation serves as test hook to validate the Uri
        /// against the code returned by the service
        /// </summary>
        /// <param name="credentials">PagSeguro credentials</param>
        /// <param name="preApproval">PreApproval request information</param>
        /// <returns>The Uri to where the user needs to be redirected to in order to complete the payment process</returns>
        public static Uri CreateCheckoutRequest(Credentials credentials, PreApprovalRequest preApproval)
        {
            PagSeguroTrace.Info(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - begin", preApproval));

            try
            {
                using (HttpWebResponse response = HttpURLConnectionUtil.GetHttpPostConnection(
                           PagSeguroConfiguration.CurrentConfig.PreApprovalUrl.AbsoluteUri, BuildCheckoutUrl(credentials, preApproval)))
                {
                    if (HttpStatusCode.OK.Equals(response.StatusCode))
                    {
                        using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
                        {
                            PreApprovalRequestResponse preApprovalResponse = new PreApprovalRequestResponse(PagSeguroConfiguration.CurrentConfig.PreApprovalRedirectUrl);
                            PreApprovalSerializer.Read(reader, preApprovalResponse);
                            PagSeguroTrace.Info(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - end {1}", preApproval, preApprovalResponse.PreApprovalRedirectUri));
                            return(preApprovalResponse.PreApprovalRedirectUri);
                        }
                    }
                    else
                    {
                        PagSeguroServiceException pse = HttpURLConnectionUtil.CreatePagSeguroServiceException(response);
                        PagSeguroTrace.Error(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - error {1}", preApproval, pse));
                        throw pse;
                    }
                }
            }
            catch (WebException exception)
            {
                PagSeguroServiceException pse = HttpURLConnectionUtil.CreatePagSeguroServiceException((HttpWebResponse)exception.Response);
                PagSeguroTrace.Error(String.Format(CultureInfo.InvariantCulture, "PreApprovalService.Register({0}) - error {1}", preApproval, pse));
                throw pse;
            }
        }
Ejemplo n.º 3
0
        //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        public string SubscribePlan(PreApprovalRequest req, out string subscode, out RestTrace restTrace)
        {
            subscode = null;

            var jsonbody = req.JSONString(true);

            return(SubscribePlan(jsonbody, out subscode, out restTrace));
        }
Ejemplo n.º 4
0
        public string Recorrente(decimal valor, string cnpj, string email, string nome)
        {
            bool isSandbox = false;

            EnvironmentConfiguration.ChangeEnvironment(isSandbox);
            PreApprovalRequest preApproval = new PreApprovalRequest();

            preApproval.Currency = Currency.Brl;

            preApproval.Reference = cnpj;
            preApproval.Sender    = new Sender(
                nome,
                email.ToString(),
                new Phone("00", "00000000")
                );

            var now = DateTime.Now;

            preApproval.PreApproval                      = new PreApproval();
            preApproval.PreApproval.Charge               = Charge.Auto;
            preApproval.PreApproval.Name                 = "CONTFY - CONTABILIDADE ONLINE";
            preApproval.PreApproval.AmountPerPayment     = valor;
            preApproval.PreApproval.MaxAmountPerPeriod   = valor;
            preApproval.PreApproval.MaxPaymentsPerPeriod = 5;
            preApproval.PreApproval.Details              = string.Format("Todo dia {0} será cobrado o valor de {1} referente a CONTABILIDADE ONLINE.", now.Day, preApproval.PreApproval.AmountPerPayment.ToString("C2"));

            preApproval.PreApproval.Period         = Period.Monthly;
            preApproval.PreApproval.DayOfMonth     = now.Day;
            preApproval.PreApproval.InitialDate    = now;
            preApproval.PreApproval.FinalDate      = now.AddYears(5);
            preApproval.PreApproval.MaxTotalAmount = 10000.00m;

            preApproval.RedirectUri = new Uri("https://gerenciadorfcadministrativoweb20180319080544.azurewebsites.net/Home/PosPagIndex?email=" + email + "&status=ativo");

            SenderDocument senderCPF = new SenderDocument(Documents.GetDocumentByType("CPF"), "27952666878");

            preApproval.Sender.Documents.Add(senderCPF);
            try
            {
                AccountCredentials credentials = PagSeguroConfiguration.Credentials(isSandbox);
                Uri preApprovalRedirectUri     = preApproval.Register(credentials);

                GravaTransacao("1", "", valor, preApprovalRedirectUri.ToString(), "", 0, 0, cnpj);

                return(preApprovalRedirectUri.ToString());
            }
            catch (PagSeguroServiceException exception)
            {
                return(exception.InnerException.ToString());
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="preApproval"></param>
        /// <returns></returns>
        internal static string BuildPreApprovalUrl(Credentials credentials, PreApprovalRequest preApproval)
        {
            var builder = new QueryStringBuilder();
            var data    = PreApprovalParse.GetData(preApproval);

            builder.EncodeCredentialsAsQueryString(credentials);

            foreach (var pair in data)
            {
                builder.Append(pair.Key, pair.Value);
            }

            return(builder.ToString());
        }
Ejemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="credentials"></param>
        /// <param name="preApproval"></param>
        /// <returns></returns>
        internal static string BuildPreApprovalUrl(Credentials credentials, PreApprovalRequest preApproval)
        {
            QueryStringBuilder           builder = new QueryStringBuilder();
            IDictionary <string, string> data    = PreApprovalParse.GetData(preApproval);

            builder.
            EncodeCredentialsAsQueryString(credentials);

            foreach (KeyValuePair <string, string> pair in data)
            {
                builder.Append(pair.Key, pair.Value);
            }

            return(builder.ToString());
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            bool isSandbox = true;

            EnvironmentConfiguration.ChangeEnvironment(isSandbox);

            // Instantiate a new preApproval request
            PreApprovalRequest preApproval = new PreApprovalRequest();

            // Sets the currency
            preApproval.Currency = Currency.Brl;

            // Sets a reference code for this preApproval request, it is useful to identify this payment in future notifications.
            preApproval.Reference = "REF1234";

            // Sets your customer information.
            preApproval.Sender = new Sender(
                "Joao Comprador",
                "*****@*****.**",
                new Phone("11", "56273440")
                );

            // Sets the preApproval informations
            var now = DateTime.Now;

            preApproval.PreApproval                      = new PreApproval();
            preApproval.PreApproval.Charge               = Charge.Manual;
            preApproval.PreApproval.Name                 = "Seguro contra roubo do Notebook";
            preApproval.PreApproval.AmountPerPayment     = 100.00m;
            preApproval.PreApproval.MaxAmountPerPeriod   = 100.00m;
            preApproval.PreApproval.MaxPaymentsPerPeriod = 5;
            preApproval.PreApproval.Details              = string.Format("Todo dia {0} será cobrado o valor de {1} referente ao seguro contra roubo do Notebook.", now.Day, preApproval.PreApproval.AmountPerPayment.ToString("C2"));
            preApproval.PreApproval.Period               = Period.Monthly;
            preApproval.PreApproval.DayOfMonth           = now.Day <= 28 ? now.Day : 28;
            preApproval.PreApproval.InitialDate          = now;
            preApproval.PreApproval.FinalDate            = now.AddMonths(6);
            preApproval.PreApproval.MaxTotalAmount       = 600.00m;

            // Sets the url used by PagSeguro for redirect user after ends checkout process
            preApproval.RedirectUri = new Uri("http://www.lojamodelo.com.br/retorno");

            // Sets the url used for user review the signature or read the rules
            preApproval.ReviewUri = new Uri("http://www.lojamodelo.com.br/revisao");

            SenderDocument senderCPF = new SenderDocument(Documents.GetDocumentByType("CPF"), "12345678909");

            preApproval.Sender.Documents.Add(senderCPF);

            // Sets sender Address
            Address senderAddress = new Address("BR", "RJ", "Rio de Janeiro", "Copacabana", "03351-800", "Avenida Copacabana", "1000", "2o Andar");

            preApproval.Sender.Address = senderAddress;

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

                Uri preApprovalRedirectUri = preApproval.Register(credentials);

                Console.WriteLine("URL do pagamento : " + preApprovalRedirectUri);
                Console.ReadKey();
            }
            catch (PagSeguroServiceException exception)
            {
                Console.WriteLine(exception.Message + "\n");

                foreach (ServiceError element in exception.Errors)
                {
                    Console.WriteLine(element + "\n");
                }
                Console.ReadKey();
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="preApproval"></param>
        /// <returns></returns>
        public static IDictionary <string, string> GetData(PreApprovalRequest preApproval)
        {
            IDictionary <string, string> data = new Dictionary <string, string>();

            // reference
            if (preApproval.Reference)
            {
                data["reference"] = preApproval.Reference;
            }

            // sender
            if (preApproval.Sender)
            {
                if (preApproval.Sender.Name)
                {
                    data["senderName"] = preApproval.Sender.Name;
                }

                if (preApproval.Sender.Email)
                {
                    data["senderEmail"] = preApproval.Sender.Email;
                }

                // phone
                if (preApproval.Sender.Phone)
                {
                    if (preApproval.Sender.Phone.AreaCode)
                    {
                        data["senderAreaCode"] = preApproval.Sender.Phone.AreaCode;
                    }

                    if (preApproval.Sender.Phone.Number)
                    {
                        data["senderPhone"] = preApproval.Sender.Phone.Number;
                    }
                }

                // documents
                if (preApproval.Sender.Documents)
                {
                    var documents = preApproval.Sender.Documents;
                    if (documents.Count == 1)
                    {
                        foreach (var document in documents)
                        {
                            if (document)
                            {
                                data["senderCPF"] = document.Value;
                            }
                        }
                    }
                }

                // address
                if (preApproval.Sender.Address)
                {
                    var address = preApproval.Sender.Address;

                    // country
                    if (address.Country)
                    {
                        data["senderAddressCountry"] = address.Country;
                    }

                    // state
                    if (address.State)
                    {
                        data["senderAddressState"] = address.State;
                    }

                    // city
                    if (address.City)
                    {
                        data["senderAddressCity"] = address.City;
                    }

                    // PostalCode
                    if (address.PostalCode)
                    {
                        data["senderAddressPostalCode"] = address.PostalCode;
                    }

                    // PostalCode
                    if (address.District)
                    {
                        data["senderAddressDistrict"] = address.District;
                    }

                    // Complement
                    if (address.Complement)
                    {
                        data["senderAddressComplement"] = address.Complement;
                    }

                    // Address Number
                    if (address.Number)
                    {
                        data["senderAddressNumber"] = address.Number;
                    }

                    // Street
                    if (address.Street)
                    {
                        data["senderAddressStreet"] = address.Street;
                    }
                }
            }

            data["preApprovalCharge"]           = preApproval.PreApproval.Charge;
            data["preApprovalName"]             = preApproval.PreApproval.Name;
            data["preApprovalDetails"]          = preApproval.PreApproval.Details;
            data["preApprovalPeriod"]           = preApproval.PreApproval.Period;
            data["preApprovalFinalDate"]        = preApproval.PreApproval.FinalDate.ToString("yyyy-MM-dd") + "T01:00:00.45-03:00";
            data["preApprovalMaxTotalAmount"]   = preApproval.PreApproval.MaxTotalAmount.ToString("F").Replace(",", ".");
            data["preApprovalAmountPerPayment"] = preApproval.PreApproval.AmountPerPayment.ToString("F").Replace(",", ".");

            if (preApproval.PreApproval.Charge == Charge.Manual)
            {
                data["preApprovalInitialDate"]          = preApproval.PreApproval.InitialDate.ToString("yyyy-MM-dd") + "T01:00:00.45-03:00";
                data["preApprovalMaxAmountPerPeriod"]   = preApproval.PreApproval.MaxAmountPerPeriod.ToString("F").Replace(",", ".");
                data["preApprovalMaxPaymentsPerPeriod"] = preApproval.PreApproval.MaxPaymentsPerPeriod.ToString();

                if (preApproval.PreApproval.Period == Period.Yearly)
                {
                    data["preApprovalDayOfYear"] = preApproval.PreApproval.DayOfYear.ToString();
                }

                if (preApproval.PreApproval.Period == Period.Monthly ||
                    preApproval.PreApproval.Period == Period.Bimonthly ||
                    preApproval.PreApproval.Period == Period.Trimonthly ||
                    preApproval.PreApproval.Period == Period.SemiAnnually)
                {
                    data["preApprovalDayOfMonth"] = preApproval.PreApproval.DayOfMonth.ToString();
                }

                if (preApproval.PreApproval.Period == Period.Weekly)
                {
                    data["preApprovalDayOfWeek"] = preApproval.PreApproval.DayOfWeek.ToString();
                }
            }

            // currency
            if (preApproval.Currency)
            {
                data["currency"] = preApproval.Currency;
            }

            // redirectURL
            if (preApproval.RedirectUri)
            {
                data["redirectURL"] = preApproval.RedirectUri.ToString();
            }

            // redirectURL
            if (preApproval.ReviewUri)
            {
                data["reviewUrl"] = preApproval.ReviewUri.ToString();
            }

            // notificationURL
            if (preApproval.NotificationURL)
            {
                data["notificationURL"] = preApproval.NotificationURL;
            }

            // metadata
            if (preApproval.MetaData.Items.Count > 0)
            {
                var i             = 0;
                var metaDataItems = preApproval.MetaData.Items;
                foreach (var item in metaDataItems)
                {
                    if (PagSeguroUtil.IsEmpty(item.Key) || PagSeguroUtil.IsEmpty(item.Value))
                    {
                        continue;
                    }

                    i++;
                    data["metadataItemKey" + i]   = item.Key;
                    data["metadataItemValue" + i] = item.Value;

                    if (item.Group)
                    {
                        data["metadataItemGroup" + i] = item.Group.ToString();
                    }
                }
            }

            // parameter
            if (preApproval.Parameter.Items.Count <= 0)
            {
                return(data);
            }

            var parameterItems = preApproval.Parameter.Items;

            foreach (var item in parameterItems)
            {
                if (PagSeguroUtil.IsEmpty(item.Key) || PagSeguroUtil.IsEmpty(item.Value))
                {
                    continue;
                }

                if (item.Group)
                {
                    data[item.Key + "" + item.Group] = item.Value;
                }
                else
                {
                    data[item.Key] = item.Value;
                }
            }

            return(data);
        }
Ejemplo n.º 9
0
        public Aluno_pgto Pagar(Aluno_pgto ap)
        {
            EnvironmentConfiguration.ChangeEnvironment(isSandbox);

            // Instantiate a new preApproval request
            PreApprovalRequest preApproval = new PreApprovalRequest();

            // Sets the currency
            preApproval.Currency = Currency.Brl;

            // Sets a reference code for this preApproval request, it is useful to identify this payment in future notifications.
            preApproval.Reference = "AP" + ap.codigo.ToString();

            ap.CompletaCampos();

            // Sets your customer information.
            preApproval.Sender = new Sender(
                ap.aluno.nome,
                ap.aluno.email,
                new Phone(ap.aluno.ddd, ap.aluno.telefone)
                );

            valor = Convert.ToDecimal(ap.curso.valor);

            if (ap.aluno.codigo == 4284)
            {
                valor = 1;
            }

            preApproval.PreApproval = new PreApproval();

            // Sets the preApproval informations
            var now = DateTime.Now;

            preApproval.PreApproval                      = new PreApproval();
            preApproval.PreApproval.Charge               = Charge.Auto;
            preApproval.PreApproval.Name                 = "Assinatura " + ap.curso.titulo;
            preApproval.PreApproval.AmountPerPayment     = valor;
            preApproval.PreApproval.MaxAmountPerPeriod   = valor;
            preApproval.PreApproval.MaxPaymentsPerPeriod = 1;
            preApproval.PreApproval.Details              = string.Format("Todo dia {0} sera cobrado o valor de {1} referente a sua assinatura {2}. A assinatura esta sendo contratada ate o termino da vigencia, no entanto voce podera fazer o cancelamento quando quiser!", now.Day, preApproval.PreApproval.AmountPerPayment.ToString("C2"), ap.curso.titulo);
            preApproval.PreApproval.Period               = Period.Monthly;
            preApproval.PreApproval.DayOfMonth           = now.Day;
            preApproval.PreApproval.InitialDate          = now;
            preApproval.PreApproval.FinalDate            = now.AddMonths(qtd_max_meses);
            preApproval.PreApproval.MaxTotalAmount       = qtd_max_meses * valor;

            // Sets the url used by PagSeguro for redirect user after ends checkout process
            preApproval.RedirectUri = new Uri("https://www.cenbrap.com.br/Pagseguro/retorno");
            // Sets the url used for user review the signature or read the rules
            preApproval.ReviewUri = new Uri("https://www.cenbrap.com.br/Pagseguro/revisao");

            SenderDocument senderCPF = new SenderDocument(Documents.GetDocumentByType("CPF"), ap.aluno.cpf.Replace(".", "").Replace(" ", "").Replace("-", "").Replace("/", "").Replace(",", ""));

            preApproval.Sender.Documents.Add(senderCPF);

            try
            {
                //AccountCredentials credentials = new AccountCredentials(email, token);
                AccountCredentials credentials = PagSeguroConfiguration.Credentials(isSandbox);

                Uri preApprovalRedirectUri = preApproval.Register(credentials);

                ap.situacao = 0;
                ap.obs      = preApprovalRedirectUri.ToString();
                ap.txt      = "";

                ap.Alterar();
            }
            catch (PagSeguroServiceException exception)
            {
                ap.situacao = 1;
                ap.obs      = "";

                ap.txt = exception.Message + "\n";

                foreach (ServiceError element in exception.Errors)
                {
                    ap.txt += (element + "\n");
                }

                ap.Alterar();
            }

            return(ap);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="preApproval"></param>
        /// <returns></returns>
        public static IDictionary <string, string> GetData(PreApprovalRequest preApproval)
        {
            IDictionary <string, string> data = new Dictionary <string, string>();

            // reference
            if (preApproval.Reference != null)
            {
                data["reference"] = preApproval.Reference;
            }

            // sender
            if (preApproval.Sender != null)
            {
                if (preApproval.Sender.Name != null)
                {
                    data["senderName"] = preApproval.Sender.Name;
                }
                if (preApproval.Sender.Email != null)
                {
                    data["senderEmail"] = preApproval.Sender.Email;
                }

                // phone
                if (preApproval.Sender.Phone != null)
                {
                    if (preApproval.Sender.Phone.AreaCode != null)
                    {
                        data["senderAreaCode"] = preApproval.Sender.Phone.AreaCode;
                    }
                    if (preApproval.Sender.Phone.Number != null)
                    {
                        data["senderPhone"] = preApproval.Sender.Phone.Number;
                    }
                }

                // documents
                if (preApproval.Sender.Documents != null)
                {
                    var documents = preApproval.Sender.Documents;
                    if (documents.Count == 1)
                    {
                        foreach (SenderDocument document in documents)
                        {
                            if (document != null)
                            {
                                data["senderCPF"] = document.Value;
                            }
                        }
                    }
                }
            }

            data["preApprovalCharge"]           = preApproval.PreApproval.Charge;
            data["preApprovalName"]             = preApproval.PreApproval.Name;
            data["preApprovalDetails"]          = preApproval.PreApproval.Details;
            data["preApprovalPeriod"]           = preApproval.PreApproval.Period;
            data["preApprovalFinalDate"]        = preApproval.PreApproval.FinalDate.ToString("yyyy-MM-dd") + "T01:00:00.45-03:00";
            data["preApprovalMaxTotalAmount"]   = preApproval.PreApproval.MaxTotalAmount.ToString("F").Replace(",", ".");
            data["preApprovalAmountPerPayment"] = preApproval.PreApproval.AmountPerPayment.ToString("F").Replace(",", ".");

            if (preApproval.PreApproval.Charge == Charge.Manual)
            {
                data["preApprovalInitialDate"]          = preApproval.PreApproval.InitialDate.ToString("yyyy-MM-dd") + "T01:00:00.45-03:00";
                data["preApprovalMaxAmountPerPeriod"]   = preApproval.PreApproval.MaxAmountPerPeriod.ToString("F").Replace(",", ".");
                data["preApprovalMaxPaymentsPerPeriod"] = preApproval.PreApproval.MaxPaymentsPerPeriod.ToString();

                if (preApproval.PreApproval.Period == Period.Yearly)
                {
                    data["preApprovalDayOfYear"] = preApproval.PreApproval.DayOfYear.ToString();
                }

                if (preApproval.PreApproval.Period == Period.Monthly || preApproval.PreApproval.Period == Period.Bimonthly || preApproval.PreApproval.Period == Period.Trimonthly || preApproval.PreApproval.Period == Period.SemiAnnually)
                {
                    data["preApprovalDayOfMonth"] = preApproval.PreApproval.DayOfMonth.ToString();
                }

                if (preApproval.PreApproval.Period == Period.Weekly)
                {
                    data["preApprovalDayOfWeek"] = preApproval.PreApproval.DayOfWeek.ToString();
                }
            }

            // currency
            if (preApproval.Currency != null)
            {
                data["currency"] = preApproval.Currency;
            }

            // redirectURL
            if (preApproval.RedirectUri != null)
            {
                data["redirectURL"] = preApproval.RedirectUri.ToString();
            }

            // redirectURL
            if (preApproval.ReviewUri != null)
            {
                data["reviewUrl"] = preApproval.ReviewUri.ToString();
            }

            // notificationURL
            if (preApproval.NotificationURL != null)
            {
                data["notificationURL"] = preApproval.NotificationURL;
            }

            // metadata
            if (preApproval.MetaData.Items.Count > 0)
            {
                int i             = 0;
                var metaDataItems = preApproval.MetaData.Items;
                foreach (MetaDataItem item in metaDataItems)
                {
                    if (!PagSeguroUtil.IsEmpty(item.Key) && !PagSeguroUtil.IsEmpty(item.Value))
                    {
                        i++;
                        data["metadataItemKey" + i]   = item.Key;
                        data["metadataItemValue" + i] = item.Value;

                        if (item.Group != null)
                        {
                            data["metadataItemGroup" + i] = item.Group.ToString();
                        }
                    }
                }
            }

            // parameter
            if (preApproval.Parameter.Items.Count > 0)
            {
                var parameterItems = preApproval.Parameter.Items;
                foreach (ParameterItem item in parameterItems)
                {
                    if (!PagSeguroUtil.IsEmpty(item.Key) && !PagSeguroUtil.IsEmpty(item.Value))
                    {
                        if (item.Group != null)
                        {
                            data[item.Key + "" + item.Group] = item.Value;
                        }
                        else
                        {
                            data[item.Key] = item.Value;
                        }
                    }
                }
            }
            return(data);
        }