class PerfectMoneyMerchant::SCIResponse
secret_key
= SFndfsdJNFjern2D123raFDF2
Attributes
secret_key[RW]
Public Class Methods
new(params)
click to toggle source
Initializes PerfectMoneyMerchant::SCI::Response object @param [Hash] params SCI-returned-params @option params [String] :payment_id Payment ID @option params [String] :payment_amount Payment amount @option params [String] :payment_units Payment currency @option params [String] :payment_batch_num Payment batch number @option params [String] :payee_account Payee account code number @option params [String] :payer_account Payer account code number @option params [String] :timestampgmt Payment performance date @option params [String] :v2_hash Payment verification hash @option params [String] :verification_code Payment verification code @option params [String] :verification_fields Payment verification fields
# File lib/perfect_money_merchant/sci_response.rb, line 30 def initialize(params) params.each_pair do |param_name, param_value| singleton_class.class_eval { attr_reader param_name } instance_variable_set("@#{param_name}", param_value) end # self.secret_key = PerfectMoneyMerchant::Account::Query.new.find_by_unit_code_number(payee_account).try(:secret_key) end
Public Instance Methods
set_secret_key(secret_key)
click to toggle source
# File lib/perfect_money_merchant/sci_response.rb, line 39 def set_secret_key(secret_key) @secret_key = secret_key end
verify!()
click to toggle source
# File lib/perfect_money_merchant/sci_response.rb, line 43 def verify! check_on_secret_key! check_on_verification_code! check_on_v2_hash! check_on_payment_purpose! true end
Also aliased as: process!
Private Instance Methods
check_on_payment_purpose!()
click to toggle source
# File lib/perfect_money_merchant/sci_response.rb, line 55 def check_on_payment_purpose! if respond_to?(:payment_purpose) if payment_purpose.nil? or payment_purpose.blank? raise StandardError.new('payment_purpose is nil') end else raise StandardError.new('payment_purpose is not defined') end end
check_on_secret_key!()
click to toggle source
# File lib/perfect_money_merchant/sci_response.rb, line 66 def check_on_secret_key! if respond_to?(:secret_key) if secret_key.nil? raise StandardError.new('secret key is nil') end else raise StandardError.new('secret key is not defined') end end
check_on_v2_hash!()
click to toggle source
# File lib/perfect_money_merchant/sci_response.rb, line 88 def check_on_v2_hash! v2_hash = Digest::MD5.hexdigest( [ payment_id, payee_account, payment_amount, payment_units, payment_batch_num, payer_account, Digest::MD5.hexdigest(secret_key).upcase, timestampgmt ].join(':') ).upcase unless self.v2_hash == v2_hash raise StandardError.new('v2_hash invalid') end end
check_on_verification_code!()
click to toggle source
# File lib/perfect_money_merchant/sci_response.rb, line 77 def check_on_verification_code! if respond_to?(:verification_code) and respond_to?(:verification_fields) verification_values = verification_fields.split(' ').map { |field| instance_variable_get("@#{field}") } unless PerfectMoneyMerchant::SCI.generate_verification_code(verification_values) == verification_code raise StandardError.new('verification code invalid') end else raise StandardError.new('verification code or verification_fields is empty') end end
create_payment!()
click to toggle source
# File lib/perfect_money_merchant/sci_response.rb, line 107 def create_payment! PerfectMoneyMerchant::Payment.create!( payment_batch_num: payment_batch_num, payment_id: payment_id, payment_amount: payment_amount, payer_account: payer_account, payee_account: payee_account ) end