Ti contatteremo per farti scoprire come persone appassionate e tecnologie giuste possono aiutare la tua impresa a crescere, di più e meglio.
Durante lo sviluppo del sito di commercio elettronico per il cliente That's Gentile è nata la necessità di potersi interfacciare con GestPay, il servizio di commercio elettronico di Banca Sella, uno dei più diffusi in Italia.
EasyNolo fornisce una classe Java, GestPayCryptHS, per gestire questo tipo di transazioni, ma noi preferiamo lavorare in Ruby, e così abbiamo scritto RGestPay.
RGestPay è un porting in Ruby delle funzionalità offerte da GestPayCryptHS. Porting solo delle funzionalità, e non della classe, perché abbiamo un pò cambiato l'approccio al problema, rendendolo più "Ruby".
RGestPay è un modulo che contiene due classi:
GestPay::TransactionData
GestPay::CryptRequest
GestPay::TransactionData contiene informazioni relative alla transazione, ai dati del cliente e alle risposte del server, mentre GestPay::CryptRequest si occupa di gestire gli scambi di informazioni crittate con il server.
require 'gest_pay' # Istanziamo un nuovo CryptRequest c = GestPay::CryptRequest.new(il_mio_login) # Istanziamo un nuovo TransactionData # Amount va indicato secondo il formato nnn.xx # Currency richiede un codice, 242 corrisponde # all'euro, gli altri codici sono disponibili # nel manuale di integrazione di GestPay, che # potete trovare su EasyNolo.it t = GestPay::TransactionData.new( :amount => 1.34 :currency => 242 :shop_transaction_id => "id_transazione" ) # Validiamo i dati della transazione ed otteniamo # la stringa crittata t = c.encrypt(t) # Controlliamo che tutto sia andato a buon fine e # non ci siano errori unless t[:error_code].nil? raise "ERROR" end # Questa è la stringa crittata che deve essere usata # come parametro della chiamata al sito di GestPay # per ilpagamento vero e proprio puts t[:encrypted_str] # => "VERY LONG STRING" # Una volta che l'utente effettua la transazione # otteniamo da GestPay una stringa crittata (sia # mediante la chiamata s2s che mediante la # chiamata ok / notok) t = c.decrypt("enorme_stringa_crittata") puts t[:transaction_result] # => "OK"
RGestPay è rilasciato con la GNU General Public License.