Class: Vpago::PaymentFinder

Inherits:
Object
  • Object
show all
Defined in:
app/services/vpago/payment_finder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params_hash) ⇒ PaymentFinder



5
6
7
# File 'app/services/vpago/payment_finder.rb', line 5

def initialize(params_hash)
  @params_hash = params_hash
end

Instance Attribute Details

#params_hashObject (readonly)

Returns the value of attribute params_hash.



3
4
5
# File 'app/services/vpago/payment_finder.rb', line 3

def params_hash
  @params_hash
end

Instance Method Details

#find_and_verifyObject



9
10
11
12
13
14
# File 'app/services/vpago/payment_finder.rb', line 9

def find_and_verify
  find_and_verify!
rescue StandardError, ActiveRecord::RecordNotFound => e
  Rails.logger.error("PaymentJwtVerifier#find_and_verify error: #{e.class} - #{e.message}")
  nil
end

#find_and_verify!Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/services/vpago/payment_finder.rb', line 16

def find_and_verify!
  if vattanac_mini_app_payload?
    payload = Vpago::VattanacMiniAppDataHandler.new.decrypt_data(@params_hash[:data])
    payment = Spree::Payment.find_by!(number: payload['paymentId'])
    payment.update(transaction_response: payload)
    payment
  else
    order = Spree::Order.find_by!(number: params_hash[:order_number])
    verify_jwt!(order)

    Spree::Payment.find_by!(number: params_hash[:payment_number])
  end
end

#vattanac_mini_app_payload?Boolean



34
35
36
# File 'app/services/vpago/payment_finder.rb', line 34

def vattanac_mini_app_payload?
  params_hash[:data].present?
end

#verify_jwt!(order) ⇒ Object



30
31
32
# File 'app/services/vpago/payment_finder.rb', line 30

def verify_jwt!(order)
  JWT.decode(params_hash[:order_jwt_token], order.token, 'HS256')
end