On 9 mai, 14:44, Jean-Christophe Michel <[EMAIL PROTECTED]> wrote: > Je vais pour ma part implémenter celui de la Banque Populaire de > Lorraine.
J'ai un bout de code pour la BPLC, utilisé depuis 1an a peu près sans problème. Dans environment.rb : # Configuration du paiement BPLC # URL à appeler PAIEMENT_BPLC_URL_CONTACT = "https://ecom.cimetz.com/telepaie/ cgishell.exe/epaie01" # Champs d'identification du marchand PAIEMENT_BPLC = { :CHAMP000 => '000000', # Numéro abonné internet :CHAMP001 => '0000', # Code activité commerçant (MCC) :CHAMP002 => '0000000000', # Numéro de contrat (numéro commerçant) :CHAMP003 => 'I', # Type de paiement (I = Immédiat, D = Différé) :CHAMP900 => '01' # Adhérent (toujours passer 01) Dans lib/bplc_paiement.rb : require "erb" class BplcPaiement attr_accessor :uri, :champs, :client, :commande ### # Class de gestion des échanges avec le serveur de paiement de la bplc # # Paramètres : # cl : Objet Client correspondant au client souhaitant payer # co : Objet Commande correspondant à la commande du client à payer # informations_paiement : Hash contenant les données de configuration du paiement ### def initialize(cl, co, informations_paiement) @uri = PAIEMENT_BPLC_URL_CONTACT @champs = { # Commerçant :CHAMP000 => '.', # Numéro aboné internet :CHAMP001 => '.', # Code activité commerçant (MCC) :CHAMP002 => '.', # Numéro de contrat (numéro commerçant) :CHAMP003 => 'D', # Type de paiement (I = Immédiat, D = Différé) :CHAMP004 => '.', # Nom du serveur commerçant (informatif) :CHAMP005 => '.', # Adresse du script appelé après paiement (RSTS = backend, STD = page confirmation) :CHAMP006 => '.', # Nom du commerçant (informatif) :CHAMP007 => '.', # Adresse de retour 2 chez le commerçant (RSTS = confirmation, STD = inutile) :CHAMP008 => '.', # Email de confirmation du commerçant :CHAMP010 => '.', # Timer de redirection automatique (si CHAMP007) # Client :CHAMP100 => '.', # Nom :CHAMP101 => '.', # Prénom :CHAMP102 => '.', # Société :CHAMP103 => '.', # Téléphone :CHAMP104 => '.', # Adresse email :CHAMP106 => '.', # Fax :CHAMP107 => '.', # Adresse (numéro et rue) :CHAMP108 => '.', # Ville :CHAMP109 => '.', # Code Postal :CHAMP110 => '.', # Code Pays (informatif, aucune norme spéciale) # Commande :CHAMP200 => '.', # Référence de la commande (stocké pour éviter les doublons de paiement 15 chiffres significatif) :CHAMP201 => '.', # Montant (symbole décimal est la virgule) :CHAMP202 => 'EUR', # Devise (accépté : EUR) # Divers :CHAMP900 => '01' # Adhérent (toujours passé 01) }.merge(informations_paiement) @client = cl @commande = co end ### # Retourne une url formatée pour être passée au script de la bplc # # Console => @cl = Client.find(:first, :order => "id desc"); @co = @cl.commandes.first; @bplc = BplcPaiement.new(@cl, @co, PAIEMENT_BPLC_TEST) ### def get_url url = uri.dup # Configuration Commerçant champs[:CHAMP004] = "http://www.monsite.com" champs[:CHAMP005] = "http://monsite.com/backend_shopping/ valider_paiement/#{commande.reference}?CHAMPBPX" champs[:CHAMP006] = "Ma Société SARL" champs[:CHAMP007] = "http://monsite.com/confirmation_commande/ #{commande.reference}" champs[:CHAMP008] = "[EMAIL PROTECTED]" champs[:CHAMP010] = "5" # Configuration infos Client champs[:CHAMP100] = "#{client.nom}" champs[:CHAMP101] = "#{client.prenom}" champs[:CHAMP103] = "#{client.adresse.telephone}" unless client.adresse.telephone.empty? champs[:CHAMP104] = "#{client.email}" champs[:CHAMP107] = "#{client.adresse.rue}" champs[:CHAMP108] = "#{client.adresse.ville}" champs[:CHAMP109] = "#{client.adresse.codepostal}" # Configuration des infos de la commande champs[:CHAMP107] = "#{commande.reference}" champs[:CHAMP201] = "#{commande.prix_total.to_s.gsub('.',',')}" url += '?' + champs.collect { |key, val| "#{key}=#{ERB::Util::h(ERB::Util::u(val))}" }.join('&') url end end Une fois l'instance de BplcPaiement créée (@bplc), il suffit de proposer un lien vers le site de paiement de la bplc <%= link_to 'Accéder au site sécurisé de paiement', @bplc.get_url %> ou de rediriger automatiquement dessus. Bon c'est ici ultra couplé avec l'application qui l'utilise, mais le seul intéret de cette classe étant finalement de correctement encoder les champs dans l'url, c'est pas bien difficile à adapter. En espérant que ça serve à quelqu'un. --~--~---------~--~----~------------~-------~--~----~ Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED] -~----------~----~----~----~------~----~------~--~---
