jazz1793 icon

Pasos de request MP móvil

jazz1793 | PRO | 10/20/21 08:20:28 PM UTC | 0 ⭐ | 1398 👁️ | Never ⏰ | []
C# |

4.59 KB

|

None

|

0 👍

/

0 👎

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");
 

Comments