Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'utilise le Zend Framework pour un site perso et je dois mettre en place un système de paiement sécurisé. J'ai donc récupéré les éléments sur le site sogenactif et je me demandais s'il n'existait pas des moyens de paiement déjà en place avec le zend framework.
Je n'ai vraiment rien trouvé pour l'instant...
Si vous pouviez me conseiller sur le chemin à prendre pour développer un tel module avec ZF, ça me dépannerait vraiment.
Merci d'avance à tous j'ai vraiment du mal sur ce point...
La galère... qui galère
Hors ligne
Je suppose que c'est SIPS et pas SPIS
Si tu galères avec SIPS, normalement dans leur doc ils indiquent un No de hotline. Leur hotline (chez SIPS) est compétente et réactive. Tu devrais les appeler, je pense qu'ils peuvent t'expliquer les étapes pas à pas pour la mise en place du système.
Ils ne vont sans doute pas connaître le ZF, mais déjà si tu comprends bien le principe des échanges internaute-serveur et serveur-serveur, tu ne devrais pas avoir beaucoup de mal à coder le reste avec le ZF.
A+, Philippe
Hors ligne
Yes Philippe!!!
merci pour ta réponse. Je te rejoins sur le fait que Sogenactif ne pose pas de grande difficulté à la mise en place. Ma question pourrait plutôt être formulée de la manière suivante, plus comme un conseil.
En gros, existe-il déjà des modules ou autres aides pour le paiement en ligne via ZF?Est-ce bien sécurisé de passé par le paiement a coté de ZF au niveau de l'accés possibles aux différents fichiers. (suis je clair? je sais pas )
Sinon la mise en place me semble assez simple mais va me prendre quand même un peu de temps.
Merci d'avance
Hors ligne
Est-ce bien sécurisé de passé par le paiement a coté de ZF au niveau de l'accés possibles aux différents fichiers. (suis je clair? je sais pas :p)
hum... je confirme, tu n'es pas clair.
Sinon je ne connais pas de module ZF tout fait pour gérer SIPS.
A+, Philippe
Hors ligne
Hello,
Peut-être à côté de la plaque mais il y a en route : Zend_Payment
A+
Hors ligne
Zend_Payment peut-être très intéressant s'il implémente ATOS un jour.
Atos n'est pas compliqué à mettre en place, mais il y a quelques petits détails qui peuvent faire perdre du temps.
Patience donc.
Hors ligne
Salut tout le monde,
je suis en bonne voie pour réussir le dév,
pour ceux que ca intéresse, je n'ai pas utilisé zend_payement.
J'ai utilisé simplement le kit fournit par atos. Un controleur de paiement contenant 3 action : call_equest, autoresponse et response.
Et le tour est joué, merci quand même pour votre implication
Hors ligne
Désolé de déterrer ce topic, mais il aurait été intéressant d'avoir le code des controllers que tu as réalisé... :-)
Hors ligne
Il y a très peu de mises à jour sur Zend_Payment, quelqu'un sait s'il serait implanter dans ZF2 ?
Hors ligne
Perso pour implémenter sogenactif j'ai écrit une lib du genre 'Monsite_Payment_Sogenactif'
utilisable dans n'importe quel contrôleur
je le drop tel quel si cela peut faire gagner du temps a certains !
il vous faudra modifier les appels a la conf et aux loggers etc
[lang=php]<?php /** * Permer de gérer l'intégration du paiement Sogenactif sur la plateforme * * @see http://www.sogenactif.com/index.php?id=46 * */ class Monsite_Payment_Sogenactif extends Monsite_DataContainer_Abstract { public function __construct() { $this->config = new Zend_Config_Ini(_CONFIGPATH_."sogenactif/config.ini", null, true); $this->config->setReadOnly(); } public function callRequest($price, $sendingId, $transactionId=null) { $return = false; $config = $this->config->callRequest; $Params = $config->Param->toArray(); $Params['amount'] = "".(int)(($price)*(100)); // Convertion en centimes + string $Params['transaction_id'] = $transactionId; $Params['customer_ip_address'] = $_SERVER['REMOTE_ADDR']; if(is_null($transactionId)) { $transactionId = date('H').substr(date('u'),0,3).rand(rand(rand(0,9),rand(0,9)),rand(rand(0,9),rand(0,9))); } $Params['automatic_response_url'].= 'method/'.Manager_Payment::METHOD_CREDITCARD.'/?sendingId='.$sendingId.''; $Params['normal_return_url'].= 'method/'.Manager_Payment::METHOD_CREDITCARD.'/?sendingId='.$sendingId.''; $Params['cancel_return_url'].= '?sendingId='.$sendingId.''; /* * customer_id : Taille : jusqu’à 19 caractères Description : Ce champ est utilisé pour les paiements par abonnement. Dans le cas de paiement par carte, ce champ est libre. Toute information transmise dans ce champ par le commerçant lors de la requête de paiement est renvoyée dans la réponse sans modification. */ //TODO: services, remplacer guest par userId $Params['customer_id'] = 'guest'; $Params['header_flag'] = 'yes'; /* * Affectation dynamique des autres parametres * Les valeurs proposees ne sont que des exemples * Les champs et leur utilisation sont expliques dans le Dictionnaire des donnees * $Params['language'] =fr $Params['payment_means'] =CB,2,VISA,2,MASTERCARD,2 $Params['capture_day'] = $Params['capture_mode'] = $Params['bgcolor'] = $Params['block_align'] = $Params['block_order'] = $Params['textcolor'] = $Params['receipt_complement'] = $Params['caddie'] =mon_caddie $Params['customer_email'] = $Params['data'] = $Params['return_context'] = $Params['target'] = $Params['order_id'] = * Les valeurs suivantes ne sont utilisables qu'en pre-production * Elles necessitent l'installation de vos fichiers sur le serveur de paiement $Params['normal_return_logo'] = $Params['cancel_return_logo'] = $Params['submit_logo'] = $Params['logo_id'] = $Params['logo_id2'] = $Params['advert'] = $Params['background_id'] = $Params['templatefile'] = */ // Building Parm $parm = ''; foreach($Params as $Key => $Value) { $parm.= $Key.'='.$Value.' '; } $parm = trim($parm); // Initialisation du chemin de l'executable request (a modifier) $path_bin = $config->bin; // DebugMessage // Appel du binaire request $result = @exec("$path_bin $parm"); /* sortie de la fonction : $result=!code!error!buffer! - code=0 : la fonction genere une page html contenue dans la variable buffer - code=-1 : La fonction retourne un message d'erreur dans la variable error */ // On separe les differents champs et on les met dans une variable tableau $resultArray = explode ("!", "$result"); // Recuperation des parametres $code = $resultArray[1]; $error = $resultArray[2]; $message = $resultArray[3]; // Analyse du code retour if (( $code == "" ) && ( $error == "" ) ) { $return = false; Zend_Registry::get('logger')->crit('<font style="color:red;"><b>Sogenactif</b></font>: Error calling request, executable not found at '.$path_bin); } else if ($code != 0) { $return = false; Zend_Registry::get('logger')->err('<font style="color:red;"><b>Sogenactif</b></font>: Error calling Payment API (request) with message: <br/>'.$error.debug_pr($Params).'<br/>'.$parm); } else { // OK $return = $message; } return $return; } public function callResponse() { $return = false; $config = $this->config->callResponse; $Params = $config->Param->toArray(); // Recuperation de la variable crypte DATA $cryptDATA = Zend_Controller_Front::getInstance()->getRequest()->getParam('DATA'); $message="message=$cryptDATA"; $pathfile="pathfile=".$Params['pathfile']; $path_bin = $config->bin; // Appel du binaire response $execCMD = "$path_bin $pathfile $message"; $result = @exec($execCMD); // Sortie de la fonction : !code!error!v1!v2!v3!...!v29 // - code=0 : la fonction retourne les donnees de la transaction dans les variables v1, v2, ... // : Ces variables sont decrites dans le GUIDE DU PROGRAMMEUR // - code=-1 : La fonction retourne un message d'erreur dans la variable error // on separe les differents champs et on les met dans une variable tableau $tableau = explode ("!", $result); // Recuperation des donnees de la reponse $DATAs = array(); $DATAs['code'] = $tableau[1]; $DATAs['error'] = $tableau[2]; $DATAs['merchant_id'] = $tableau[3]; $DATAs['merchant_country'] = $tableau[4]; $DATAs['amount'] = $tableau[5]; $DATAs['transaction_id'] = $tableau[6]; $DATAs['payment_means'] = $tableau[7]; $DATAs['transmission_date'] = $tableau[8]; $DATAs['payment_time'] = $tableau[9]; $DATAs['payment_date'] = $tableau[10]; $DATAs['response_code'] = $tableau[11]; $DATAs['payment_certificate'] = $tableau[12]; $DATAs['authorisation_id'] = $tableau[13]; $DATAs['currency_code'] = $tableau[14]; $DATAs['card_number'] = $tableau[15]; $DATAs['cvv_flag'] = $tableau[16]; $DATAs['cvv_response_code'] = $tableau[17]; $DATAs['bank_response_code'] = $tableau[18]; $DATAs['complementary_code'] = $tableau[19]; $DATAs['complementary_info'] = $tableau[20]; $DATAs['return_context'] = $tableau[21]; $DATAs['caddie'] = $tableau[22]; $DATAs['receipt_complement'] = $tableau[23]; $DATAs['merchant_language'] = $tableau[24]; $DATAs['language'] = $tableau[25]; $DATAs['customer_id'] = $tableau[26]; $DATAs['order_id'] = $tableau[27]; $DATAs['customer_email'] = $tableau[28]; $DATAs['customer_ip_address'] = $tableau[29]; $DATAs['capture_day'] = $tableau[30]; $DATAs['capture_mode'] = $tableau[31]; $DATAs['data'] = $tableau[32]; // analyse du code retour if(( $DATAs['code'] == "" ) && ( $DATAs['code'] == "" )) { // Error $return = false; Zend_Registry::get('logger')->crit('<font style="color:red;"><b>Sogenactif</b></font>: Error calling response, executable not found at '.$path_bin.debug_pr($config->toArray()).'<br/>'.$execCMD); } elseif($DATAs['code'] != 0) { // Error $return = false; Zend_Registry::get('logger')->err('<font style="color:red;"><b>Sogenactif</b></font>: Error calling Payment API (response) with message: <br/>'.$error.debug_pr($config->toArray()).debug_pr($DATAs)); } else { // OK - Réponse manuelle du serveur SOGENACTIF $return = $DATAs; } return $DATAs; } }
Dernière modification par lethak (12-08-2011 12:14:26)
Hors ligne
salut
je trouve ta classe super intéressante mais je bloque sur différents points serait il possible de voir ton fichier de config que tu initialise afin que je parte dans le bon sens. Je te remercie par avance ton fichier m'a déjà beaucoup aidé. D'autre part, afin de rester dans les bonnes pratiques où me conseiller vous de placer les fichiers fourni par Atos?
cordialement bonne soirée
Hors ligne
jejom43 a écrit:
salut
je trouve ta classe super intéressante mais je bloque sur différents points serait il possible de voir ton fichier de config que tu initialise afin que je parte dans le bon sens. Je te remercie par avance ton fichier m'a déjà beaucoup aidé. D'autre part, afin de rester dans les bonnes pratiques où me conseiller vous de placer les fichiers fourni par Atos?
cordialement bonne soirée
Salut,
je doit réutiliser cette classe pour gagner du temps sur un projet, mais je n'ai plus la config, du coup j'ai fouillé dans la doc ATOS/SOGENACTIF/WEBAFFAIRES et retrouvé ca:
Initialisation de $Params pour callRequest:
[lang=php] //Affectation des paramètres obligatoires $Params = array( 'merchant_id' => '', //ex: 014022286611111 'merchant_country' => '', //ex: fr 'amount' => '', //ex: 100 'currency_code' => '', //ex: 978 );
je pense que c'était un des points bloquants de jejom43
Pour les binaires, les placer en dehors du domaine accessible en HTTP c'est tout
Dernière modification par lethak (12-08-2011 12:14:03)
Hors ligne