Actualmente Mercado Pago Payment sólo funciona para México. La posibilidad de que se pueda configurar para diferentes países es viable.

Básicamente, la forma debe pago debe redireccionar hacia la versión de Mercado Pago de cada país. A saber, sólo tenemos que cambiar el código de País en el url https://www.mercadopago.com/<codigo>/buybutton y agregar a la forma el campo currency=<Código de moneda>

Argentina
Código: mla
Código de moneda: ARG
Brasil
Código: mlb
Código de moneda: REA
Chile
Código: mlc
Código de moneda: CHI
Colombia
Código: mco
Código de moneda: ?
Méixco
Código: mlm
Código de moneda: MEX
Estatus: Verificado
Venezuela
Código: mlv
Código de moneda: VEN

A parte de México, no he tenido la oportunidad de verificar que los demás códigos funcionan. En el caso de Colombia, no he encontrado cuál es el código de moneda que requiere Mercado Pago. Si alguien ha podido verificar el código sería bueno saberlo, para marcarlo como verificado e implementarlo.

Estoy pensando en agregar un menú para seleccionar el país al que pertenece la cuenta de MercadoPago.

Me falta averiguar si Mercado Pago puede procesar pagos en otras monedas, por ejemplo, dólares. Y me gustaría saber si los posible usuarios de este módulo, preferirían que la moneda se eligiera de acuerdo a la moneda predefinida de cada país o que se intente mandar la moneda seleccionada en la configuración global de Drupal Commerce.

Comments

jrviorato’s picture

Status: Active » Needs review

Ya implementé la funcionalidad pedida. Será necesario hacer pruebas para cada uno de los países listados. A quien le interese, por favor, avísenme si les funcionó.

P.D. El código para la moneda Colombia que usa MercadoPago es "COL".

yehanny’s picture

Buenas tardes, en efecto ya estoy implementando el código en un sitio de prueba a ver si funciona con mis datos en MercadoPago de Venezuela (esperemos que si) cualquier eventualidad la estaré publicando por aquí, Saludos y gracias!... (=

yehanny’s picture

Buenas, comento que he realizado las pruebas pertinentes para implementar el módulo de MercadoPago con Drupal Commerce, hice todo el proceso tal cual esta explicado y lo configuré para mi país (Venezuela), excelente el selector de los países en la configuración del módulo, pero eso no hace que cambie el direccionamiento al momento de realizar el pago y arroja un valor en blanco así: http://www.mercadopago.com//button y no coloca el código del país http://www.mercadopago.com/mlv/button, problema que se resuelve colocando manual en el valor el código del país por defecto (mlv en el caso de Venezuela).

Por otro lado realicé todo el proceso de pago con un pedido de prueba, me envió a MercadoPago de Venezuela con el monto de la operación más el Impuesto al Valor Agregado, agregué mi tarjeta de crédito y todo bien hasta allí pero al momento de confirmar la operación para pagar arrojó el siguiete error:

Ha ocurrido un error durante el proceso de pago.
Por favor, revisa los datos de tu vendedor desde Mi MercadoLibre > Mis Compras y contáctalo para acordar la forma de pago y envío.
Disculpa las molestias ocasionadas.

Lo que significa que el pago no se realizó correctamente y me envía a logear en la cuenta de MercadoLibre en vez del sitio desde el que estoy comprando, espero pueda servir de ayuda este comentario y sigo estando presto a hacer las pruebas pertinentes para que el módulo sea completamente funcional, saludos!... (=

jrviorato’s picture

Hola yehanny, pues según entendí hay dos errores:

  1. No se está redireccionando al País. Hice unas pruebas y la forma de pago sí se redirecciona al país correspondiente. Me queda la dudad entonces, si no funcionaba el selector de País, ¿cómo hiciste para que sí se redireccionara a Venezuela? O sea, ¿a qué te refieres con que le moviste manualmente? Tal vez no estoy entendiendo bien las condiciones en las que se dio el error.
  2. Ocurre un error durante el proceso de compra. No me es posible saber qué fue lo que pasó. Pero intentando adivinar, creo que es más bien un error de de MercadoPago, no se pudo procesar la tarjeta de crédito.
    Como sea, es conveniente repetir el experimento, por mi parte hice un ligero cambio al módulo, pensando en que tal vez el módulo no mando el header adecuadamente cuando MercadoPago intento comunicarse. Pero por lo que describes, no parece ser ese el problema, pues aunque MercadoPago hubiera tenido problemas para comunicarse, simplemente seguiría intentando comunicarse sin mandarle un mensaje de error al comprador.

    Sugiero revisar lo siguiente en el próximo experimento:

    • Pagar con una tarjeta de crédito diferente. Sospecho que MercadoPago pone filtros para que uno mismo no se compre cosas, o que no usemos tarjetas registradas a otro cuenta de email o cosas por el estilo. También podrías usar alguna forma de pago diferente, como depósito bancario, como para ver si se termina adecuadamente el proceso.
    • Revisar que en https://www.mercadopago.com/mlv/cartdata esté llenos los campos "Estado de los pagos" y "Cambios de estado de los pagos".
    • Revisar que en http://<your domain>/admin/commerce/config/currency esté seleccionada la moneda de Venezuela.

Seguiré al pendiente de tus comentario.
Saludos

drupal-son’s picture

Hola jrviorato, necesito implementar para un sitio en Mexico la integración con MercadoPago, pero sin utilizar Drupal Commerce ya que no es un carrito de compras.

El sitio solo requiere que los usuarios registrados paguen la suscripcion.
Según tu experiencia, cual es la mejor forma de implementar este reqerimiento en Drupal core 7.x.
Estuve viendo la documentacion de MP y por lo que entiendo solo debo poner el boton de comprar (con sus correspondientes numeros de cuenta, token, etc) e indicar las URLs correspondientes para cada accion (Success, Error, In process).
Como hago para recibir el request de MP una vez hecho el pago y actualizar un registro que indique que ese cliente ya pago?
Como conviene generar los IDs de pago?
Necesito montar algun servicio que este escuchando las llamadas de MP? Como las valido?

Muchas gracias por tu ayuda.

jrviorato’s picture

Hola Akenelson, pues este no es el lugar más adecuado para tratar estos temas. Te contesto rápidamente por aquí.
Te comento que efectivamente vas a necesitar implementar un servicio, en alguna URL de tu sitio; en drupal, bastará con implementar el hook_menu(). Los IDs de los pagos, yo no los genero, los genera drupal commerce payment; pero MP te pide la variable 'seller_op_id', ahí concateno el número de orden que está pagando y el timestamp.

Para validar las llamadas de MP, yo creo que la forma más efectiva es hacer un POST a MP al momento de recibir la notificación y verificas que coincida la información recibida. Aunque esta forma, pues es un poco más lenta; pues requiere un paso extra.

Saludos

bolchevique’s picture

Hola acabo de testearlo con Mercado Pago Argentina y funcionó oka!

Adjunto las capturas

Lo que me genera dudas es que el pago quedó como pendiente, cómo puedo verificar si mercado pago lo informó?
La funcionalidad para recibir ese informe via IPN de MP está implementada?

Estaba pensando que sería muy bueno agregar como funcionalidad un cron que controle el estado de los pagos pendientes cada X tiempo.
Por ejemplo podrías decir que los pedidos generados en la ultima hora los controle cada 5 minutos, los pedidos con más de 6 horas cada 30 minutos y los que tengan más de 24 hs 2 veces al día.

De esta manera si MP falla al informar el estado de un pago podrías asegurarte de actualizar su estado.

Me gustaría mucho ayudarte con eso, si te parece que podría hacerlo contactame a mail at gilgamezh dot me

Felicitaciones y gracias por el modulo!
:D

bolchevique’s picture

StatusFileSize
new1.46 KB

Encontre que el modulo está logueando :D así que te copio las salidas que me da, sospecho que tal vez tengo yo algo mal configurado.
Tener en cuenta únicamente los últimos 3 registros (primeros 3 porque esta ordenado desc)

jrviorato’s picture

Y en la página del pedido, en la sección de "Pago", ¿qué te aparece?¿Cuál es el estado del pago?

Sobre verificar si mercado pago lo informó, creo que lo mejor es hacer la verificación del pago directamente a MP cuando se reciba el IPN. MP manda el IPN varias veces durante el día y va reduciendo conforme pasa el tiempo; justamente lo que sugieres.

Gracias por la oferta de ayuda, estoy abierto a cualquier mejora.

jrviorato’s picture

Se ve de los logs, que MP efectivamente intentó comunicarse con tu sitio vía IPN. Lamentablemente, no envio la variable "seller_op_id", eso es bastante extraño. Como si el pago se hubiera generado directamente por la forma del sitio.

Lo único que no he entendido del watchdog es por qué no imprime toda la información posteada por el IPN de MP. Creo que una forma de lograrlo es remover el pasar por "check_plain" la información posteada. Esto es, en las líneas 249, 253 y 264 del archivo mercado_pago_payment.module, cambiarlas por:

 array('@posted_info' =>print_r($posted_info, TRUE)), WATCHDOG_INFO);

Y esperar a que MP vuelva a mandar un IPN y revisar qué es lo que manda.

Por otro lado, otra cosa que podrías hacer es hacer otra compra, pero sin completarla, únicamente haz lo siguiente:

  • Lleva tu compra hasta la sección de formas de pago,
  • Elige Mercado pago
  • Desactiva el javascript de tu explorador
  • Presiona siguiente

La página te mostrará el botón de pagos de MP, pero si revisas el código fuente de la página, verás la forma creada por este Módulo. Revisa que dicha forma tenga los datos especificados en https://www.mercadopago.com/mla/ml.faqs.framework.main.FaqsController?pa...

En especial, revisa que estén tus datos acc_id y enc, que seller_op_id sea de la forma 999-0123456789 donde los primero dígitos antes del guión son el número de orden y los posteriores son el timestamp.

Saludos

enzo3946’s picture

Priority: Normal » Major

He cargado una nueva iniciativa en el Foro de Mercado Pago. Me he comunicado con uno de los principales desarrolladores para todos los módulos de Mercado Pago para wordpress, Joomla y otros y me ha comunicado que hay que hacer fuerza desde aquí. Les pido por favor sumarse al debate en el foro de ML. Cuanto más seamos más prioridad le van a dar al proyecto. Saludos desde Argentina.
https://groups.google.com/forum/?fromgroups=#!newtopic/mercadopago-developers/mercadopago-developers/3ylJEjs_arY

bolchevique’s picture

Disculpa la demora, entre esta noche y mañana hago esas pruebas y te paso los datos. También voy a chequear la configuración de mi cuenta de MP, tal vez hice algo mal ahí.

Gracias!

jrviorato’s picture

Hola bochevique:

Por favor, antes de que hagas más pruebas. Revisa en
/admin/commerce/orders/%order_id/payment/%payment_id/view

Y dime qué dice en la sección "Payload".

Saludos

bolchevique’s picture

StatusFileSize
new34.08 KB

En la solapa de payments no tengo ningun dato para esa órden.

captura

jrviorato’s picture

Aproveché que ahora se pueden crear usuarios de prueba en MP. Ya por fin pude hacer pruebas con otros países. Empecé por Argentina, aprovechando que bolchevique ha estado probando el módulo.

Y resulta que la notificación IPN de Mercado Pago estaba llegando de forma incorrecta, básicamente removía el parámetro "code=mercadopago_status" que había agregado al URL de notificaciones. Entonces, decidí quitarlo ya que de cualquier manera no está contribuyendo en mucho.

Finalmente, hice una prueba con los usuarios de prueba (valga la redundancia) y sí se creo el pago dentro de la solapa de Payments de la orden. ¡Excelente!

Así que, es un buen momento para volver a verificar si el módulo funciona para sus países.

Saludos.
Jesús

PD. Estoy trabajando ya en la versión 7.x-2.x del módulo, donde planeo meter el nuevo sistema de pagos de Mercado Pago, pueden ir viendo el código si lo desean. Pero les advierto que aún está algo inestable. Para este código estoy considerando que para la instalación del módulo se descargue la librería PHP-SDK de mercado pago. Lo cuál evidentemente hará un poco más latosa la instalación, pero asegurará la compatibilidad para todos los países.

bolchevique’s picture

StatusFileSize
new1.01 KB
new36.86 KB

Funcionó perfecto!! :D

captura

Entiendo que con este cambio a la hora de configurar la cuenta de MP no es necesario poner el "mercadopago_status" tal como dice en el README.TXT.

2. Configure your Mercado Pago account
* Login to MercadoPago
* Go to https://www.mercadopago.com/mlm/cartdata
* On "Estado de los pagos" and "Cambios de estado de los pagos:" write the url:
* http:///mercado_pago_payment/ipn?code=mercadopago_status

O esto es valido únicamente para argentina? en cualquiera de los casos deberias aclararlo :D

Muchas gracias por la ayuda! :D

una consulta, cómo puedo hacer para dar de alta usuarios de prueba de MP ? estoy iniciando un proyecto y me interesa poder testear a fondo el modulo.

jrviorato’s picture

Muchas gracias Nicolás (bolchevique),

Ya lo cambié, ahora el readme explica qué se tiene que hacer. El cambio se hizo para todos los países, en especial para argentina. De hecho, la intrucción ?code=mercadopago_status ya no afecta en nada, esté o no esté presente en la configuración. Lo que es un alivio, por si alguien simplemente decide actualizar el módulo.

Ahh, y sobre la creación de usuarios de MP puedes seguir estas instrucciones:
http://developers.mercadopago.com/documentacion/crear-usuarios-de-prueba

Necesitarás crear tu token antes, para ello sigue las instrucciones:
http://developers.mercadopago.com/documentacion/autenticacion

Saludos

jrviorato’s picture

Issue summary: View changes

Errores ortográficos

jrviorato’s picture

Version: » 7.x-2.x-dev
Status: Needs review » Fixed
jrviorato’s picture

Version: 7.x-2.x-dev » 7.x-2.1-alpha2

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

oegi’s picture

buenas estoy aprendiendo un poco de este modulo,cuando selecciono mercado pago me sale el siguiente error

Fatal error: Class 'MP' not found in C:\xampp\htdocs\prueba\sites\all\modules\mercado_pago_payment\mercado_pago_payment.sdk.inc on line 280

jrviorato’s picture

Hole oegi,
Moví tu pregunta a otro issue, pues tu pregunta es independiente de lo discutido aquí.

Ya te hice una sugerencia allá, sigue el siguiente link https://www.drupal.org/node/2700749