Installation d'un paiement sécurisé Cyberplus

Bonjour,

Je travaille en ce moment à la refonte du site marchand d’un client. Ce client est hébergé sur un serveur mutualisé XXLPlan chez OVH. Nous avons pris un système de paiement sécurisé Cyberplus (Banque populaire) pour gérer les transactions. Ce système de paiement securisé est hébergé sur le serveur de paiement sécurisé d’OVH.

Comme pour beaucoup de systèmes de paiement, Cyberplus fonctionne autour de 3 fichiers : request.cgi , response.cgi et autoresponse.cgi. Le tout est architecturé autour de 3 serveurs :
[b]

  • le serveur hébergeant le site marchand
  • le serveur de paiement sécurisé
  • le serveur de la banque.[/b]

Le système de paiement est bien intégré sur le site (les paiements fonctionnent, les numeros de commande passent bien, les montants aussi et les bouton annulation et retour à la boutique fonctionne normalement en redirigeant le visiteur sur le site marchand en passant en même temps les variable relatives à la transaction réalisée).

Mon problème se situe au niveau de l’appel automatique à un de mes scripts PHP (sur le serveur hébergeant le site marchand) par le serveur de la banque. Cet appel se fait obligatoirement de serveur à serveur (sans navigateur et sans intervention de l’internaute, comme ça s’il ne clique pas sur le bouton "retour à la boutique, j’ai quand même un retour sur la transaction).
Le script appelé, qui s’appelle majTransaction.php a pour interêt de mettre à jour la base de données en utilisant les variables renvoyées par la banque (notammment le response_code, qui indique si la transaction a reussi (paiement accepté) ou échoué (paiement rejeté)). Avec ces informations, je peux mettre à jour ma table commande et les faire passer de “En attente de paiement” à “Prêt à expédier” ou “Annulée par la banque” le cas échéant.

Lors de l’appel à majTransaction.php la banque passe une variable $DATA qui contient une chaîne cryptée. Le script majTransaction récupére cette variable et l’envoie sur le serveur de paiement sécurisé au cgi request.cgi qui a pour charge de décrypter la variable $DATA en une chaîne lisible et de la retourner.

L’appel à mon script majTransaction.php par la banque se fait bien (j’ai un envoi de mail dedans qui s’effectue bien), je récupére bien la variable $DATA qui contient la chaîne cryptée. Là ou ça coince c’est lors de l’appel à response.cgi, pour le décryptage de $DATA. Côté code (dans majTransaction.php) ça se présente comme ça :

$message=“message=$DATA”;
$login = “loginduclient”; //le login est bien sûr le bon
$path_bin = “http://paisec.ovh.net/~$login/cyberplus/bin/response.cgi”;
$result=exec("$path_bin $message");

et ensuite j’ai un explode("!", $result) sur $result qui me permet de ranger les variables dans un tableau (la chaîne décryptée se présente sous la forme !variable1=truc!variable2=truc!variable3=truc!..

Comme l’appel à response.cgi ne se fait pas (des tests le prouvent), je ne récupére aucune variable…

Aprés test il apparaît que le problème se situe au niveau de la commande exec(); qui ne fonctionne juste pas du tout. La hotline d’OVH me dit pourtant que cette commande n’est pas désactivée sur leurs hébergements mutualisés et si je fait un phpinfo(), je m’aperçois bien que je ne suis pas en SAFE_MODE. J’obtiens ça avec le phpinfo() :

safe_mode Off Off
safe_mode_exec_dir no value no value

Donc rien à priori pour empêcher le fonctionnement de la commande exec();

Je précise que le code que j’utilise a été fourni par Cyberplus.

Là je suis complétement coincé. Quelqu’un sait-il comment je pourrait contourner le problème du exec() en utilisant une commande alternative? J’ai essayé avec system() et passthru(), sans succés. La hotline Cyberplus et la hotline OVH (ainsi que le support par mail) ne m’aident pas beaucoup.

je vais etre mega mechant mais dans les persmissions de ton executable la ton cgi tu as bien modifié le chmod ?
dsl mais parfois les trucs cons c’est ce que l’on oublie en premier

Bussiere

[quote=« Bussiere, post:2, topic: 28598 »]je vais etre mega mechant mais dans les persmissions de ton executable la ton cgi tu as bien modifié le chmod ?
dsl mais parfois les trucs cons c’est ce que l’on oublie en premier

Bussiere[/quote]

Oui le fichier response.cgi est en CHMOD 777 (premier truc que j’ai vérifié Bussiere hein :stuck_out_tongue: ).

essaie ./response.cgi dans ta commande exec plutot que seulement response.cgi

Bussiere

[quote=« Bussiere, post:4, topic: 28598 »]essaie ./response.cgi dans ta commande exec plutot que seulement response.cgi

Bussiere[/quote]

Ben euh le chemin vers response.cgi se trouve dans la variable $path_bin :

$path_bin = « http://paisec.ovh.net/~$login/cyberplus/bin/response.cgi »;
$result=exec("$path_bin $message");

Donc je vois pas comment intégrer ton ./response.cgi dans exec() :stuck_out_tongue:

chuis pas sur que tu puisse executer une url…

il faut transmettre une requete http, tu executes pas un fichier (la commande exec() c’est pour executer un truc en local, pas à distance)

[quote=“vns, post:6, topic: 28598”]chuis pas sur que tu puisse executer une url…

il faut transmettre une requete http, tu executes pas un fichier (la commande exec() c’est pour executer un truc en local, pas à distance)[/quote]
yep +1

execute plutot avec le chemin genre :
/~$login/cyberplus/bin/response.cgi
ou
./~$login/cyberplus/bin/response.cgi
Bussiere

[quote=« Bussiere, post:7, topic: 28598 »]yep +1

execute plutot avec le chemin genre :
/~$login/cyberplus/bin/response.cgi
ou
./~$login/cyberplus/bin/response.cgi
Bussiere[/quote]

Oui je pense que vous avez raison. Merci pour le coup de pouce, je vais faire une batterie de tests en ce sens, en placant majTransaction.php directement sur le serveur de paiement sécurisé.

Je vous tiens au courant :stuck_out_tongue: