Class: Vpago::PaymentFinder
- Inherits:
-
Object
- Object
- Vpago::PaymentFinder
- Defined in:
- app/services/vpago/payment_finder.rb
Instance Attribute Summary collapse
-
#params_hash ⇒ Object
readonly
Returns the value of attribute params_hash.
Instance Method Summary collapse
- #find_and_verify ⇒ Object
- #find_and_verify! ⇒ Object
-
#initialize(params_hash) ⇒ PaymentFinder
constructor
A new instance of PaymentFinder.
- #vattanac_mini_app_payload? ⇒ Boolean
- #verify_jwt!(order) ⇒ Object
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_hash ⇒ Object (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_verify ⇒ Object
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 |