Soporte » Plugins y Hacks » WooCommerce » Problema con pasarela de pagos personalizada y tokenización

  • Buenos días compañeros desarrolladores, muchas gracias de antemano por su apoyo.

    Estoy tratando de extender la funcionalidad de una pasarela personalizada de pagos pero estoy teniendo un problema que imagino es super sencillo, pero he tratado de solucionar por toda la tarde sin suerte.

    Un poco de contexto:

    He extendido la clase WC_Payment_Gateway_CC para una pasarela de pago personalizada y está funcionando perfectamente hasta el momento. Dentro de la clase está ésta linea:

    $this->supports = array( 'default_credit_card_form');

    Dentro de la clase, para obtener la información del formulario de tarjetas de crédito, utilizo lo siguiente:

    $_POST['{payment method id}-card-number'];
    $_POST['{payment method id}-card-expiry'];
     $_POST['{payment method id}-card-cvc'];

    Ahora quiero extender aún más la clase para soportar ‘tokenization’ así que lo primero que hice(y único que he lograddo hacer) es cambiar la línea de support por ésto:

    $this->supports = array( 'default_credit_card_form', 'tokenization' );

    Luego de cambiar esa línea, ahora la información del forumario de tarjeta de crédito ya no están en la variable $_POST, por lo que el plugin dejó de funcionar.

    Ahora lo que obtengo de la variable $_POST es lo siguiente:
    $[POST]:{"payment_method":"{payment method id}","wc-{payment method id}-payment-token":"new","woocommerce_pay":"1","_wpnonce":"d1d883779d","_wp_http_referer":"\/checkout\/order-pay\/77\/?pay_for_order=true&key=wc_order_5ae638306f334"}

    Alguno de ustedes podría apoyarme indicandome como obtengo los datos de tarjeta de crédito cuando ‘tokenization’ está soportado?

    Muchas gracias nuevamente por su ayuda. He pasado varias horas leyendo documentación y otros foros, pero no tengo idea de que más intentar.

Viendo 1 respuesta (de un total de 1)
  • Iniciador del debate Edwin Xico (XicoOfficial)

    (@xicoofficial)

    Una actualización en caso de que alguién se tope con algo similar.

    Luego de ver detenidamente el código html del formulario generado por ‘default_credit_card_form’ me dí cuenta de que el código generado cambió luego de agregar ‘tokenization’ al array de support.

    Cuando agregué ‘tokenization’ todos los campos de entrada son generados sin el atributo ‘name’. Éste es un ejemplo de a lo que me refiero:

    Antes de añadir ‘tokenization’:
    <input id="wowp_pcwpg_pagalocard-card-number" class="input-text wc-credit-card-form-card-number" inputmode="numeric" autocomplete="cc-number" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" placeholder="•••• •••• •••• ••••" name="wowp_pcwpg_pagalocard-card-number">

    Luego de añadir ‘tokenization’:
    <input id="wowp_pcwpg_pagalocard-card-number" class="input-text wc-credit-card-form-card-number" inputmode="numeric" autocomplete="cc-number" autocorrect="no" autocapitalize="no" spellcheck="no" type="tel" placeholder="•••• •••• •••• ••••">

    Pueden ver cómo al final del elemento ya no tiene el atributo ‘name’

    Entonces al final lo que hice fue utilizar el filtro 'woocommerce_credit_card_form_fields' para generar los forumlarios y manualmente agregarle a cada elemento el atributo ‘name’.

    Luego de ese cambio todo funcionó muy bien, sin embargo aún no se si eso es algo que usualmente hace ‘tokenization’ y cual es la razón detrás de ello, o si estoy haciendo algo mal.

    Así que agradecería mucho cualquier idea o información al respecto.

Viendo 1 respuesta (de un total de 1)
  • El debate ‘Problema con pasarela de pagos personalizada y tokenización’ está cerrado a nuevas respuestas.