[RÉSOLU] Interface PayBox

  • Posts: 32
  • Thank you received: 1
10 years 8 months ago #119809

Bonjour,

En parcourant les forums et la documentation, j'ai vu qu'il n'y avait pas actuellement de plugin pour interfacer HikaShop et PayBox (j'ai peut-être mal vu....). Je suis donc en train d'écrire un formulaire pour cela, mais si HTML, JS et CSS ne me posent absolument aucun problème, le PHP n'est pas ma tasse de thé (et à 60 ans, je crains fort de rester au stade de débutant pas motivé).

Donc je bute sur un problème, la récupération de l'email de l'internaute qui passe commande ! Je pense le passer par cookies au moment de la connexion (ou/et de l'enregistrement si celui-ci connecte l'internaute dans la foulée)... mais quel est le fichier *.php qui gère cette connexion ?

Merci beaucoup

J-P

Last edit: 10 years 8 months ago by cdp-nc.

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
10 years 8 months ago #119812

Bonjour,

Sans connaissances avancées en PHP, il vous sera difficile de faire un plugin de paiement complet.
Pour executer un code PHP à l'enregistrement/connexion d'un utilisateur, il faut créer un plugin user joomla implémentant l'évènement correspondant: docs.joomla.org/Plugin/Events/User

Je vous recommenderez plutot de contacter votre banque pour utiliser une autre plateforme de paiement qui existe déjà pour HikaShop comme SIPS ATOS. Ce sera bien plus simple.

Please Log in or Create an account to join the conversation.

  • Posts: 32
  • Thank you received: 1
10 years 8 months ago #119813

Ce n'est pas un plugin que je développe, mais seulement un formulaire + un fichier de variables à partir des infos fournies par ma banque. Et ce n'est pas du PHP que je veux ajouter, mais juste un cookie. Il ne me manque que la récup de cet email, c'est pour ça que je m'accroche...

Merci quand même

EDIT : le courriel à la banque vient de partir ! Mais en Nouvelle-Calédonie, elles font ce qu'elles veulent... attendons en croisant les doigts...

Last edit: 10 years 8 months ago by cdp-nc.

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
10 years 8 months ago #119823

Pour enregistrer un cookie, cela se fait en PHP avec la fonction setcookie. Donc je ne vois pas comment vous voulez faire sans faire de PHP ?

Please Log in or Create an account to join the conversation.

  • Posts: 32
  • Thank you received: 1
10 years 8 months ago #119938

Cela peut aussi se faire côté client via une simple ligne en JS... La banque ne m'ayant pas répondu, je vais approfondir la chose...

Merci

Last edit: 10 years 8 months ago by cdp-nc.

Please Log in or Create an account to join the conversation.

  • Posts: 81540
  • Thank you received: 13071
  • MODERATOR
10 years 8 months ago #119942

En ce cas, c'est le fichier "registration" de la vue "user" où vous pourrez ajouter le JS pour le formulaire d'enregistrement et le fichier "login_form" pour le formulaire de login. Vous pouvez les éditer via le menu Affichage>Vues.

The following user(s) said Thank You: cdp-nc

Please Log in or Create an account to join the conversation.

  • Posts: 32
  • Thank you received: 1
10 years 8 months ago #119951

Merci beaucoup pour cette information précieuse. J'ai aussi trouvé, adapté mais pas testé ça :
<?php
$UserInfo = JFactory::getUser() ;
$usermail = $Userinfo->email;
if ( ! empty( $usermail ) ) {
?>
<script type="text/javascript">
if (document.cookie.indexOf("usermail")<0) document.cookie = "usermail=<?php echo $usermail; ?>" ;
</script>
<?php
}
?>

En fait, pour la maintenance, j'hésite à inclure dans les fichiers sources du code PHP, je préfère procéder par des hacks JS en testant sur l'URL dans mon fichier CDP.js.

(là, je suis "bloqué" sur l'enregistrement des nouveaux clients, j'avais tout désactivé lors de la migration du site de 1.5 en 2.5 pour ne plus être inondé par les SPAMS ! Il faut vraiment que je réactive ça !!!)

J-P

Last edit: 10 years 8 months ago by cdp-nc. Reason: Ajout d'une condition pour que le cookie ne soit créé qu'une fois

Please Log in or Create an account to join the conversation.

  • Posts: 32
  • Thank you received: 1
10 years 8 months ago #119959

Devant la complexité de l'usage du seul JS (cas de la première connexion, du login sur un autre onglet...), je me suis résolu à placer le code dans l'index.php de mon template... et ça marche.

Please Log in or Create an account to join the conversation.

  • Posts: 32
  • Thank you received: 1
10 years 8 months ago #119961

Pour clore ce sujet, au cas où quelqu'un serait intéressé, voici le JS (à placer dans un fichier externe et à lancer au load de la page index du template) :

function ajout_paiement_CB() {
/* recup du cookie qui contient l'email de l'internaute */
 if (document.cookie.indexOf("usermail")>-1)  {
    debut=document.cookie.indexOf("usermail")+9;
    ttt=document.cookie.substring(debut,document.cookie.length);
    usermail=ttt.substring(0,ttt.indexOf(";"));
    }
/* récup du montant de la commande et du nom de la devise */    
 if (window.location.href.indexOf("/order/show/cid")>-1) { 
   var allTD=document.getElementsByTagName("td");
   for (i=1;i<allTD.length;i++){ 
    if (allTD[i].className&&allTD[i].className=="hikashop_order_total_value") {
      TOTAL=allTD[i].innerHTML.replace("\n", "");
      TOTAL=TOTAL.replace(" ", "");TOTAL=TOTAL.replace(" ", "");TOTAL=TOTAL.replace(" ", "");TOTAL=TOTAL.replace(" ", "");
      if (TOTAL.indexOf("XPF")>-1) fichier="fichier.txt"; else fichier="variablesEURO.TXT";
      TOTAL=TOTAL.replace("XPF", "");
      while (TOTAL.charAt(0)=='	') TOTAL=TOTAL.substring(1,TOTAL.length);
      TOTAL=TOTAL.substring(0,TOTAL.indexOf('	'));
      } 
    }
   /* récup du numéro de la commande */
   COMMANDE=document.getElementsByTagName("h1")[0].innerHTML.replace("Commande:", "");
   COMMANDE=COMMANDE.replace("\n", "");
   while (COMMANDE.charAt(0)=='	') COMMANDE=COMMANDE.substring(1,COMMANDE.length);
   COMMANDE=COMMANDE.substring(0,COMMANDE.indexOf('	'))
   /* construction des INPUT */
   CB_PBX_EMAIL=document.createElement('input');
   CB_PBX_EMAIL.type='hidden';
   CB_PBX_EMAIL.name="PBX_PORTEUR";
   CB_PBX_EMAIL.value=usermail;    
   document.getElementById("adminForm").appendChild(CB_PBX_EMAIL);
   CB_PBX_TOTAL=document.createElement('input');
   CB_PBX_TOTAL.type='hidden';
   CB_PBX_TOTAL.name="PBX_TOTAL";
   CB_PBX_TOTAL.value=TOTAL;    
   document.getElementById("adminForm").appendChild(CB_PBX_TOTAL);
   CB_PBX_CMD=document.createElement('input');
   CB_PBX_CMD.type='hidden';
   CB_PBX_CMD.name="PBX_CMD";
   CB_PBX_CMD.value=COMMANDE;    
   document.getElementById("adminForm").appendChild(CB_PBX_CMD);  
   CB_PBX_MODE=document.createElement('input');
   CB_PBX_MODE.type='hidden';
   CB_PBX_MODE.name="PBX_MODE";
   CB_PBX_MODE.value="13";
   document.getElementById("adminForm").appendChild(CB_PBX_MODE);
   CB_PBX_OPT=document.createElement('input');
   CB_PBX_OPT.type='hidden';
   CB_PBX_OPT.name="PBX_OPT";
   CB_PBX_OPT.value=fichier;
   document.getElementById("adminForm").appendChild(CB_PBX_OPT);
   /* bouton lançant le paiement */
   pasbo=document.createElement('center');
   CB=document.createElement('input'); 
   CB.type = 'submit'; 
   CB.value = "Paiement par Carte Bancaire";
   CB.style.fontSize = "200%";
   CB.style.fontWeight = "bold";
   CB.style.color = "blue";
   CB.style.backgroundColor = "#ccc";
   CB.style.padding = "5px 50px";
   CB.style.margin = "50px 0";
   CB.style.borderRadius = "10px";
   CB.style.border="1px solid black";
   CB.className="image_lien";
   CB.setAttribute("onMouseOver", "CB.style.color = 'red';" ); 
   CB.setAttribute("onMouseOut", "CB.style.color = 'blue'" );
   pasbo.appendChild(CB);
   document.getElementById("adminForm").appendChild(pasbo);
   document.getElementById("adminForm").action="../../../../../../cgi-bin/modulev2.cgi";
 }
}

The following user(s) said Thank You: nicolas

Please Log in or Create an account to join the conversation.

Time to create page: 0.071 seconds
Powered by Kunena Forum