Class: Tapsilat::OrderResponse
- Inherits:
-
Object
- Object
- Tapsilat::OrderResponse
- Defined in:
- lib/tapsilat/orders.rb
Overview
Order response wrapper class to handle API response data
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
Instance Method Summary collapse
- #amount ⇒ Object
- #basket_items ⇒ Object
- #billing_address ⇒ Object
- #buyer ⇒ Object
- #cancelled? ⇒ Boolean
- #checkout_design ⇒ Object
- #checkout_url ⇒ Object
- #completed? ⇒ Boolean
- #conversation_id ⇒ Object
- #created_at ⇒ Object
- #currency ⇒ Object
- #external_reference_id ⇒ Object
- #failed? ⇒ Boolean
-
#initialize(response_data) ⇒ OrderResponse
constructor
A new instance of OrderResponse.
- #locale ⇒ Object
- #metadata ⇒ Object
-
#paid? ⇒ Boolean
Helper methods for common checks.
- #paid_amount ⇒ Object
- #payment_failure_url ⇒ Object
- #payment_options ⇒ Object
- #payment_success_url ⇒ Object
- #payment_terms ⇒ Object
- #pending_payment? ⇒ Boolean
- #reference_id ⇒ Object
- #refunded? ⇒ Boolean
- #refunded_amount ⇒ Object
- #shipping_address ⇒ Object
- #status ⇒ Object
- #status_enum ⇒ Object
- #status_text ⇒ Object
- #to_h ⇒ Object
- #to_json(*args) ⇒ Object
- #total ⇒ Object
-
#total_paid_amount_from_items ⇒ Object
Get total paid amount from basket items.
-
#total_refundable_amount ⇒ Object
Get total refundable amount from basket items.
Constructor Details
#initialize(response_data) ⇒ OrderResponse
449 450 451 452 453 454 455 456 457 458 459 460 461 462 |
# File 'lib/tapsilat/orders.rb', line 449 def initialize(response_data) @data = case response_data when String begin JSON.parse(response_data) rescue JSON::ParserError => e raise OrderError, "Invalid JSON response: #{e.}" end when Hash response_data else raise OrderError, "Invalid response data type: #{response_data.class}" end end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
447 448 449 |
# File 'lib/tapsilat/orders.rb', line 447 def data @data end |
Instance Method Details
#amount ⇒ Object
476 477 478 |
# File 'lib/tapsilat/orders.rb', line 476 def amount @data['amount']&.to_f end |
#basket_items ⇒ Object
524 525 526 |
# File 'lib/tapsilat/orders.rb', line 524 def basket_items @data['basket_items'] || [] end |
#billing_address ⇒ Object
520 521 522 |
# File 'lib/tapsilat/orders.rb', line 520 def billing_address @data['billing_address'] end |
#buyer ⇒ Object
512 513 514 |
# File 'lib/tapsilat/orders.rb', line 512 def buyer @data['buyer'] end |
#cancelled? ⇒ Boolean
565 566 567 |
# File 'lib/tapsilat/orders.rb', line 565 def cancelled? status == 8 end |
#checkout_design ⇒ Object
528 529 530 |
# File 'lib/tapsilat/orders.rb', line 528 def checkout_design @data['checkout_design'] end |
#checkout_url ⇒ Object
544 545 546 |
# File 'lib/tapsilat/orders.rb', line 544 def checkout_url @data['checkout_url'] end |
#completed? ⇒ Boolean
569 570 571 |
# File 'lib/tapsilat/orders.rb', line 569 def completed? status == 9 end |
#conversation_id ⇒ Object
548 549 550 |
# File 'lib/tapsilat/orders.rb', line 548 def conversation_id @data['conversation_id'] end |
#created_at ⇒ Object
492 493 494 |
# File 'lib/tapsilat/orders.rb', line 492 def created_at @data['created_at'] end |
#currency ⇒ Object
496 497 498 |
# File 'lib/tapsilat/orders.rb', line 496 def currency @data['currency'] end |
#external_reference_id ⇒ Object
472 473 474 |
# File 'lib/tapsilat/orders.rb', line 472 def external_reference_id @data['external_reference_id'] end |
#failed? ⇒ Boolean
581 582 583 |
# File 'lib/tapsilat/orders.rb', line 581 def failed? [11, 12, 13].include?(status) end |
#locale ⇒ Object
464 465 466 |
# File 'lib/tapsilat/orders.rb', line 464 def locale @data['locale'] end |
#metadata ⇒ Object
556 557 558 |
# File 'lib/tapsilat/orders.rb', line 556 def @data['metadata'] || [] end |
#paid? ⇒ Boolean
Helper methods for common checks
561 562 563 |
# File 'lib/tapsilat/orders.rb', line 561 def paid? status == 3 end |
#paid_amount ⇒ Object
484 485 486 |
# File 'lib/tapsilat/orders.rb', line 484 def paid_amount @data['paid_amount']&.to_f end |
#payment_failure_url ⇒ Object
536 537 538 |
# File 'lib/tapsilat/orders.rb', line 536 def payment_failure_url @data['payment_failure_url'] end |
#payment_options ⇒ Object
552 553 554 |
# File 'lib/tapsilat/orders.rb', line 552 def @data['payment_options'] || [] end |
#payment_success_url ⇒ Object
540 541 542 |
# File 'lib/tapsilat/orders.rb', line 540 def payment_success_url @data['payment_success_url'] end |
#payment_terms ⇒ Object
532 533 534 |
# File 'lib/tapsilat/orders.rb', line 532 def payment_terms @data['payment_terms'] || [] end |
#pending_payment? ⇒ Boolean
577 578 579 |
# File 'lib/tapsilat/orders.rb', line 577 def pending_payment? [2, 7].include?(status) end |
#reference_id ⇒ Object
468 469 470 |
# File 'lib/tapsilat/orders.rb', line 468 def reference_id @data['reference_id'] end |
#refunded? ⇒ Boolean
573 574 575 |
# File 'lib/tapsilat/orders.rb', line 573 def refunded? [10, 15].include?(status) end |
#refunded_amount ⇒ Object
488 489 490 |
# File 'lib/tapsilat/orders.rb', line 488 def refunded_amount @data['refunded_amount']&.to_f end |
#shipping_address ⇒ Object
516 517 518 |
# File 'lib/tapsilat/orders.rb', line 516 def shipping_address @data['shipping_address'] end |
#status ⇒ Object
500 501 502 |
# File 'lib/tapsilat/orders.rb', line 500 def status @data['status']&.to_i end |
#status_enum ⇒ Object
508 509 510 |
# File 'lib/tapsilat/orders.rb', line 508 def status_enum @data['status_enum'] end |
#status_text ⇒ Object
504 505 506 |
# File 'lib/tapsilat/orders.rb', line 504 def status_text Orders::ORDER_STATUS[status] || 'Unknown' end |
#to_h ⇒ Object
595 596 597 |
# File 'lib/tapsilat/orders.rb', line 595 def to_h @data end |
#to_json(*args) ⇒ Object
599 600 601 |
# File 'lib/tapsilat/orders.rb', line 599 def to_json(*args) @data.to_json(*args) end |
#total ⇒ Object
480 481 482 |
# File 'lib/tapsilat/orders.rb', line 480 def total @data['total']&.to_f end |
#total_paid_amount_from_items ⇒ Object
Get total paid amount from basket items
591 592 593 |
# File 'lib/tapsilat/orders.rb', line 591 def total_paid_amount_from_items basket_items.sum { |item| item['paid_amount'].to_f } end |
#total_refundable_amount ⇒ Object
Get total refundable amount from basket items
586 587 588 |
# File 'lib/tapsilat/orders.rb', line 586 def total_refundable_amount basket_items.sum { |item| item['refundable_amount'].to_f } end |