Jump to content

Problème dans duplication du module Virement bancaire ("bankwire")


Recommended Posts

Bonjour,
Je rencontre un problème dans la duplication d’un module de Prestashop.
Version de Prestashop : 1.6.1.3

J’ai dupliqué le module Virement bancaire (bankwire) pour l’adapter aux besoins de ma cliente qui voulait un module de paiement par téléphone.

Je l’ai dupliqué et renommé « bankwirebis ».
J’ai renommé le fichier bankwire.php en bankwirebis.php
J’ai ouvert les fichiers du module et j’ai remplacé « bankwire » par « bankwirebis ».
Il y a quelque chose que je n’ai pas bien fait, car je tombe sur un os :
- 1re page où apparaît le module : ok
- 2e page du module (page infos) : ok
mais quand je clique dans cette 2e page sur « Je confirme ma commande », je tombe sur une page 500 dont l’URL est :
/module/bankwirebis/validation

alors qu’elle devrait être du genre :
index.php?controller=order-confirmation?id_cart=xxx&id_module=xx&id_order=xxx&key=xxxxxx

Je me suis alors demandée si j’avais bien fait de remplacer bankwire par bankwirebis partout. Je suis revenue sur les fichiers et j’ai rétabli « bankwire ». Mais alors je n’arrive plus à passer à la page 2 (page infos).

Je suis donc revenue en arrière.
La page infos correspond au fichier payment_execution.tpl
Le controller qui donne l’URL correcte en cliquant sur le bouton de confirmation est dans le fichier controllers / front / validation.php

Je le mets ici.
 

Quote

 

<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2016 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

/**
 * @since 1.5.0
 */
class BankwirebisValidationModuleFrontController extends ModuleFrontController
{
    /**
     * @see FrontController::postProcess()
     */
    public function postProcess()
    {
        $cart = $this->context->cart;
        if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->module->active)
            Tools::redirect('index.php?controller=order&step=1');

        // Check that this payment option is still available in case the customer changed his address just before the end of the checkout process
        $authorized = false;
        foreach (Module::getPaymentModules() as $module)
            if ($module['name'] == 'bankwirebis')
            {
                $authorized = true;
                break;
            }
        if (!$authorized)
            die($this->module->l('This payment method is not available.', 'validation'));

        $customer = new Customer($cart->id_customer);
        if (!Validate::isLoadedObject($customer))
            Tools::redirect('index.php?controller=order&step=1');

        $currency = $this->context->currency;
        $total = (float)$cart->getOrderTotal(true, Cart::BOTH);
        $mailVars = array(
            '{bankwirebis_owner}' => Configuration::get('BANK_WIREBIS_OWNER'),
            '{bankwirebis_details}' => nl2br(Configuration::get('BANK_WIREBIS_DETAILS')),
            '{bankwirebis_address}' => nl2br(Configuration::get('BANK_WIREBIS_ADDRESS'))
        );

        $this->module->validateOrder($cart->id, Configuration::get('PS_OS_BANKWIREBIS'), $total, $this->module->displayName, NULL, $mailVars, (int)$currency->id, false, $customer->secure_key);
        Tools::redirect('index.php?controller=order-confirmation&id_cart='.$cart->id.'&id_module='.$this->module->id.'&id_order='.$this->module->currentOrder.'&key='.$customer->secure_key);
    }
}

 

 

 


Voyez-vous une erreur qui permette d’expliquer ce blocage entre la 2e et la 3e page ?

Merci à l'avance pour votre aide.

paiementtel1.jpg

paiementtel2.jpg

Edited by marie12
erreur à corriger (see edit history)
Link to comment
Share on other sites

ce que vous aviez fait était bon et l'url également etant en url-rewriting.

L'erreur 500 devait plutôt venir d'une coquille de code et dans ce cas là on active le mode debug ou on va lire le fichier error.log du serveur...

Link to comment
Share on other sites

Bonjour,

Merci pour votre réponse rapide.

J'ai finalement trouvé la solution.

Je vous la mets ici pour ceux que ça intéresse  (trouvé sur forum anglais) :

Résolu:
J'ai ajouté une nouvelle ligne dans la table ps_configuration:

319 NULL NULL PS_OS_BANKWIREBIS 10 0000-00-00 00:00:00 0000-00-00 00:00:00

————
Complément de la solution pour les mails :

Salut à tous. Merci de partager ce module, c’est un beau clone, ça marche très bien. Cependant, je suis aux prises avec un problème de courrier électronique. Le module Bankwire3 envoie des courriers électroniques basés sur bankwire.html au lieu de bankwire3.html (fichiers du dossier mails). Est-ce que quelqu'un sait ce qui devrait être changé pour que bankwire envoie bankwire.html et bankwire3 envoie bankwire3.html? Je vous remercie. Jana

Résolu:

Désolé, ce n'est pas vraiment le module qui cause le problème. :-)

Avant d’ajouter une nouvelle ligne dans ps_configuration à partir de la publication n ° 6 ci-dessus, créez un nouveau modèle de courrier électronique bankwire3 (dossier / mails dans votre racine prestashop). Accédez ensuite aux statuts de votre commande dans BO et créez un nouveau statut bankwire3 + assignez votre nouveau modèle bankwire3 à ce statut (une liste déroulante contenant les e-mails apparaît après avoir coché la case "Envoyer un e-mail au client"). Accédez à la liste des statuts de commande et mémorisez l'ID de votre nouveau statut bankwire3. Ensuite, accédez à votre base de données et ajoutez cette ligne à partir du message n ° 6, MAIS au lieu de la valeur 10, utilisez l’ID de votre statut (33 dans mon cas, par exemple). J'espère que ça aide quelqu'un.

À une autre fois,
Bon WE

image.jpeg

image.jpeg

image.jpeg

Edited by marie12
supprimer images indésirables (see edit history)
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...