class Borika::Response
Attributes
hash[R]
Public Class Methods
new(response)
click to toggle source
# File lib/borika/response.rb, line 9 def initialize(response) str = Base64.decode64 response unless str.bytesize == 184 raise InvalidResponseSizeError.new "Borica Response has invalid size" end data = str.byteslice(0,56) sign = str.byteslice(56,128) cert = OpenSSL::X509::Certificate.new(Borika.config.public_key) pkeyid = cert.public_key unless pkeyid.verify(OpenSSL::Digest::SHA1.new, sign, data) raise InvalidSignatureError.new "Borica Response RSA SHA1 Sign Verification failed" end # get data @hash = { order_id: str.byteslice(36,15), status: str.byteslice(51,2) == '00' ? :success : :failed, transaction_code: str.byteslice(0,2), transaction_time: str.byteslice(2,14), amount: str.byteslice(16,12), terminal_id: str.byteslice(28,8), error_code: str.byteslice(51,2), protocol_version: str.byteslice(53,3), original_response: response } end