Class: Docdata::Order::ExtendedStatusResponse

Inherits:
Response
  • Object
show all
Defined in:
lib/docdata/order/response.rb

Overview

Response to a extended status operation.

Instance Attribute Summary

Attributes inherited from Response

#options, #response

Instance Method Summary collapse

Methods inherited from Response

#body, #error_code, #error_message, #initialize

Constructor Details

This class inherits a constructor from Docdata::Order::Response

Instance Method Details

#approximate_totalsObject



227
228
229
# File 'lib/docdata/order/response.rb', line 227

def approximate_totals
  report[:approximate_totals]
end

#authorizationObject



200
201
202
# File 'lib/docdata/order/response.rb', line 200

def authorization
  payment[:authorization] if payment
end

#authorization_statusObject

The state of the authorization. Current known values:

              NEW   This is a new payment without any actions performed on it yet.
    RISK_CHECK_OK   For this payment the risk check was okay.
RISK_CHECK_FAILED   The risk check for this payment triggered.
          STARTED   The user has provided details and is authenticated.
      START_ERROR   The payment system could not start the payment due to a technical error.
    AUTHENTICATED   The shopper is authenticated by the acquirer.

REDIRECTED_FOR_AUTHENTICATION The shopper is redirected to the acquirer web-site for authentication.

       AUTHENTICATION_FAILED   The shopper is not authenticated by the acquirer.
        AUTHENTICATION_ERROR   Unable to do the authentication of the shopper by the acquirer.
                  AUTHORIZED   This payment is authorized.
REDIRECTED_FOR_AUTHORIZATION   The shopper is redirected to the acquirer web-site for authorization.
     AUTHORIZATION_REQUESTED   Requested authorization for this payment, waiting for a notification from acquirer.
        AUTHORIZATION_FAILED   The payment was not authorized due to a functional error.
         AUTHORIZATION_ERROR   Unable to do the payment authorization due to a technical error.
                    CANCELED   The payment is canceled.
               CANCEL_FAILED   Payment is not canceled, due to functional error.
                CANCEL_ERROR   Payment is not canceled, due to technical error.
            CANCEL_REQUESTED   A cancel request sent to acquirer.


223
224
225
# File 'lib/docdata/order/response.rb', line 223

def authorization_status
  authorization[:status] if authorization
end

#cancelled?Boolean

Returns:



284
285
286
# File 'lib/docdata/order/response.rb', line 284

def cancelled?
  authorization_status == "CANCELED"
end

#charged_back?Boolean

Returns:



271
272
273
# File 'lib/docdata/order/response.rb', line 271

def charged_back?
  total_registered == total_charged_back
end

#consumer_bicObject



299
300
301
302
303
304
305
306
307
308
# File 'lib/docdata/order/response.rb', line 299

def consumer_bic
  case payment_method
  when PaymentMethod::IDEAL
    payment_info = payment[:extended][:i_deal_payment_info]
    payment_info[:shopper_bank_account][:bic] if payment_info && payment_info[:shopper_bank_account]
  when PaymentMethod::SEPA_DIRECT_DEBIT
    payment_info = payment[:extended][:sepa_direct_debit_payment_info]
    payment_info[:bic] if payment_info
  end
end

#consumer_ibanObject



288
289
290
291
292
293
294
295
296
297
# File 'lib/docdata/order/response.rb', line 288

def consumer_iban
  case payment_method
  when PaymentMethod::IDEAL
    payment_info = payment[:extended][:i_deal_payment_info]
    payment_info[:shopper_bank_account][:iban] if payment_info && payment_info[:shopper_bank_account]
  when PaymentMethod::SEPA_DIRECT_DEBIT
    payment_info = payment[:extended][:sepa_direct_debit_payment_info]
    payment_info[:iban] if payment_info
  end
end

#consumer_nameObject



310
311
312
313
314
315
# File 'lib/docdata/order/response.rb', line 310

def consumer_name
  if payment_method == PaymentMethod::IDEAL
    payment_info = payment[:extended][:i_deal_payment_info]
    payment_info[:holder_name] if payment_info
  end
end

#dataObject



161
162
163
# File 'lib/docdata/order/response.rb', line 161

def data
  body[:extended_status_response]
end

#error?Boolean

Returns:



169
170
171
# File 'lib/docdata/order/response.rb', line 169

def error?
  data.key?(:status_errors)
end

#errorsObject



173
174
175
# File 'lib/docdata/order/response.rb', line 173

def errors
  data[:status_errors]
end

#mandate_numberObject



317
318
319
320
321
322
# File 'lib/docdata/order/response.rb', line 317

def mandate_number
  if payment_method == PaymentMethod::SEPA_DIRECT_DEBIT
    payment_info = payment[:extended][:sepa_direct_debit_payment_info]
    payment_info[:mandate_number] if payment_info
  end
end

#paid?Boolean

Returns:



263
264
265
# File 'lib/docdata/order/response.rb', line 263

def paid?
  (total_registered == total_captured) || (total_registered == total_acquirer_approved)
end

#paymentObject



181
182
183
184
185
186
187
188
189
190
# File 'lib/docdata/order/response.rb', line 181

def payment
  payment = report[:payment]

  # When multiple payments are found, return the payment with the newest ID.
  if payment.is_a?(Array)
    payment.max_by { |key, _value| key[:id] }
  else
    payment
  end
end

#payment_idObject



192
193
194
# File 'lib/docdata/order/response.rb', line 192

def payment_id
  payment[:id] if payment
end

#payment_methodObject



196
197
198
# File 'lib/docdata/order/response.rb', line 196

def payment_method
  payment[:payment_method] if payment
end

#refunded?Boolean

Returns:



267
268
269
# File 'lib/docdata/order/response.rb', line 267

def refunded?
  total_registered == total_refunded
end

#reportObject



177
178
179
# File 'lib/docdata/order/response.rb', line 177

def report
  data[:status_success][:report]
end

#reversed?Boolean

Returns:



275
276
277
# File 'lib/docdata/order/response.rb', line 275

def reversed?
  total_registered == total_reversed
end

#started?Boolean

Returns:



279
280
281
282
# File 'lib/docdata/order/response.rb', line 279

def started?
  (authorization_status == "NEW" || authorization_status == "STARTED" ||
    (total_captured.zero? && total_acquirer_approved.zero?)) && authorization_status != "CANCELED"
end

#success?Boolean

Returns:



165
166
167
# File 'lib/docdata/order/response.rb', line 165

def success?
  data.key?(:status_success)
end

#total_acquirer_approvedObject



243
244
245
# File 'lib/docdata/order/response.rb', line 243

def total_acquirer_approved
  to_decimal(approximate_totals[:total_acquirer_approved])
end

#total_acquirer_pendingObject



239
240
241
# File 'lib/docdata/order/response.rb', line 239

def total_acquirer_pending
  to_decimal(approximate_totals[:total_acquirer_pending])
end

#total_capturedObject



247
248
249
# File 'lib/docdata/order/response.rb', line 247

def total_captured
  to_decimal(approximate_totals[:total_captured])
end

#total_charged_backObject



259
260
261
# File 'lib/docdata/order/response.rb', line 259

def total_charged_back
  to_decimal(approximate_totals[:total_chargedback])
end

#total_refundedObject



251
252
253
# File 'lib/docdata/order/response.rb', line 251

def total_refunded
  to_decimal(approximate_totals[:total_refunded])
end

#total_registeredObject



231
232
233
# File 'lib/docdata/order/response.rb', line 231

def total_registered
  to_decimal(approximate_totals[:total_registered])
end

#total_reversedObject



255
256
257
# File 'lib/docdata/order/response.rb', line 255

def total_reversed
  to_decimal(approximate_totals[:total_reversed])
end

#total_shopper_pendingObject



235
236
237
# File 'lib/docdata/order/response.rb', line 235

def total_shopper_pending
  to_decimal(approximate_totals[:total_shopper_pending])
end