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]
-~----------~----~----~----~------~----~------~--~---

Répondre à