Bonsoir,
Bon j'ai avancé, par où je commence ?
J'ai franchi la première étape, l'appel à REQUEST pour l'affichage des moyens de paiement, le binaire était originalement appelé par la fonction exec($path_bin $parm) dans le fichier "atos_end.php".
Je rappelle que la solution de mon hébergeur, ou plutôt celui de mon client, était d'utiliser des CGI PERL à la place des appels PHP interdits comme exec().
Dans mon kit marchand j'ai conservé les binaires request et response qui étaient dans le dossier /bin/glibc-2.3.4 du kit, et je les ai uploadé via le plugin ATOS d'Hikashop dans mon dossier cgi-bin, en ayant préalablement indiqué ce dossier d'upload pour les binaires.
Le plugin a créé un dossier "b" dans "cgi-bin" et placé les binaires donc dans "/cgi-bin/b", mais aussi le certificat. Les autre fichiers "parmcomxxx" ont été mis dans "/cgi-bin".
Jusque là rien de transcendant. L'objectif suivant était de modifier l'appel à REQUEST avec autre chose qu'un exec() puisque c'est interdit.
J'ai donc :
- modifié le fichier "atos_end.php"
- créé un script PERL (call_request.pl)
Tout d'abord pour atos_end.php, j'ai supprimé les lignes depuis le exec($path_bin $parm) jusqu'à la fin et j'ai ajouté la redirection vers mon script call_request.pl simplement avec un "header(Location: http://xxxxxxxxxx)" dans lequel je passe en paramètres les variables $path_bin et $parm.
Ensuite j'ai donc créé mon script PERL "call_request.pl" que j'ai placé dans "/cgi-bin", celui-ci récupère les variables et contient exactement ce qu'il y avait après la ligne exec() dans "atos_end.php", mais en langage PERL accepté par l'hébergeur.
J'ai mis à jour les droits sur les binaires en 755 ainsi que sur mon script PERL, et j'ai adapté le pathfile, notamment pour les parmcom, comme ci-dessous:
DEBUG!YES!
D_LOGO!/media/com_hikashop/l/!
F_DEFAULT!/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/parmcom.mercanet!
F_PARAM!/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/parmcom!
F_CERTIFICATE!/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/b/ct!
J'ai opté pour le mode DEBUG pour vérifier le fonctionnement et cela fonctionne, au moins pour la première phase.
Voila ce que j'obtiens:
DEBUG MODE
Pathfile
Reading pathfile (/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/pathfile) OK
D_LOGO (/media/com_hikashop/l/)
F_DEFAULT (/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/parmcom.mercanet)
F_PARAM (/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/parmcom)
F_CERTIFICATE (/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/b/ct)
System
Reading F_DEFAULT (/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/parmcom.mercanet) OK
Reading F_PARAM (/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/parmcom.082584341411111) OK
Reading F_CERTIFICATE (/home/www/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/web/cgi-bin/b/ct.fr.082584341411111) OK
Version du certificat = 16/10/2006 (MERCANET)
CALL URL
https://mercanet.bnpparibas.net:443/cgis-payment-mercanet/demo/callpayment
Request sent to the Payment Server
API_VERSION (P615)
CERTIFICATE_DATE (20061016)
CERTIFICATE_EXPIRED ()
CERTIFICATE_VERSION ()
CERTIFICATE_TYPE ()
BROWSER_TYPE ()
MERCHANT_ID (082584341411111)
MERCHANT_COUNTRY (fr)
AMOUNT (450)
TRANSACTION_ID (211741)
CURRENCY (978)
TRANSMISSION_DATE (20120309201741)
PAYMENT_MEANS (CB,2,VISA,2,MASTERCARD,2)
HEADER_FLAG (yes)
LANGUAGE (fr)
RETURN_URL (http://www.xxxxxxx.com/success.php)
CANCEL_URL (http://www.xxxxxxx.com/atos.php)
AUTO_RESPONSE_URL (http://www.xxxxxxx.com/atos.php)
RETURN_LOGO ()
CANCEL_LOGO ()
SUBMIT_LOGO ()
LOGO (mercanet.gif)
LOGO2 (commercant.gif)
ADVERT (advert.gif)
CARD_LIST (CB,VISA,MASTERCARD)
TRANSACTION_CONDITION (SSL)
ORDER_VALIDITY ()
MERCHANT_LANGUAGE (fr)
BGCOLOR (ffffff)
TEXTCOLOR (000000)
TEXTFONT ()
BACKGROUND ()
RECEIPT ()
CADDIE (YToxMTp7czo3OiJhZGRyZXNzIjtzOjIwOiI4IHJ1ZSBQaWVycmUgRnJlc25heSI7czo4OiJhZGRyZXNzMiI7czowOiIiO3M6ODoibGFzdG5hbWUiO3M6NjoiRGV2YXV4IjtzOjc6ImNvdW50cnkiO3M6MzoiRlJBIjtzOjExOiJwb3N0YWxfY29kZSI7czo1OiI4NzAwMCI7czo0OiJjaXR5IjtzOjc6IkxpbW9nZXMiO3M6NToic3RhdGUiO3M6MTI6IkhhdXRlLVZpZW5uZSI7czoxMjoicGhvbmVfbnVtYmVyIjtzOjEwOiIwNTU1MTIzNDU2IjtzOjU6InRpdGxlIjtzOjE6Ik0iO3M6OToiZmlyc3RuYW1lIjtzOjc6IlRoaWVycnkiO3M6NjoiY2FkZGllIjtpOjEyO30=)
CUSTOMER_ID (2)
CUSTOMER_EMAIL (xxxxxx.yyyyyyy@gmail.com)
DATA ()
RETURN_CONTEXT ()
TEMPLATE ()
CUSTOMER_IP_ADDRESS (xx.xxx.xx.xx)
ORDER_ID (12)
CAPTURE_DAY ()
CAPTURE_MODE (AUTHOR_CAPTURE)
STATEMENT_REFERENCE ()
CUSTOMER_PHONE ()
CONFIRM_TEMPLATE ()
BLOCK_ALIGN (center)
BLOCK_ORDER (1,2,3,4,5,6,7,8)
TARGET (_top)
Maintenant il me faut modifier le fichier atos.php mais là c'est un peu plus dur. Pourquoi ? Et bien parce que ce fichier contient évidemment l'appel exec() pour response, mais contient plusieurs centaines de lignes qu'il faut conserver.
Donc le but est de lancer le script PERL depuis le fichier atos.php et d'y rester pour exécuter le reste des instructions.
Voilà donc où j'en suis, et bien évidemment Nicolas un coup de main sera le bienvenu si possible.
A+