Jump to content

Modulo Payment - especificar method para el action (url pasarela bancaria)


Recommended Posts

Buenos días,

Estoy desarrollando un módulo para implementar una pasarela de pago y me he encontrado con el siguiente problema.

Haciendo uso de lo que indica en la documentación para desarrollar módulos de tipo payment he implementado el método getExternalPaymentOption 

    public function getExternalPaymentOption()
    {
        $externalOption = new \PrestaShop\PrestaShop\Core\Payment\PaymentOption();
        $externalOption->setCallToActionText($this->l('Pay external'))
                       ->setAction("<<URL_PASARELA BANCARIA>>")
                       ->setAdditionalInformation($this->context->smarty->fetch('module:paymentexample/views/templates/front/payment_infos.tpl'))
                       ->setLogo(Media::getMediaPath(_PS_MODULE_DIR_.$this->name.'/payment.jpg'));

        return $externalOption;
    }

Hasta ahí todo bien, el problema es que la url de la pasarela bancaria, exige que el method sea GET y por defecto prestashop realiza un POST.

Por más que miro la clase PaymentOptions, no veo manera de indicar el method por ninguna parte y eso que en un comentario indica esto:

    /**
     * An associative array of additional parameters to use when sending
     * the request to $action,
     * e.g. if  $action is "http://payment-provider.example.com/process",
     *          $method is "GET"
     *      and $inputs is ['customerName' => 'bob']
     *      then the request will be made to:
     *          "http://payment-provider.example.com/process?customerName=bob".
     *
     * @var array
     */
    private $inputs;

¿Alguien puede ayudarme con esto? estoy atascado

prestashop: 1.7.8.7

 

Gracias de antemano!!

Link to comment
Share on other sites

Hola.

Lo que yo veo es que en https://devdocs.prestashop.com/1.7/modules/payment/:
 

External

: It’s a simple URL to call, then the payment is directly processed on the Payment Service Provider’s website (e.g.: PayPal, Paybox).

The minimal variables to set are `$callToActionText` and `$action`. The form will be sent by POST and you can add hidden inputs such as a token, by using `setInput()` method. You can check the `getExternalPaymentOption()` method of *[paymentexample](https://github.com/PrestaShop/paymentexample)* to have an example.

Es decir, como "external" envia por POST

Presiento que en versiones anteriores existia la posibilidad de cambiar el Method porque lo citan en la función convertLegacyOption al establecer los $defaults

Podrias probar a hacer un override de esa clase añadiendo de nuevo el $method a ver si el core lo sigue usando. O poner trazas en el código hasta encontrar dónde hace la llamada http para ver si puedes cambiar el method, pero eso implica tocar código de la release y que te de problemas cada vez que hagas un upgrade.

Siento no ser de ayuda.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...