aaferna / SAPIDK-MercadoPago-PHP

SDK Alternativo de Mercado Pago en PHP
Apache License 2.0
3 stars 0 forks source link

Enviar Precio por qr #2

Closed jflg1412 closed 5 years ago

jflg1412 commented 5 years ago

Hola Agustín, me llamo José soy de Mendoza y encontré este SDK que esta muy bueno. Quería saber si podes responderme a mi pregunta ya que estoy un poco perdido y quiero saber si esta, tu herramienta, me puede servir. Te explico la situación. Un cliente viene a mi local y yo le facturo, cuando desea pagar lo quiere hacer con mercado pago. yo tengo que enviar dicha información (los ítem de la factura y el importe total ) a una CAJA (aca yo ya tengo configurada una tienda y una caja en Mercado Pago). El cliente por medio de la app de mercado pago escanea el código qr que tengo impreso en mi caja. Como yo ya envié la información de de los ítem y total, a el le debería aparecer dicha info en su app y la pagaría. En mi sistema debería esperar la respuesta de dicho pago y si el realiza el pago yo puedo consultarlo y continuar con la impresión de la factura.

Quería saber si puedo realizar este ejemplo con SAPI-DK Mercado Pago. y si es así, me podrías guiar.

Desde ya muchas gracias

jflg1412 commented 5 years ago

Luego de intentar lo que me has respondido, no logro poder crear una "caja" donde el cliente pueda o no cambiar el precio. He creado dos usuarios y uno esta configurado como vendedor y posee una caja creada por el sistema de Mercado Pago.

<?php 
include('/library/core.php');
/*
$dataArray = array(
    'name' => 'Caja', // Nombre del QR / Caja
    'fixed_amount' => 'false', // Elegir si el cliente puede modificar o poner el precio  
      'external_id' => mt_rand(3,20000), // ID por el cual va a identificarlo internamente, le recomendamos usar mt_rand(3,20000)
  );
  echo $token;

   echo "<pre>";
  print_r($dataArray);
  echo "</pre>";

 echo "<pre>";
  print_r($qrlist);
  echo "</pre>";

  $response = post($qrlist, $dataArray, $token);
  echo "<pre>";
  print_r($response);
  echo "</pre>";
// Valores que envio al ARRAY
$response = responsesimple($qrlist, $token);
 echo "<pre>";
  print_r($response);
  echo "</pre>";
*/

?>

Y LA RESPUESTA ES:

Array
(
    [external_reference] => 2975641
    [notification_url] => ipnManager.php
    [items] => Array
        (
            [0] => Array
                (
                    [title] => venta
                    [currency_id] => ARS
                    [unit_price] => 23
                    [quantity] => 1
                )

        )

)

https://api.mercadopago.com/mpmobile/instore/qr/467993406Caja 1

Array
(
    [paging] => Array
        (
            [total] => 1
            [offset] => 0
            [limit] => 30
        )

    [results] => Array
        (
            [0] => Array
                (
                    [user_id] => 467993406
                    [name] => Caja 1
                    [store_id] => 30177345
                    [id] => 2981833
                    [qr] => Array
                        (
                            [image] => https://www.mercadopago.com/instore/merchant/qr/2981833/0746dcb196674cf290d6922db12623e8b54c14a2618a4e55b0c30c5bc81be407.png
                            [template_document] => https://www.mercadopago.com/instore/merchant/qr/2981833/template_0746dcb196674cf290d6922db12623e8b54c14a2618a4e55b0c30c5bc81be407.pdf
                            [template_image] => https://www.mercadopago.com/instore/merchant/qr/2981833/template_0746dcb196674cf290d6922db12623e8b54c14a2618a4e55b0c30c5bc81be407.png
                        )

                    [date_created] => 2019-09-14T07:43:45.000-04:00
                    [date_last_updated] => 2019-09-14T07:43:45.000-04:00
                )

        )

)

pero no logro hacer que funcione. Agradecería ayuda.

aaferna commented 5 years ago

Hola José! es un gusto hablarte hoy.

Si, obviamente se puede, pero te recomiendo que hagas estos pasos.

1) Cobrar por QR

sigue estos pasos para poder solucionar tu POST al QR

https://github.com/gusgeek/SAPIDK-MercadoPago/wiki/QR

2) Recibe la notificación mediante este IPN

https://github.com/gusgeek/SAPIDK-MercadoPago/blob/master/Ejemplos/IPN%20Manager/ipnManager.php

Podes tener más información por aquí: https://github.com/gusgeek/SAPIDK-MercadoPago/wiki/IPN

3) En tu sistema elegí, si al recibir el IPN autofacturar, o cambiar de estado la venta y vos consientas la factura (este último te recomiendo)

creo haber interpretado tu necesidad, de ser asi o no espero tu respuesta!

aaferna commented 5 years ago

Respondiendo a tu ARRAY:

$dataArray = array(
'name' => 'Caja', // Nombre del QR / Caja
'fixed_amount' => 'false', // Elegir si el cliente puede modificar o poner el precio
'external_id' => mt_rand(3,20000), // ID por el cual va a identificarlo internamente, le recomendamos usar mt_rand(3,20000)
);

estas pasando el valor 'fixed_amount' => 'false', // Elegir si el cliente puede modificar o poner el precio como String, por lo que tendria que quedarte asi

'fixed_amount' => false, // Elegir si el cliente puede modificar o poner el precio

por lo que para crear una caja seria con este codigo, tal cual te lo paso de la wiki

<?php

include('./library/core.php');

    $dataArray = array(
        'name' => $_REQUEST['nombreqr'], // Nombre del QR / Caja
        'fixed_amount' => false, // Elegir si el cliente puede modificar o poner el precio  
        'external_id' => $_REQUEST['external_id'], // ID por el cual va a identificarlo internamente, le recomendamos usar mt_rand(3,20000)
    );

    $response = post($qrlist, $array, $token);

?>

prueba con eso a ver que te sucede y me comentas cualquier cosa!! =)

aaferna commented 5 years ago

Hola ! Pudiste probar esto?

jflg1412 commented 5 years ago

Hola Agustín si lo probé y me funcionó, pero solo me dejó crear una sola caja. Ayer intenté muchas veces y no me dejo crear otra. De igual manera entre hoy y mañana voy a probar el tema del envío de precio por qr. Gracias.

aaferna commented 5 years ago

Entiendo @jflg1412 , te pido que me mandes el array del listado de QR`s y tu código con el que lo creasen un TXT por cada uno si es que podes a aaferna@cheprogramadora.com, ahora tengo el servidor andando así que te puedo recibir bien por ahi.

Déjame que revise el código tal cual estas usándolo y te doy una pista por aca dale?

jflg1412 commented 5 years ago

Dale gracias dame hasta mañana y te lo pasa Gracias de verdad

El lun., 16 de septiembre de 2019 17:12, Agustin Fernandez < notifications@github.com> escribió:

Entiendo @jflg1412 https://github.com/jflg1412 , te pido que me mandes el array del listado de QR`s y tu código con el que lo creasen un TXT por cada uno si es que podes a aaferna@cheprogramadora.com, ahora tengo el servidor andando así que te puedo recibir bien por ahi.

Déjame que revise el código tal cual estas usándolo y te doy una pista por aca dale?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gusgeek/SAPIDK-MercadoPago/issues/2?email_source=notifications&email_token=AB2LV22XLHHBX5XUHHW5OXTQJ7SENA5CNFSM4IWX2YS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62L4ZY#issuecomment-531938919, or mute the thread https://github.com/notifications/unsubscribe-auth/AB2LV22RTZFQSCM67BKCJVDQJ7SENANCNFSM4IWX2YSQ .

jflg1412 commented 5 years ago

Agustín mira te voy a pasar las cuentas de ejemplo que estoy usando en mercado pago.Te paso los archivos como los tengo yo. Pero igualmente son los que vos tenes de ejemplo en GitHub.

te adjunto todo. Gracias

El lun., 16 sept. 2019 a las 17:12, Agustin Fernandez (< notifications@github.com>) escribió:

Entiendo @jflg1412 https://github.com/jflg1412 , te pido que me mandes el array del listado de QR`s y tu código con el que lo creasen un TXT por cada uno si es que podes a aaferna@cheprogramadora.com, ahora tengo el servidor andando así que te puedo recibir bien por ahi.

Déjame que revise el código tal cual estas usándolo y te doy una pista por aca dale?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gusgeek/SAPIDK-MercadoPago/issues/2?email_source=notifications&email_token=AB2LV22XLHHBX5XUHHW5OXTQJ7SENA5CNFSM4IWX2YS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62L4ZY#issuecomment-531938919, or mute the thread https://github.com/notifications/unsubscribe-auth/AB2LV22RTZFQSCM67BKCJVDQJ7SENANCNFSM4IWX2YSQ .

aaferna commented 5 years ago

@jflg1412 Te ayudo sin problemas, si me enviaste no lo recibí. Pero si lo vas a hacer, por favor solo mándame los códigos y el Array que recibís en TXT para poder analizarlo.

aaferna commented 5 years ago

Jose ahi pude ver lo que me mandaste, pero me mandaste el SDK completo con pocas modificaciones y con tus credenciales.

Voy a ver si me hago explicar asi:

Necesitaría que me envies el Array que estas enviando en la función y en su efecto la respuesta que te da.

jflg1412 commented 5 years ago

Hola Agustin, cuando ejecuto lo que te pase en el correo anterior, yo coloco Creación de QRs

Caja 4 false 11456 (este numero es automático) después de ejecutar esto no me muestra nada, ni tampoco me crea ninguna caja. [image: lo colocado en Index.png]

Si realizo la consulta de QRs. me muestra el array que te adjunto. (array_respuesta de la cajas)

Todavía no lo agrego a la parte de mi sistema porque no logro hacer que me funcione.

Yo solo quiero poder enviarle el precio a la caja, que el cliente pueda escanerar el QR impreso en la caja y le muestra lo que estoy a punto de facturarle y si el cliente realiza el pago mi sistema emititria el ticket.

Gracias por darme una mano.

El mié., 18 sept. 2019 a las 15:45, Agustin Fernandez (< notifications@github.com>) escribió:

Jose ahi pude ver lo que me mandaste, pero me mandaste el SDK completo con pocas modificaciones y con tus credenciales.

Voy a ver si me hago explicar asi:

Necesitaría que me envies el Array que estas enviando en la función y en su efecto la respuesta que te da.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gusgeek/SAPIDK-MercadoPago/issues/2?email_source=notifications&email_token=AB2LV2YHLHPT46OHEB6WTOLQKJZOBA5CNFSM4IWX2YS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7BB7QY#issuecomment-532815811, or mute the thread https://github.com/notifications/unsubscribe-auth/AB2LV26AGWMDQXG2H3CFRX3QKJZOBANCNFSM4IWX2YSQ .

Array ( [paging] => Array ( [total] => 3 [offset] => 0 [limit] => 30 )

[results] => Array
    (
        [0] => Array
            (
                [user_id] => 467993406
                [name] => Caja 1
                [store_id] => 30177345
                [id] => 2981833
                [qr] => Array
                    (
                        [image] => https://www.mercadopago.com/instore/merchant/qr/2981833/0746dcb196674cf290d6922db12623e8b54c14a2618a4e55b0c30c5bc81be407.png
                        [template_document] => https://www.mercadopago.com/instore/merchant/qr/2981833/template_0746dcb196674cf290d6922db12623e8b54c14a2618a4e55b0c30c5bc81be407.pdf
                        [template_image] => https://www.mercadopago.com/instore/merchant/qr/2981833/template_0746dcb196674cf290d6922db12623e8b54c14a2618a4e55b0c30c5bc81be407.png
                    )

                [date_created] => 2019-09-14T07:43:45.000-04:00
                [date_last_updated] => 2019-09-14T07:43:45.000-04:00
            )

        [1] => Array
            (
                [user_id] => 467993406
                [name] => Caja 2
                [fixed_amount] => 
                [store_id] => 30177345
                [external_id] => default
                [id] => 2990486
                [qr] => Array
                    (
                        [image] => https://www.mercadopago.com/instore/merchant/qr/2990486/319865f4718744b697f679da7b59d7f85488300f22e643d8980ba27fb727d1d1.png
                        [template_document] => https://www.mercadopago.com/instore/merchant/qr/2990486/template_319865f4718744b697f679da7b59d7f85488300f22e643d8980ba27fb727d1d1.pdf
                        [template_image] => https://www.mercadopago.com/instore/merchant/qr/2990486/template_319865f4718744b697f679da7b59d7f85488300f22e643d8980ba27fb727d1d1.png
                    )

                [date_created] => 2019-09-15T06:04:42.000-04:00
                [date_last_updated] => 2019-09-15T06:06:25.000-04:00
            )

        [2] => Array
            (
                [user_id] => 467993406
                [name] => Caja 3
                [store_id] => 30177345
                [id] => 2990711
                [qr] => Array
                    (
                        [image] => https://www.mercadopago.com/instore/merchant/qr/2990711/9282bb9dd6464406b0b75bfa3bf1fd57e8bf5dabfb434ebe9b490a3e52d0d0f0.png
                        [template_document] => https://www.mercadopago.com/instore/merchant/qr/2990711/template_9282bb9dd6464406b0b75bfa3bf1fd57e8bf5dabfb434ebe9b490a3e52d0d0f0.pdf
                        [template_image] => https://www.mercadopago.com/instore/merchant/qr/2990711/template_9282bb9dd6464406b0b75bfa3bf1fd57e8bf5dabfb434ebe9b490a3e52d0d0f0.png
                    )

                [date_created] => 2019-09-15T08:17:21.000-04:00
                [date_last_updated] => 2019-09-15T08:17:21.000-04:00
            )

    )

) <!DOCTYPE html>

SAPI-DK MP $_REQUEST['nombreqr'], 'fixed_amount' => false, // puede elejir true para que sea modificable precio o false si no 'external_id' => $_REQUEST['external_id'], ); } if ($_GET['action'] == "qractiva") { $external_id = $_GET['external_id']; $dataArray = array ( //'external_reference' => "4099", //'notification_url' => "../IPN Manager/ipnManager.php", 'items' => array ( 0 => array ( 'title' => 'Pago Presencial NVI: ', 'currency_id' => 'ARS', 'unit_price' => $_GET['unit_price'], // NO STRING 'quantity' => 1, ), ), ); } if ($_GET['action'] == "pointactive") { $int = (int)$_GET['amount']; // convierte valor string a numeric $dataArray = array( 'device_name' => $_GET['device_name'], 'amount' => $int, 'description' => 'Pago Presencial NVI', 'cc_type' => 'debit_card' ); } if ($_GET['action'] == "pointdelete") { $device = $_GET['device_name']; } if (isset($dataArray)) { $_REQUEST['array'] = $dataArray; } if ($_GET['action'] == "hlink") { $datetime = new DateTime(date("Y-m-d H:i:s.uP")); $dataArray = array ( 'binary_mode' => true, // vence a loas 30 minutos 'expires' => true, 'expiration_date_from' => date("Y-m-d\TH:i:s") . substr((string)microtime(), 1, 4).date('P'), 'expiration_date_to' => date("Y-m-d\TH:i:s", +strtotime("+30 minutes")) . substr((string)microtime(), 1, 4).date('P'), 'items' => array ( 0 => array ( 'id' => 202030, 'title' => 30, 'category_id' => "services", 'quantity' => 1, 'currency_id' => "ARS", 'unit_price' => 12 ), ), 'payer' => array ( 'name' => "test ", 'surname' => 'user', 'email' => "test@user.com" ), ); echo "
";
            print_r($dataArray);
            $_REQUEST['array'] = $dataArray;

        }

        if ($_GET['action'] == "nplan") {

            $dataArray = array (

                'reason' => 'reason',
                'back_url' => 'https://www.tiendacomputacion.com/',
                'external_reference' => "reference",
                'auto_recurring' => array(
                    'frequency' => 30,
                    'frequency_type' => "days",
                    'transaction_amount' => 10,
                    'currency_id' => "ARS",
                    'debit_date' => 1,

                    ),

            );

            $_REQUEST['array'] = $dataArray;

        }

        include ("../../library/core.php");
        include ("./actions.php");

        if (isset($response)) {

            echo '

Respuesta en json

'; echo "
";
            print_r($response);
            echo "
"; echo ''; } } else { ?>

Es necesario poner el token en credentials.php

Consutla de IPN


Consulta de QR's


Creacion de QR's


Post a QR's


Obtener Point's


Post a Point's


Cancelar post de point


Crear hLINK


Crear nuevo plan de suscripcion


aaferna commented 5 years ago

Bien, ya te agarre por donde estamos.

Fijate el caso de " Caja 2"

Vos lo creaste desde el Script. Recorda que solo los que creas por el Script pueden ser usados para activarlo y cobrar con integración.

                    [user_id] => 467993406
                    [name] => Caja 2
                    [fixed_amount] =>
                    [store_id] => 30177345
                    [external_id] => default
                    [id] => 2990486

external_id : default es el id que identificaria la caja para poder activar el pago.

osa que si vos activar la funccion

$external_id = $_GET['external_id'];

    $dataArray = array (
      // 'external_reference' => "REFERENCIA PARA IDENFICAR LA VENTA CUANDO IPN",
      // 'notification_url' => "URL A IPN",
      'items' =>
        array (
            0 =>
            array (
              'title' => 'Pago Presencial NVI: ',
              'currency_id' => 'ARS',
              'unit_price' => $_GET['unit_price'], // NO STRING
              'quantity' => 1,
            ),
        ),
    );

$url = $qrPost.$user_id."/".$external_id;
$response = post($url, $_REQUEST['array'], $token);

indicandole que el external _id es "default" como vos lo indicastes, el QR se activara.

Caja 3, no tiene external_id.

Porfavor, volve a leer la documentacion de QR: https://github.com/gusgeek/SAPIDK-MercadoPago/wiki/QR

decime si no me hago entender.

jflg1412 commented 5 years ago

Ok gracias lo pruebo recien mañana Te aviso

El jue., 19 de septiembre de 2019 16:46, Agustin Fernandez < notifications@github.com> escribió:

Bien, ya te agarre por donde estamos.

Fijate el caso de " Caja 2"

Vos lo creaste desde el Script. Recorda que solo los que creas por el Script pueden ser usados para activarlo y cobrar con integración.

                [user_id] => 467993406

                [name] => Caja 2

                [fixed_amount] =>

                [store_id] => 30177345

                [external_id] => default

                [id] => 2990486

external_id : default es el id que identificaria la caja para poder activar el pago.

osa que si vos activar la funccion

$external_id = $_GET['external_id'];

$dataArray = array (

// 'external_reference' => "REFERENCIA PARA IDENFICAR LA VENTA CUANDO IPN",

// 'notification_url' => "URL A IPN",

'items' =>

  array (

      0 =>

      array (

        'title' => 'Pago Presencial NVI: ',

        'currency_id' => 'ARS',

        'unit_price' => $_GET['unit_price'], // NO STRING

        'quantity' => 1,

      ),

  ),

);

$url = $qrPost.$user_id."/".$external_id;

$response = post($url, $_REQUEST['array'], $token);

indicandole que el external _id es "default" como vos lo indicastes, el QR se activara.

Caja 3, no tiene external_id.

Porfavor, volve a leer la documentacion de QR: https://github.com/gusgeek/SAPIDK-MercadoPago/wiki/QR

decime si no me hago entender.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gusgeek/SAPIDK-MercadoPago/issues/2?email_source=notifications&email_token=AB2LV23JNFEEWIAKECHH7XDQKPJJHA5CNFSM4IWX2YS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7ETROQ#issuecomment-533280954, or mute the thread https://github.com/notifications/unsubscribe-auth/AB2LV24XMPSB5TLNMBIIW4DQKPJJHANCNFSM4IWX2YSQ .

aaferna commented 5 years ago

Locura, pusiste probar lo que te comentaba ?

jflg1412 commented 5 years ago

Estoy llegando a casa y me pongo a probar Gracias

El sáb., 21 de septiembre de 2019 12:45, Agustin Fernandez < notifications@github.com> escribió:

Locura, pusiste probar lo que te comentaba ?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gusgeek/SAPIDK-MercadoPago/issues/2?email_source=notifications&email_token=AB2LV24ZKILZXQPML7PU5F3QKY6QHA5CNFSM4IWX2YS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7IUFZA#issuecomment-533807844, or mute the thread https://github.com/notifications/unsubscribe-auth/AB2LV23ZWCSJ4D3JB3KC25DQKY6QHANCNFSM4IWX2YSQ .

jflg1412 commented 5 years ago

Agustín gracias por ponerle toda la onda me siento mal porque no puedo lograr que me funcione una simple prueba, quizas que sea algo muy simple pero no logro dar en la tecla.

$referenciainterna = 'default'; $titulodelaventa = 'venta'; $preciodelaventa = 23;

// Valores que envio en URL

$user_id = "467993406"; $referenciadelqr = "Caja 2"; // external_id indicado cuando creaste el qr

// Array Data con la informacion requerida para la Venta echo $referenciainterna; $dataArray = array ( 'external_reference' => $referenciainterna, //'notification_url' => "ipnManager.php", 'items' => array ( 0 => array ( 'title' => $titulodelaventa, 'currency_id' => 'ARS', 'unit_price' => $preciodelaventa, 'quantity' => 1, ), ), );

// Funcion al QR

$url = $qrPost.$user_id."/".$referenciainterna; echo "

";
print_r($dataArray);
echo "
"; echo $url; $response = post($url, $dataArray, "TEST-8576004215058800-091509-3e478922c246696dbb9fe575de42be8c-467993406");

echo "

";
print_r($response);
echo "
";

Pruebo con ese codigo

y me muestra esto

default

Array ( [external_reference] => default [items] => Array ( [0] => Array ( [title] => venta [currency_id] => ARS [unit_price] => 23 [quantity] => 1 )

    )

)

https://api.mercadopago.com/mpmobile/instore/qr/467993406/default

El sáb., 21 sept. 2019 a las 12:45, Agustin Fernandez (< notifications@github.com>) escribió:

Locura, pusiste probar lo que te comentaba ?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gusgeek/SAPIDK-MercadoPago/issues/2?email_source=notifications&email_token=AB2LV24ZKILZXQPML7PU5F3QKY6QHA5CNFSM4IWX2YS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7IUFZA#issuecomment-533807844, or mute the thread https://github.com/notifications/unsubscribe-auth/AB2LV23ZWCSJ4D3JB3KC25DQKY6QHANCNFSM4IWX2YSQ .

aaferna commented 5 years ago

No te hagas drama, fuiste que subí buenos ejemplos (general 1.0) están más claros (los archivos) para que sea fácil la interpretación. Fíjate qué tal esos ejemplos y récords que lo mejor es probar con cuentas REALES no ficticias.

francoalejandrog commented 1 month ago

Buenas, llegué un par de años tarde, quería saber si se puede utilizar SAPIDK para asignar una preferencia a un QR... Consulté los QR disponibles, fué un éxito, no está tan deprecada la version. Screenshot_20241002_183844

Hago una preferencia, en $credentials identifico al QR y lo envío de la siguiente manera.... Screenshot_20241002_185942

El tema es que me está devolviendo invalid_invalid_caller_id, será el tema de la versión? Screenshot_20241002_190207

Por ahora lo resuelvo generando un link y al link lo convierto en QR, pero la idea es usar un QR fijo.

Saludos