jazz1793

Pasos de request MP móvil

Oct 20th, 2021
1,001
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 1- Se crea una que contenga todos los parámetros, tipos de datos, listas, etc, de Mercado pago
  2.  
  3. ******************************************************************************************************************
  4. namespace SneakerStoreApp.Model.ShoppingCartModel
  5. {
  6.     public class MPModel
  7.     {
  8.         public MPModel()
  9.         {
  10.         }
  11.         public int external_reference { get; set; }
  12.         public List<MPModelItems> items { get; set; }
  13.         public string statement_descriptor { get; set; }
  14.         public MPModelPayer payer { get; set; }
  15.         public MPModelUrls back_urls { get; set; }
  16.         public MPModelAddress address { get; set; }
  17.         public string date_created { get; set; }
  18.         public string additional_info { get; set; }
  19.         public string marketplace { get; set; }
  20.     }
  21.  
  22.     public class MPModelItems
  23.     {
  24.         public MPModelItems()
  25.         {
  26.         }
  27.  
  28.         public int id { get; set; }
  29.         public string title { get; set; }
  30.         public int quantity { get; set; }
  31.         public double unit_price { get; set; }
  32.         public string currency_id { get; set; }
  33.     }
  34.     public class MPModelPayer
  35.     {
  36.         public MPModelPayer()
  37.         {
  38.         }
  39.  
  40.         public string name { get; set; }
  41.         public string surname { get; set; }
  42.         public string email { get; set; }
  43.     }
  44.  
  45.     public class MPModelUrls
  46.     {
  47.         public MPModelUrls()
  48.         {
  49.         }
  50.  
  51.         public string success { get; set; }
  52.         public string failure { get; set; }
  53.         public string pending { get; set; }
  54.     }
  55.  
  56.     public class MPModelAddress
  57.     {
  58.         public MPModelAddress()
  59.         {
  60.         }
  61.  
  62.         public string zip_code { get; set; }
  63.         public string street_name { get; set; }
  64.         public string street_number { get; set; }
  65.     }
  66. }
  67. ******************************************************************************************************************
  68.  
  69. 2- Al momento de pagar, se empiezan a llenar los objetos de esta clase de manera individual
  70.  
  71. 3- Primero creamos una lista de objeto MPModelItems y la llenamos en un foreach con todos los productos que el usuario selecciono
  72.  
  73. public List<MPModelItems> ItemsMp = new List<MPModelItems>();
  74. foreach (var items in ProductsFinal)
  75. {
  76.   var precioTotalDelProducto = items.idTipoDescuento == "1" ? items.precioVentaDescuento : items.precioVenta;
  77.   ItemsMp.Add(new MPModelItems
  78.   {
  79.      id = items.idProduct,
  80.      currency_id = "MXN",
  81.      quantity = items.cantidad,
  82.      unit_price = (double)Convert.ToDecimal(precioTotalDelProducto),
  83.      title = items.descripcion
  84.   });
  85. }
  86. La lista se llena con 1 o N productos
  87.  
  88. 4- Si el costo de envío es diferente de cero, se agrega a la misma lista como un item más
  89. if (SendTotal != 0)
  90. {
  91.   ItemsMp.Add(new MPModelItems
  92.   {
  93.       id = 99999,
  94.       currency_id = "MXN",
  95.       quantity = 1,
  96.       unit_price = (double)SendTotal,
  97.       title = "Costo de envío"
  98.   });
  99. }
  100.        
  101. 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
  102. if (CodeCuponId == 0)
  103. {
  104. }
  105. else
  106. {
  107.    var descuentoespecial = Convert.ToDouble(AmmountDiscount.Replace("-$", ""));
  108.    ItemsMp.Add(new MPModelItems
  109.    {
  110.        id = 88888,
  111.        currency_id = "MXN",
  112.        quantity = 1,
  113.        unit_price = -descuentoespecial,
  114.        title = "Cupón/Código"
  115.    });
  116. }  
  117.  
  118. 6 - Se procede a llenar el objeto principal de tipo MPModel
  119. var payload = new MPModel
  120. {
  121.     back_urls = new MPModelUrls
  122.     {
  123.        success = "succespaymentmovil",
  124.        failure = "failpaymentmovil",
  125.        pending = "pendingpaymentmovil"
  126.     },
  127.     external_reference = (int)Convert.ToInt64(UserId),
  128.     marketplace = "Sneakerstore Mercado Pago App móvil " + Device.RuntimePlatform + "",
  129.     statement_descriptor = "Sneakerstore Mercado Pago App móvil " + Device.RuntimePlatform + "",
  130.     payer = new MPModelPayer
  131.     {
  132.        name = Name,
  133.        surname = "",
  134.        email = Email
  135.     },
  136.     items = ItemsMp,
  137.     address = new MPModelAddress
  138.     {
  139.        zip_code = SelectAddressDelivery.codigoPostal,
  140.        street_name = SelectAddressDelivery.calle,
  141.        street_number = SelectAddressDelivery.numeroExt
  142.     },
  143.     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")+""
  144. };
  145.  
  146. 7- Por último toda la clase se serializa en un JSON y se mete en la llamada
  147.  
  148. var stringPayload = JsonConvert.SerializeObject(payload);
  149.  
  150. var httpContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
  151.  
RAW Paste Data