MarcoDev2022 Posted August 5, 2022 Share Posted August 5, 2022 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 More sharing options...
Manuel_GT Posted August 6, 2022 Share Posted August 6, 2022 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 More sharing options...
MarcoDev2022 Posted August 10, 2022 Author Share Posted August 10, 2022 No estaba entendiendo bien el concepto. AL final he hecho uso del método validation.php para hacer la validación del pago y la redirección. Hice caso de este hilo en stackoverflow: https://es.stackoverflow.com/questions/550229/especificar-method-para-el-action-url-pasarela-bancaria-en-un-modulo-payment Un saludo y gracias Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now