class ClientForPoslynx::FakePosTerminal::ConsoleUserInterface::RequestProcessors::DebitCardSaleProcessor

Public Instance Methods

apply_request_response_passthrough() click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/request_processors/debit_card_sale_processor.rb, line 36
def apply_request_response_passthrough
  response.merchant_supplied_id = request.merchant_supplied_id
  response.client_id            = request.client_id
  response.amount               = request.amount
  response.cash_back            = request.cash_back
end
call() click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/request_processors/debit_card_sale_processor.rb, line 11
def call
  request.cash_back = '0.00' if "#{request.cash_back}".strip.empty?

  fetch_card_swipe ->() {
    fetch_sale_confirmation(
      ->() {
        fetch_pin method(:respond_with_success)
      },
      method( :respond_with_cancelled )
    )
  }
end
fetch_fake_pin_entry(after) click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/request_processors/debit_card_sale_processor.rb, line 51
def fetch_fake_pin_entry(after)
  puts
  print "Press enter to pretend to enter a PIN: "
  save_cursor_position
  UserRawTextLineFetcher.new(
    ui_context,
    ->(entry) { true },
    ->(entry) {
      after.call
    }
  ).call
end
fetch_pin(after) click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/request_processors/debit_card_sale_processor.rb, line 43
def fetch_pin(after)
  show_pin_request
  fetch_fake_pin_entry ->() {
    show_pin_request filled_in: true
    after.call
  }
end
show_pin_request(options = {}) click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/request_processors/debit_card_sale_processor.rb, line 64
def show_pin_request(options = {})
  show_as_filled_in = options.fetch(:filled_in){ false }
  input_box = show_as_filled_in ? '[ * * * * ]' : '[ _ _ _ _ ]'
  content = content_fmt.multiline_message( [
    'Please enter your PIN...',
    input_box
  ])
  display_content content, options
end
total_amount() click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/request_processors/debit_card_sale_processor.rb, line 30
def total_amount
  '%.2f' % (
    BigDecimal( request.amount ) + BigDecimal( request.cash_back )
  )
end
use_card_type() click to toggle source
# File lib/client_for_poslynx/fake_pos_terminal/console_user_interface/request_processors/debit_card_sale_processor.rb, line 24
def use_card_type
  # Precidia docs say value is 'OtherCard' for debit, but
  # in practice, found result to be 'Debit' instead.
  'Debit'
end