Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pedidos en estado "Pendiente" después de procesarse el pago #49

Open
dtamajon opened this issue Jul 18, 2016 · 2 comments
Open

Pedidos en estado "Pendiente" después de procesarse el pago #49

dtamajon opened this issue Jul 18, 2016 · 2 comments

Comments

@dtamajon
Copy link

dtamajon commented Jul 18, 2016

Hola,

Abro un nuevo hilo, relacionado con el #33, ya que tengo el mismo error pero la solución descrita en ese hilo (ya resuelto) no aplica en mi caso.

En mi caso tengo una tienda multi-tienda, en la que hay un path por idioma: https://domain/es, https://domain/en, ...

Para depurar lo que está ocurriendo, he incluido en el archivo app/code/community/Devopensource/Redsys/controllers/IndexController.php, después de la línea 60, el siguiente código:
Mage::log($redsys, null, 'redsys.log', true);

Al realizar una operación de compra con Redsys, veo la siguiente información en el archivo redsys.log

[vars_pay] => Array
    (
        [DS_MERCHANT_AMOUNT] => 3000
        [DS_MERCHANT_ORDER] => 000556688
        [DS_MERCHANT_MERCHANTCODE] => 99999999
        [DS_MERCHANT_CURRENCY] => 978
        [DS_MERCHANT_TRANSACTIONTYPE] => 0
        [DS_MERCHANT_TERMINAL] => 1
        [DS_MERCHANT_MERCHANTURL] => https://domain/redsys/index/callback
        [DS_MERCHANT_URLOK] => https://domain/es/redsys/index/success
        [DS_MERCHANT_URLKO] => https://domain/es/redsys/index/cancel
        [Ds_Merchant_ConsumerLanguage] => 001
        [Ds_Merchant_ProductDescription] => MiProducto x 1
        [Ds_Merchant_Titular] => CompanyName
        [Ds_Merchant_MerchantName] => CompanyName
        [Ds_Merchant_PayMethods] => C
    )

El error está en el cálculo de DS_MERCHANT_MERCHANTURL, ya que no incluye la tienda, y la URL que genera devuelve un error 404. La URL correcta, en este caso, sería https://domain/es/redsys/index/callback

Tal y como se apunta en el hilo #33, parece un error en la función getUrlStore (como apunta zarapico123):

   public function getUrlStore(){
        $url = Mage::getStoreConfig('payment/redsys/callback', Mage::app()->getStore());

        if ($url==0) {
            return Mage::getStoreConfig('web/unsecure/base_url', Mage::app()->getStore())."redsys/index/callback";
        }elseif($url==1){
            return Mage::getStoreConfig('web/secure/base_url', Mage::app()->getStore())."redsys/index/callback";
        }else{
            return Mage::getStoreConfig('payment/redsys/callbackurl', Mage::app()->getStore());
        }
    }

Que al cambiarla por el siguiente código (tal y como indica zarapico123) genera correctamente la URL de callback en el caso de una multi-tienda:

    public function getUrlStore(){
        $url = Mage::getStoreConfig('payment/redsys/callback', Mage::app()->getStore());

        if ($url==0) {
            return Mage::getBaseUrl() . 'redsys/index/callback';
        }elseif($url==1){
            return Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK, true) . 'redsys/index/callback';
        }else{
            return Mage::getStoreConfig('payment/redsys/callbackurl', Mage::app()->getStore());
        }
    }

No he podido probar este código en una instalación con una única tienda, así que no sé qué efecto tiene en ese caso.

@antoniolite
Copy link

Yo he tenido este problema en una tienda de Magento con varias vistas e idiomas. Desde que instalé este módulo, no funciona el callback de Redsys y los estados de los pedidos no se actualizan.

Es más, desde que instalé este módulo, ¡algunos pedidos se registran sin el email!

He modificado las 2 líneas del fichero Data.php que se comenta, a ver si con esto se soluciona.

En cuanto registre algún pedido.... lo cuento.

@luiselkano
Copy link

Hola,

Tenía el problema del callback con multistore, y al cambiar la función por la aquí propuesta, ha comenzado a funcionar correctamente.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants