Jump to content
morgandebray

Ajouter un BCC dans l'email (module OGONE)

Recommended Posts

Bonjour,

J'ai surchargé la classe Mail.php de prestashop (1.7).

J'ai besoin d'envoyer en BCC une adresse mail dynamique que je récupère d'une table personnalisé de ma base de données.

L'email s'ajoute bien si j'utilise le "Virement bancaire" de Prestashop. Mais si j'utilise le module Ogone (pour la VISA...), $mail_boutique reste à null.

Que faudrait-il que j'ajoute en plus ? Je precise, $mail_boutique est null, mais en le remplaçant avec un mail en dur, l'email en BCC s'envoit bien. 

J'ai ajouté ces éléments dans la fonction send():

 

        $mail_boutique = Context::getContext()->cookie->__get('mail_boutique');
        $bcc = [];
        if($mail_boutique != false && $mail_boutique != "" && $mail_boutique != null){
            $bcc = [$mail_boutique];
        }

        $devLog = '/var/www/xxx/var/logs/dev.log';
        $stringBcc = implode("", $bcc);
        error_log(" --------------------------- MAIL OK -------------------------\r\n", 3, $devLog);
        error_log(" --------------------------- BBC  '{$stringBcc}' -------------------------\r\n", 3, $devLog);

        if (isset($bcc) && is_array($bcc)) {
            foreach ($bcc as $addr) {
                $addr = trim($addr);
                if (!Validate::isEmail($addr)) {
                    self::dieOrLog($die, 'Error: invalid e-mail address');

                    return false;
                }

                $message->addBcc(self::toPunycode($addr));
            }
        } elseif (isset($bcc)) {
            $message->addBcc(self::toPunycode($bcc));
        }

 

Share this post


Link to post
Share on other sites

Donc ton cookie ne contient pas de mail_boutique, ce qui me semble normal dans la mesure où en cas de carte bancaire, c'est le serveur de la banque qui exécute ce que l'on appelle l'IPN qui transforme le panier en commande (donc envoi le mail)

Identifier que tu es sur une creation de commande (nom du template ou du sujet) et forcer alors la mail_boutique avec ton email bcc

Share this post


Link to post
Share on other sites

Le cookie contient bien un mail, en tout cas sur le site.

Comment alors je peux ajouter un bcc lorsque la banque valide le paiement ?

Share this post


Link to post
Share on other sites

heu ... lire ma réponse pourrait t'aider sûrement

Share this post


Link to post
Share on other sites

Oui, donc ? Avec des données plus concrètes si possible (fichier, surcharge...)

Share this post


Link to post
Share on other sites

fichier? le même que tu as déjà modifié
surcharge? je sais pas comment tu as déjà opéré
Comment? en testant le nom du template ou le sujet selon ce qui est le plus approprié pour toi et en utilisant la méthode if de php

Share this post


Link to post
Share on other sites

Ok pour le fichier

La surcharge : j'ai opéré comme montré. J'ai override le Mail.php en reprenant la fonction send() de base, en ajoutant uniquement le code montré pour ajouté un BCC.

Comment : où est-ce que je dois procéder aux tests ? Dans le fichier surchargé ?

Share this post


Link to post
Share on other sites

Clairement il faut commencer par apprendre le php si tu veux écrire quelque chose de spécifique

Share this post


Link to post
Share on other sites

là ça fait peur

Share this post


Link to post
Share on other sites

Je peux savoir ce qu'il se passe ? J'ai fait quelque chose de mal ?

Je suis développeur PHP, oui, mais pas prestashop. Je suis rentré dans PS sans faire de formation, j'apprends sur le tas. Donc si tu n'es pas capable de m'aider, merci de laisser autres personnes répondre.

Share this post


Link to post
Share on other sites

Moi perso ça m'étonnerait qu'il y ait un type à la banque qui se connecte pour valider le paiement à la main hein^^

Le retour c'est un script et à ma connaissance un script ne gère pas les cookies (enfin si, on peut, mais c'est une autre histoire)

Un cookie c'est temporaire et lié à un NAVIGATEUR.

Share this post


Link to post
Share on other sites
il y a 14 minutes, morgandebray a dit :

Je suis développeur PHP

et tu ne sais pas écrire: if ($template == 'quelquechose'} { $bcc = ['adresse@email.com']; }

C'est sûrement une blague

Share this post


Link to post
Share on other sites

@Eolia, je n'ai pas parlé de valider un paiement à la main ^^

J'ai juste besoin d'envoyer une copie de la facture à une adresse mail (qui peut changer). Hors du module, mon bcc s'ajoute bien (comme je reste sur le site, je suis d'accord) : exemple, sur PaymentModule.php je l'ai, car je ne quitte pas le site. Mais pour ogone, comme je change de site, pour l'étape de paiement, le cookie n'est évidemment pas envoyé.

Du coup, comment je peux faire ? Je pensais en surchargeant le Mail.php que c'est cette surcharge qu'Ogone prendra en compte, mais non a priori...

Share this post


Link to post
Share on other sites
il y a 1 minute, doekia a dit :

et tu ne sais pas écrire: if ($template == 'quelquechose'} { $bcc = ['adresse@email.com']; }

C'est sûrement une blague

A quel endroit j'ai dit que je ne savais pas l'écrire ? J'ai demandé OU est-ce que je devais l'écrire, nuance.

Share this post


Link to post
Share on other sites

Pfuu tu comprends comment marche le web?

Surcharger quoi? Un  cookie est dépendant du navigateur qui choisit en fonction du domaine d'envoyer ou non. Ici tu crée un cookie pour le domaine X, et tu veux qu'une autre navigateur (qui d'ailleurs n'en est pas un, envoie ce cookie qu'il ne connait pas).

Share this post


Link to post
Share on other sites

Pardon mais ton raisonnement manque de logique et ma remarque était ironique justement^^

il y a 2 minutes, morgandebray a dit :

Mais pour ogone, comme je change de site, pour l'étape de paiement, le cookie n'est évidemment pas envoyé.

Donc pas de cookie, ok ?

Et pourtant tu écris ça:

Citation

$mail_boutique = Context::getContext()->cookie->__get('mail_boutique');

 

Donc ma logique de dev me dit que $mail_boutique = false;

Share this post


Link to post
Share on other sites
il y a 1 minute, doekia a dit :

Pfuu tu comprends comment marche le web?

Surcharger quoi? Un  cookie est dépendant du navigateur qui choisit en fonction du domaine d'envoyer ou non. Ici tu crée un cookie pour le domaine X, et tu veux qu'une autre navigateur (qui d'ailleurs n'en est pas un, envoie ce cookie qu'il ne connait pas).

Je suis au courant. Ce que je veux savoir, c'est si quelqu'un a une solution utiliser une adresse mail en BCC depuis le site de base. Je ne sais pas, en utilisant un champ caché ou autre !

Pourtant, lorsque le site ogone valide le paiement, j'ai bien dans mes logs la trace au niveau de mon adresse mail en bcc (mais vide, du coup, logique).

Share this post


Link to post
Share on other sites

@Eolia, si j'ai aussi besoin de cookie ici pour les transactions modes de paiement qui se passent pour le site (exemple : par virement bancaire)

 

Share this post


Link to post
Share on other sites

Ajoutez une colonne (email) à la table cart, faites un override de la classe et du contrôleur et récupérez cette valeur ($cart->email) pour l'affecter au bcc

Share this post


Link to post
Share on other sites

Cette partie sera appelé à quel moment ? Après qu'Ogone ai validé le paiement ?

Share this post


Link to post
Share on other sites

Whaouu...

Au lieu de mettre le mail dans le cookie vous l'associez au panier (l'id du panier est utilisé au moment de la validation de commande)

Ensuite cette variable devient accessible n'importe où, dans la classe mail.php par exemple vu que vous en avez besoin à cet endroit.

Share this post


Link to post
Share on other sites
Posted (edited)
Il y a 21 heures, morgandebray a dit :

Cette partie sera appelé à quel moment ? Après qu'Ogone ai validé le paiement ?

@Eolia, effectivement, question bête...

Mais ok en passant par la base de données, ça fonctionne.

Edited by morgandebray (see edit history)

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More