diff --git a/lib/paiement_cic.rb b/lib/paiement_cic.rb
index 8dbf7b1..3dc5766 100644
--- a/lib/paiement_cic.rb
+++ b/lib/paiement_cic.rb
@@ -21,16 +21,16 @@ class PaiementCic
@@hmac_key = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ" # clé extraite grâce à extract2HmacSha1.html fourni par le Crédit Mutuel
cattr_accessor :hmac_key
-
+
@@target_url = "https://paiement.creditmutuel.fr/test/paiement.cgi" # "https://ssl.paiement.cic-banques.fr/paiement.cgi"
cattr_accessor :target_url
-
+
@@tpe = "123456"
cattr_accessor :tpe
-
+
@@societe = "masociete"
cattr_accessor :societe
-
+
@@url_ok = ""
cattr_accessor :url_ok
@@ -63,52 +63,52 @@ class PaiementCic
hmac_key.valid_hmac?(mac_string, params['MAC'])
end
-
+
# Check if the HMAC matches the HMAC of the data string
- def valid_hmac?(mac_string, sent_mac)
- computeHMACSHA1(mac_string) == sent_mac.downcase
- end
-
+ def valid_hmac?(mac_string, sent_mac)
+ computeHMACSHA1(mac_string) == sent_mac.downcase
+ end
+
# Return the HMAC for a data string
- def computeHMACSHA1(data)
- hmac_sha1(usable_key(self), data).downcase
- end
-
+ def computeHMACSHA1(data)
+ hmac_sha1(usable_key(self), data).downcase
+ end
+
def hmac_sha1(key, data)
- length = 64
+ length = 64
- if (key.length > length)
- key = [Digest::SHA1.hexdigest(key)].pack("H*")
- end
+ if (key.length > length)
+ key = [Digest::SHA1.hexdigest(key)].pack("H*")
+ end
- key = key.ljust(length, 0.chr)
- ipad = ''.ljust(length, 54.chr)
- opad = ''.ljust(length, 92.chr)
+ key = key.ljust(length, 0.chr)
+ ipad = ''.ljust(length, 54.chr)
+ opad = ''.ljust(length, 92.chr)
- k_ipad = key ^ ipad
- k_opad = key ^ opad
+ k_ipad = key ^ ipad
+ k_opad = key ^ opad
- #Digest::SHA1.hexdigest(k_opad + [Digest::SHA1.hexdigest(k_ipad + sData)].pack("H*"))
- OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new("sha1"), key, data)
- end
+ #Digest::SHA1.hexdigest(k_opad + [Digest::SHA1.hexdigest(k_ipad + sData)].pack("H*"))
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new("sha1"), key, data)
+ end
private
- # Return the key to be used in the hmac function
- def usable_key(payement)
+ # Return the key to be used in the hmac function
+ def usable_key(payement)
- hex_string_key = payement.hmac_key[0..37]
- hex_final = payement.hmac_key[38..40] + "00";
+ hex_string_key = payement.hmac_key[0..37]
+ hex_final = payement.hmac_key[38..40] + "00";
- cca0 = hex_final[0].ord
+ cca0 = hex_final[0].ord
- if cca0 > 70 && cca0 < 97
- hex_string_key += (cca0 - 23).chr + hex_final[1..2]
- elsif hex_final[1..2] == "M"
- hex_string_key += hex_final[0..1] + "0"
- else
- hex_string_key += hex_final[0..2]
- end
+ if cca0 > 70 && cca0 < 97
+ hex_string_key += (cca0 - 23).chr + hex_final[1..2]
+ elsif hex_final[1..2] == "M"
+ hex_string_key += hex_final[0..1] + "0"
+ else
+ hex_string_key += hex_final[0..2]
+ end
- [hex_string_key].pack("H*")
- end
+ [hex_string_key].pack("H*")
+ end
end
diff --git a/lib/paiement_cic/form_helper.rb b/lib/paiement_cic/form_helper.rb
index 32b768c..429a433 100644
--- a/lib/paiement_cic/form_helper.rb
+++ b/lib/paiement_cic/form_helper.rb
@@ -7,11 +7,11 @@ module PaiementCic::FormHelper
sDate = Time.now.strftime("%d/%m/%Y:%H:%M:%S")
chaine = [oMac.tpe, sDate, oa["montant"], oa["reference"].to_s, oa["texte-libre"], oMac.version, "FR", oMac.societe, "", "", "", "", "", "", "", "", "", "", ""].join("*")
chaineMAC = oMac.computeHMACSHA1(chaine)
-
+
url_retour = options[:url_retour] || bank_callback_order_transactions_url
url_retour_ok = options[:url_retour_ok] || bank_callback_order_transactions_url(order)
url_retour_err = options[:url_retour_err] || bank_err_order_transaction_url(order)
-
+
html = '