Categoría: Desarrollo Web

  • Quita el botón “Empezar” en tu Messenger Bot

    Quita el botón “Empezar” en tu Messenger Bot

    ¿No te gustó el botón “Empezar” en el Messenger Bot de tu página? Al parecer a muchas personas no les agradó y mostraron su inconformidad en este post. Desconozco el motivo, pero supongo que el “botón” en vez de ayudar, estorba.

    Tener el botón de “Empezar” es un proceso más para el usuario para ponerse en contacto contigo y tu página. ¿Es mucho mejor que el usuario te contacte sin hacer click en un botón, no?

    La petición

    Antes de realizar la petición, debes tener tu page_access_token, una cadena de caracteres que sirve para autenticar nuestra petición.

    Para eliminar el botón “Empezar” de tu Messenger, solo necesitas mandar una petición DELETE a los servidores de Facebook. Será algo similar a lo que hicimos en el post: Agrega el botón “Empezar” en tu Messenger Bot.

    Tenemos que enviar una petición al siguiente enlace (<PAGE_ACCESS_TOKEN> será sustituido por tu page access token generado por Facebook):

    https://graph.facebook.com/v10.0/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>

    De ahi, dentro de nuestra terminal (Git Bash, iTerm, etc) debemos ejecutar un comando curl:

    curl --request DELETE \
       --url 'https://graph.facebook.com/v10.0/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>' \
       --header 'Content-Type: application/json' \
       --data '{ "fields": [ "get_started" ] }'

    De la petición anterior, nota que dentro del parámetro fields existe la palabra get_started. Significa que lo que vas a eliminar de tu página de Facebook será el botón de “Empezar”.

    Existen más fields que puedes eliminar de tu página de Facebook como greeting, persistent_menu, entre otros.

    Resultados del Messenger Bot

    Después de hacer la petición, y si todo sale bien, deberás obtener la siguiente respuesta:

    { "result": "success" }

    Ahora, puedes ir al Messenger de tu página y el botón “Empezar” se habrá ido:

    Messenger Bot de página con botón "Empezar".
    Messenger Bot de página con botón “Empezar”.
    Messenger Bot de página sin botón “Empezar”.

    Ya no deberías ver el botón “Empezar”.

  • Excluir métodos y tipos de pagos en MercadoPago

    Excluir métodos y tipos de pagos en MercadoPago

    Dentro de tu carrito de compras tienes integrado preferencias de MercadoPago para el manejo de todas las compras de tus usuarios con cualquier método o tipo de pago.

    Sin embargo, tú o tu jefe, deciden agregar un nuevo requerimiento al carrito de compras. Ahora necesitan excluir los métodos o tipos de pagos de todas las nuevas preferencias de MercadoPago.

    Digamos que el requerimiento dice que los pagos en efectivo con OXXO y las transferencias SPEI sean excluidos de las nuevas preferencias de MercadoPago.

    ¿Es posible? Claro que sí.

    En este tutorial te mostraré cómo excluir los métodos y tipos de pagos de las preferencias de MercadoPago.

    Antes de empezar necesitamos claves de integración

    Para seguir con las siguientes secciones, necesitas una Public Key y un Access Token, los cuales consigues creando una integración en MercadoPago.

    Aquí hay una guía de MercadoPago que te enseña a crear una integración.

    Obtener los métodos de pago de MercadoPago

    Para excluir uno o más métodos de pago en MercadoPago primero debemos conocer los ids de esos métodos de pago.

    Para obtener esos ids debemos hacer una petición GET al siguiente enlace:

    https://api.mercadopago.com/v1/payment_methods?public_key=[PUBLIC_KEY]

    Si te fijas bien, la URL acepta el parámetro public_key. Sirve para autenticar la petición. La public_key lo obtienes en tu panel de desarrollador de MercadoPago.

    Cuando ejecutas la petición debes recibir un JSON de respuesta con múltiples valores.

    [
        {
            "id": "debvisa",
            "name": "Visa Débito",
            "payment_type_id": "debit_card",
            "status": "active",
            "secure_thumbnail": "https://www.mercadopago.com/org-img/MP3/API/logos/debvisa.gif",
            "thumbnail": "http://img.mlstatic.com/org-img/MP3/API/logos/debvisa.gif",
            "deferred_capture": "unsupported",
            "settings": [
                {
                    "card_number": {
                        "validation": "standard",
                        "length": 16
                    },
                    "bin": {
                        "pattern": "^(400064|400443|400819|400889|401531|401863|401906|402708|402766|403130|404313|404597|405063|405689|405930|406285|407848|408340|408341|408343|408400|409851|410128|410177|410277|410881|410894|411117|411608|411673|411773|411775|411808|412294|412408|413098|415231|416916|418914|418928|419334|419335|419821|419822|419823|420767|420807|420831|420839|421003|421316|422299|422671|425983|425984|426188|426808|427088|428464|430967|432049|433126|433194|433454|434256|434257|434258|434769|434798|435769|436618|438099|441312|441313|441545|441549|442177|442192|442742|442756|442788|443042|443045|444888|444889|445016|445017|445319|446115|446116|446117|446118|446878|446985|446986|449187|449700|451312|455509|455510|455511|455533|455537|457249|457476|459497|460068|460700|460766|461046|465345|465495|465496|465497|465498|465762|465828|465829|466188|466397|467010|467596|469495|469693|470132|470502|471239|471724|473622|473702|473703|473993|474174|474176|474472|474477|474478|474646|476588|476840|476890|477177|477261|477961|478200|479303|480062|480076|480078|480922|481516|481517|481582|481588|481689|482473|483030|483104|483112|483314|483316|485043|485044|486742|486796|490070|490256|490950|491089|491282|491365|491566|491567|491580|492143|498587|498590|41891410|41891431|41892810|46227850|47658885|49156630|49156634|49156644|49156650|49156651|49156652|49156653|49156654|49156655|49156656|49156657|49156658|49156659|49156660|49156661|49156662|49156663|49156664|49156665|49156666|49156667|49156668|49156669|49156670|49156671|49156672|49156673|49156674|49156675|49156676|49156677|49156678|49156679|49156680|49156681|49156682|49156683|49156684|49156685|49156686|49156687|49156688|49156689|49156690|49156691|49156692|49156693|49156694|49156695|49156696|49156697|49156698|49156699)",
                        "installments_pattern": "",
                        "exclusion_pattern": "^(49156649|49156648|49156647|49156646|49156645|49156644|49156643|49156642|49156641|49156640|49156639|49156638|49156637|49156636|49156635|49156634|49156633|49156632|49156631|49156630|49156629|49156628|49156627|49156626|49156625|49156624|49156623|49156622|49156621|49156620|49156619|49156618|49156617|49156616|49156615|49156614|49156613|49156612|49156611|49156610|49156609|49156608|49156607|49156606|49156605|49156604|49156603|49156602|49156601|49156600)"
                    },
                    "security_code": {
                        "length": 3,
                        "card_location": "back",
                        "mode": "mandatory"
                    }
                }
            ],
            "additional_info_needed": [
                "cardholder_name"
            ],
            "min_allowed_amount": 5,
            "max_allowed_amount": 300000,
            "accreditation_time": 2880,
            "financial_institutions": [],
            "processing_modes": [
                "aggregator"
            ]
        }
    ]

    Con el JSON anterior encontrarás información de los métodos de pago. Para México se muestran los siguientes:

    • Visa Débito – debvisa
    • Mastercard Débito – debmaster
    • American Express – amex
    • Visa – visa
    • Mastercard – master
    • Citibanamex – banamex
    • OXXO – oxxo
    • BBVA Bancomer – bancomer

    Obtener los tipos de pago de MercadoPago

    Los tipos de pago sirven para identificar si queremos hacer cobros con tarjeta de débito/crédito, efectivo, tarjeta de prepago, entre otros.

    Estos tipos de pago son encontrados dentro de la misma respuesta JSON que obtuviste en la petición anterior. Específicamente, la propiedad payment_type_id.

    Estos son los tipos de pago y sus ids encontrados en la petición:

    • ATM – atm
    • Tarjeta de crédito – credit_card
    • Tarjeta de débito – debit_card
    • Ticket – ticket
    • Transferencia bancaria – bank_transfer

    Excluir métodos o tipos de pago de una preferencia de MercadoPago

    La siguiente sección solo funciona con preferencias de MercadoPago.

    Para crear una preferencia de MercadoPago usando su API, debemos seguir la documentación.

    La petición que haremos será de tipo POST al siguiente enlace:

    https://api.mercadopago.com/checkout/preferences

    Debemos estar autenticados con nuestro Bearer Token pasándole un header de autenticación:

    Y debemos pasar datos obligatorios para crear la preferencia.

    Dentro de la documentación, busca la propiedad payment_methods, la cual es una propiedad para excluir métodos o tipos de pago y también para poner un método de pago por default.

    La propiedad payment_methods acepta las propiedades excluded_payment_methods y excluded_payment_types. Estos son arreglos y dentro de estos irán objetos con los ids de los métodos y tipos de pago, respectivamente.

    Si estamos creando una preferencia y estamos excluyendo los métodos de pago oxxo y bancomer y los tipos de pago bank_transfer. El JSON a pasar a la petición debe verse de esta forma:

    {
      "items": [
        {
          "title": "Dummy Product",
          "description": "Dummy product description",
          "category_id": "car_electronics",
          "quantity": 1,
          "unit_price": 10
        }
      ],
      "payment_methods": {
        "excluded_payment_methods": [
          {
            "id": "oxxo"
          },
          {
            "id": "bancomer"
          }
        ],
        "excluded_payment_types": [
          {
            "id": "bank_transfer"
          }
        ]
      }
    }

    Recuerda que los ids de los métodos y tipos de pago se consiguieron anteriormente.

    El resultado del POST anterior será un JSON y te mostrará la información de la preferencia.

    Métodos y tipos de pago excluidos de la preferencia de MercadoPago

    Una vez creada la preferencia, la respuesta JSON tendrá las propiedades init_point y sandbox_init_point. Estos son los enlaces para enviar a tus clientes y puedan comprar.

    La propiedad sandbox_init_point es para pruebas. Entonces, si vamos a este enlace:

    https://sandbox.mercadopago.com.mx/checkout/v1/redirect?pref_id=703458213-0e171ffb-125f-4d27-9611-ae36e57e85cd

    Primero verás que no sale la opción “Transferencia SPEI”. Y si seleccionas “Efectivo”, en la siguiente ventana la opción para pagar con OXXO no estará.

    Y así es como excluyes métodos y tipos de pago en MercadoPago.

    Si tienes problemas o dudas, no dudes en comentar.

  • Agrega el botón “Empezar” en tu Messenger Bot

    Agrega el botón “Empezar” en tu Messenger Bot

    Hace un año empecé a leer sobre cómo desarrollar un Messenger Bot de Facebook; claro, sin ver nada de inteligencia artificial y esas cosas, algo sencillo.

    (más…)
  • ¿Cómo actualizar PHP en macOS Sierra?

    ¿Cómo actualizar PHP en macOS Sierra?

    La librería usada en este post ya no recibe actualizaciones y recomiendan utilizar Homebrew para macOS donde podrás usar PHP hasta su versión más reciente.

    Estaba programando unos scripts que requerían PHP 7, y trataba de ejecutarlos desde la terminal; por desgracia, me daban error y tardé como 3 o 5 minutos en saber que mi macOS Sierra, venía con PHP 5.6 por default. Por suerte, hay plugins que te permiten actualizar PHP en macOS Sierra de una forma muy fácil.

    Actualizar PHP en macOS Sierra

    Existe una página web llamada php-osx.liip.ch que nos brinda un paquete que contiene PHP 7 (u otras versiones), y que podremos instalarlo desde un sólo comando en nuestra Mac (OS X / macOS 10.6 – 10.12).

    Paso I.
    curl -s https://php-osx.liip.ch/install.sh | bash -s 7.3

    Copia el comando anterior, y pégalo en tu terminal; pero antes, ¿notas que dice 7.3? Ahi tú puedes borrar el 7.3 y ponerle una de las siguientes versiones: 7.1, 7.0, 5.6, 5.5, 5.4 ó 5.3.

    Después de que hayas escogido la versión a instalar, ejecutas el comando y empezará a instalar la versión de PHP que seleccionaste, no sin antes pedirte la contraseña para continuar.

    Paso II.

    Una vez instalado, puedes verificar la versión instalada desde tu terminal con el siguiente comando:

    php --version

    Podría suceder de que tu terminal muestre que tienes la versión 5.6.30, la que viene por defecto:

    PHP 5.6.30 (cli) (built: Feb 7 2017 16:18:37)
    Copyright (c) 1997-2016 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

    Si esto ocurre, sólo tienes que ejecutar este comando:

    export PATH=/usr/local/php5/bin:$PATH

    Revisa de nuevo la versión, y ahora tiene que salir correctamente:

    PHP 7.3.0 (cli) (built: May 6 2017 10:02:00) ( NTS )
    Copyright (c) 1997-2017 The PHP Group
    Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

    Resultados

    Lo anterior debería funcionar, al menos funcionó para mí. La verdad es que solamente ocupo PHP desde la terminal para ejecutar scripts básicos, probar funciones, entre otros; de ahi en fuera utilizo un entorno de desarrollo llamado Local by Flywheel.

    Espero que no tengas errores al tratar de instalar una nueva versión de PHP, pero si la tienes, no dudes en preguntar en los comentarios y con gusto te ayudaré a solucionarlo. 🙂

    Changelog

    09/02/2021. Se cambió la versión 7.1, usada en el post, a la última versión aceptada por la librería, 7.3. Y se agregó una advertencia al principio para usar Homebrew en vez de la librería presentada en este post.