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

process!()
Alias for: verify!
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