Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-05-2009 17:39:22

lagalere
Membre
Date d'inscription: 20-04-2009
Messages: 22

Paiement Sogenactif SPIS ATOS

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 wink

Hors ligne

 

#2 04-05-2009 18:06:06

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Paiement Sogenactif SPIS ATOS

Je suppose que c'est SIPS et pas SPIS smile

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


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 04-05-2009 18:18:34

lagalere
Membre
Date d'inscription: 20-04-2009
Messages: 22

Re: Paiement Sogenactif SPIS ATOS

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 tongue)

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

 

#4 04-05-2009 21:51:31

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Paiement Sogenactif SPIS ATOS

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


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 04-05-2009 23:39:16

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Paiement Sogenactif SPIS ATOS

Hello,

Peut-être à côté de la plaque mais il y a en route : Zend_Payment

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 06-05-2009 13:54:53

neojick
Membre
Date d'inscription: 13-04-2008
Messages: 223
Site web

Re: Paiement Sogenactif SPIS ATOS

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.


Chan IRC de ZF en français : zftalk-fr

Hors ligne

 

#7 07-05-2009 15:21:27

lagalere
Membre
Date d'inscription: 20-04-2009
Messages: 22

Re: Paiement Sogenactif SPIS ATOS

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

 

#8 30-03-2010 18:51:57

lesdoudous
Membre
Lieu: Paris, France
Date d'inscription: 24-10-2009
Messages: 27

Re: Paiement Sogenactif SPIS ATOS

Désolé de déterrer ce topic, mais il aurait été intéressant d'avoir le code des controllers que tu as réalisé... :-)


Recrute 2 développeurs Zend expérimentés pour du développement d'applications métier... ==> MP !

Hors ligne

 

#9 31-03-2010 02:08:28

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: Paiement Sogenactif SPIS ATOS

Il y a très peu de mises à jour sur Zend_Payment, quelqu'un sait s'il serait implanter dans ZF2 ?

Hors ligne

 

#10 06-04-2010 17:43:22

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: Paiement Sogenactif SPIS ATOS

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


Code:

[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)


IT Dev @Twitter

Hors ligne

 

#11 26-10-2010 22:55:02

jejom43
Nouveau membre
Date d'inscription: 26-10-2010
Messages: 1

Re: Paiement Sogenactif SPIS ATOS

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

 

#12 12-08-2011 12:12:41

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: Paiement Sogenactif SPIS ATOS

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:

Code:

[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 wink

Dernière modification par lethak (12-08-2011 12:14:03)


IT Dev @Twitter

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages