Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1- Se crea una que contenga todos los parámetros, tipos de datos, listas, etc, de Mercado pago
- ******************************************************************************************************************
- namespace SneakerStoreApp.Model.ShoppingCartModel
- {
- public class MPModel
- {
- public MPModel()
- {
- }
- public int external_reference { get; set; }
- public List<MPModelItems> items { get; set; }
- public string statement_descriptor { get; set; }
- public MPModelPayer payer { get; set; }
- public MPModelUrls back_urls { get; set; }
- public MPModelAddress address { get; set; }
- public string date_created { get; set; }
- public string additional_info { get; set; }
- public string marketplace { get; set; }
- }
- public class MPModelItems
- {
- public MPModelItems()
- {
- }
- public int id { get; set; }
- public string title { get; set; }
- public int quantity { get; set; }
- public double unit_price { get; set; }
- public string currency_id { get; set; }
- }
- public class MPModelPayer
- {
- public MPModelPayer()
- {
- }
- public string name { get; set; }
- public string surname { get; set; }
- public string email { get; set; }
- }
- public class MPModelUrls
- {
- public MPModelUrls()
- {
- }
- public string success { get; set; }
- public string failure { get; set; }
- public string pending { get; set; }
- }
- public class MPModelAddress
- {
- public MPModelAddress()
- {
- }
- public string zip_code { get; set; }
- public string street_name { get; set; }
- public string street_number { get; set; }
- }
- }
- ******************************************************************************************************************
- 2- Al momento de pagar, se empiezan a llenar los objetos de esta clase de manera individual
- 3- Primero creamos una lista de objeto MPModelItems y la llenamos en un foreach con todos los productos que el usuario selecciono
- public List<MPModelItems> ItemsMp = new List<MPModelItems>();
- foreach (var items in ProductsFinal)
- {
- var precioTotalDelProducto = items.idTipoDescuento == "1" ? items.precioVentaDescuento : items.precioVenta;
- ItemsMp.Add(new MPModelItems
- {
- id = items.idProduct,
- currency_id = "MXN",
- quantity = items.cantidad,
- unit_price = (double)Convert.ToDecimal(precioTotalDelProducto),
- title = items.descripcion
- });
- }
- La lista se llena con 1 o N productos
- 4- Si el costo de envío es diferente de cero, se agrega a la misma lista como un item más
- if (SendTotal != 0)
- {
- ItemsMp.Add(new MPModelItems
- {
- id = 99999,
- currency_id = "MXN",
- quantity = 1,
- unit_price = (double)SendTotal,
- title = "Costo de envío"
- });
- }
- 5- Si se aplico un código o un cupón, este también se mete en la misma lista como un item más
- if (CodeCuponId == 0)
- {
- }
- else
- {
- var descuentoespecial = Convert.ToDouble(AmmountDiscount.Replace("-$", ""));
- ItemsMp.Add(new MPModelItems
- {
- id = 88888,
- currency_id = "MXN",
- quantity = 1,
- unit_price = -descuentoespecial,
- title = "Cupón/Código"
- });
- }
- 6 - Se procede a llenar el objeto principal de tipo MPModel
- var payload = new MPModel
- {
- back_urls = new MPModelUrls
- {
- success = "succespaymentmovil",
- failure = "failpaymentmovil",
- pending = "pendingpaymentmovil"
- },
- external_reference = (int)Convert.ToInt64(UserId),
- marketplace = "Sneakerstore Mercado Pago App móvil " + Device.RuntimePlatform + "",
- statement_descriptor = "Sneakerstore Mercado Pago App móvil " + Device.RuntimePlatform + "",
- payer = new MPModelPayer
- {
- name = Name,
- surname = "",
- email = Email
- },
- items = ItemsMp,
- address = new MPModelAddress
- {
- zip_code = SelectAddressDelivery.codigoPostal,
- street_name = SelectAddressDelivery.calle,
- street_number = SelectAddressDelivery.numeroExt
- },
- additional_info = "Pago generado desde la app sneakerstore "+Device.RuntimePlatform+" el día "+DateTime.Now.ToString("dd-MM-yyyy")+" a las "+ DateTime.Now.ToString("HH:mm")+""
- };
- 7- Por último toda la clase se serializa en un JSON y se mete en la llamada
- var stringPayload = JsonConvert.SerializeObject(payload);
- var httpContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement