Class: MyActiveMerchants::Gateway
- Inherits:
-
Object
- Object
- MyActiveMerchants::Gateway
- Includes:
- DefaultErrorContainer, ElasticAPM::SpanHelpers
- Defined in:
- app/my_lib/my_active_merchants/gateway.rb
Overview
Charge user's credit card
Instance Attribute Summary collapse
-
#card ⇒ Object
readonly
Returns the value of attribute card.
-
#reservation ⇒ Object
writeonly
Sets the attribute reservation.
-
#user ⇒ Object
writeonly
Sets the attribute user.
Instance Method Summary collapse
- #charge(amount, use_3d_secure: false, ip_address: nil) ⇒ Object
- #hold ⇒ Object
-
#initialize(provider) ⇒ Gateway
constructor
A new instance of Gateway.
- #store_card(token) ⇒ Object
-
#void(reference_no: nil, gb_secret_key: nil) ⇒ Object
if GB Primepay.
Methods included from DefaultErrorContainer
#error, #error_message_simple, #merge_errors
Constructor Details
#initialize(provider) ⇒ Gateway
Returns a new instance of Gateway.
11 12 13 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 11 def initialize(provider) @provider = provider.to_s.to_sym end |
Instance Attribute Details
#card ⇒ Object (readonly)
Returns the value of attribute card.
9 10 11 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 9 def card @card end |
#reservation=(value) ⇒ Object
Sets the attribute reservation
8 9 10 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 8 def reservation=(value) @reservation = value end |
#user=(value) ⇒ Object
Sets the attribute user
8 9 10 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 8 def user=(value) @user = value end |
Instance Method Details
#charge(amount, use_3d_secure: false, ip_address: nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 19 def charge(amount, use_3d_secure: false, ip_address: nil) return false unless valid? success = false ActiveRecord::Base.transaction do save_card(card) gateway = my_gateway.new(reservation, card) case provider when :omise unless gateway.capture_card(amount, ip_address: ip_address, use_3d_secure: use_3d_secure) merge_errors(reservation.errors) raise ActiveRecord::Rollback end when :gb_primepay unless gateway.charge(amount, use_3d_secure: use_3d_secure) merge_errors(reservation.errors) raise ActiveRecord::Rollback end else raise NotImplementedError end success = true end success rescue StandardError => e APMErrorHandler.report(e) false end |
#hold ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 50 def hold return false unless valid? success = false ActiveRecord::Base.transaction do gateway = my_gateway.new(reservation, card) case provider when :omise unless gateway.customer_created? merge_errors(reservation.errors) raise ActiveRecord::Rollback end when :gb_primepay save_card(card) else raise NotImplementedError end success = true end success rescue StandardError => e APMErrorHandler.report(e) false end |
#store_card(token) ⇒ Object
100 101 102 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 100 def store_card(token) @card = token end |
#void(reference_no: nil, gb_secret_key: nil) ⇒ Object
if GB Primepay
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'app/my_lib/my_active_merchants/gateway.rb', line 79 def void(reference_no: nil, gb_secret_key: nil) success = false ActiveRecord::Base.transaction do case provider when :omise my_gateway.void(reference_no) when :gb_primepay my_gateway.void(reference_no, gb_secret_key) else raise NotImplementedError end success = true end APMErrorHandler.report 'can not void', { reference_no: reference_no } success rescue StandardError => e APMErrorHandler.report(e) end |