Add predefined URLs for CIC and CM and both environments

master
Guillaume DOTT 2013-06-11 11:51:22 +02:00
parent 93d0c9262d
commit 7b428b5b61
1 changed files with 36 additions and 2 deletions

View File

@ -18,16 +18,47 @@ module PaiementCic
API_VERSION = "3.0" API_VERSION = "3.0"
DATE_FORMAT = "%d/%m/%Y:%H:%M:%S" DATE_FORMAT = "%d/%m/%Y:%H:%M:%S"
END_POINTS = {
cic: {
production: 'https://ssl.paiement.cic-banques.fr/paiement.cgi',
test: 'https://ssl.paiement.cic-banques.fr/test/paiement.cgi'
},
cm: {
production: 'https://paiement.creditmutuel.fr/paiement.cgi',
test: 'https://paiement.creditmutuel.fr/test/paiement.cgi'
}
}
DEFAULT_BANK = :cm
DEFAULT_ENV = :test
class << self class << self
attr_accessor :hmac_key, :tpe, :societe, :env attr_accessor :hmac_key, :tpe, :societe
attr_writer :target_url attr_writer :target_url
def configure(&block) def configure(&block)
yield(self) if block_given? yield(self) if block_given?
end end
def bank
@bank || DEFAULT_BANK
end
def bank=(value)
raise UnknownBankError unless END_POINTS.keys.include?(value.to_sym)
@bank = value
end
def env
@env || DEFAULT_ENV
end
def env=(value)
raise UnknownEnvError unless END_POINTS.first.last.include?(value.to_sym)
@env = value
end
def target_url def target_url
@target_url ||= (env == 'production' ? '' : "https://paiement.creditmutuel.fr/test/paiement.cgi") # "https://ssl.paiement.cic-banques.fr/paiement.cgi" @target_url || END_POINTS[self.bank][self.env]
end end
def hmac_sha1(key, data) def hmac_sha1(key, data)
@ -45,4 +76,7 @@ module PaiementCic
Digest::SHA1.hexdigest(k_opad + [Digest::SHA1.hexdigest(k_ipad + data)].pack("H*")) Digest::SHA1.hexdigest(k_opad + [Digest::SHA1.hexdigest(k_ipad + data)].pack("H*"))
end end
end end
class UnknownBankError < Exception; end
class UnknownEnvError < Exception; end
end end