Class: Spree::Payment Private
- Includes:
- Processing
- Defined in:
- app/models/spree/payment.rb,
app/models/spree/payment/processing.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Manage and process a payment for an order, from a specific source (e.g. ‘Spree::CreditCard`) using a specific payment method (e.g `Solidus::Gateway::Braintree`).
Defined Under Namespace
Modules: Processing
Constant Summary collapse
- IDENTIFIER_CHARS =
(('A'..'Z').to_a + ('0'..'9').to_a - %w(0 1 I O)).freeze
- NON_RISKY_AVS_CODES =
['B', 'D', 'H', 'J', 'M', 'Q', 'T', 'V', 'X', 'Y'].freeze
- RISKY_AVS_CODES =
['A', 'C', 'E', 'F', 'G', 'I', 'K', 'L', 'N', 'O', 'P', 'R', 'S', 'U', 'W', 'Z'].freeze
Instance Attribute Summary collapse
-
#request_env ⇒ Object
Returns the value of attribute request_env.
Instance Method Summary collapse
-
#actions ⇒ Array<String>
The actions available on this payment.
-
#amount=(amount) ⇒ Object
Sets the amount, parsing it based on i18n settings if it is a string.
-
#can_credit? ⇒ Boolean
True when this payment can be credited.
-
#captured_amount ⇒ BigDecimal
The total amount captured on this payment.
-
#credit_allowed ⇒ BigDecimal
The total amount this payment can be credited.
-
#currency ⇒ String
This payment’s currency.
-
#is_avs_risky? ⇒ Boolean
True when this payment is risky based on address.
-
#is_cvv_risky? ⇒ Boolean
True when this payment is risky based on cvv.
-
#money ⇒ Spree::Money
(also: #display_amount)
This amount of this payment as money object.
-
#offsets_total ⇒ BigDecimal
The total amount of the offsets (for old-style refunds) for this payment.
-
#payment_source ⇒ Object
The source of ths payment.
-
#store_credit? ⇒ Boolean
True when the payment method exists and is a store credit payment method.
-
#transaction_id ⇒ String
This payment’s response code.
-
#uncaptured_amount ⇒ BigDecimal
The total amount left uncaptured on this payment.
Methods included from Processing
#authorize!, #cancel!, #capture!, #gateway_options, #process!, #purchase!, #void_transaction!
Methods inherited from Base
display_includes, #initialize_preference_defaults, page, preference
Methods included from Spree::Preferences::Preferable
#default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference
Instance Attribute Details
#request_env ⇒ Object
Returns the value of attribute request_env.
39 40 41 |
# File 'app/models/spree/payment.rb', line 39 def request_env @request_env end |
Instance Method Details
#actions ⇒ Array<String>
Returns the actions available on this payment.
150 151 152 153 154 |
# File 'app/models/spree/payment.rb', line 150 def actions sa = source_actions sa |= ["failure"] if processing? sa end |
#amount=(amount) ⇒ Object
Sets the amount, parsing it based on i18n settings if it is a string.
119 120 121 122 123 124 125 126 127 |
# File 'app/models/spree/payment.rb', line 119 def amount=(amount) self[:amount] = case amount when String separator = I18n.t('number.currency.format.separator') number = amount.delete("^0-9-#{separator}\.").tr(separator, '.') number.to_d if number.present? end || amount end |
#can_credit? ⇒ Boolean
Returns true when this payment can be credited.
145 146 147 |
# File 'app/models/spree/payment.rb', line 145 def can_credit? credit_allowed > 0 end |
#captured_amount ⇒ BigDecimal
Returns the total amount captured on this payment.
177 178 179 |
# File 'app/models/spree/payment.rb', line 177 def captured_amount capture_events.sum(:amount) end |
#credit_allowed ⇒ BigDecimal
The total amount this payment can be credited.
140 141 142 |
# File 'app/models/spree/payment.rb', line 140 def credit_allowed amount - (offsets_total.abs + refunds.sum(:amount)) end |
#currency ⇒ String
Returns this payment’s currency.
108 |
# File 'app/models/spree/payment.rb', line 108 delegate :currency, to: :order |
#is_avs_risky? ⇒ Boolean
Returns true when this payment is risky based on address.
163 164 165 166 |
# File 'app/models/spree/payment.rb', line 163 def is_avs_risky? return false if avs_response.blank? || NON_RISKY_AVS_CODES.include?(avs_response) true end |
#is_cvv_risky? ⇒ Boolean
Returns true when this payment is risky based on cvv.
169 170 171 172 173 174 |
# File 'app/models/spree/payment.rb', line 169 def is_cvv_risky? return false if cvv_response_code == "M" return false if cvv_response_code.nil? return false if .present? true end |
#money ⇒ Spree::Money Also known as: display_amount
Returns this amount of this payment as money object.
111 112 113 |
# File 'app/models/spree/payment.rb', line 111 def money Spree::Money.new(amount, { currency: currency }) end |
#offsets_total ⇒ BigDecimal
The total amount of the offsets (for old-style refunds) for this payment.
132 133 134 |
# File 'app/models/spree/payment.rb', line 132 def offsets_total offsets.pluck(:amount).sum end |
#payment_source ⇒ Object
Returns the source of ths payment.
157 158 159 160 |
# File 'app/models/spree/payment.rb', line 157 def payment_source res = source.is_a?(Payment) ? source.source : source res || payment_method end |
#store_credit? ⇒ Boolean
Returns true when the payment method exists and is a store credit payment method.
187 188 189 |
# File 'app/models/spree/payment.rb', line 187 def store_credit? payment_method.try!(:store_credit?) end |
#transaction_id ⇒ String
Returns this payment’s response code.
103 104 105 |
# File 'app/models/spree/payment.rb', line 103 def transaction_id response_code end |
#uncaptured_amount ⇒ BigDecimal
Returns the total amount left uncaptured on this payment.
182 183 184 |
# File 'app/models/spree/payment.rb', line 182 def uncaptured_amount amount - captured_amount end |