module Nordea::Siirto::Pay

Errors used by Pay module

Implements Nordea Siirto IBAN payments.

Constants

PARAMS

Accepted parameters

Public Instance Methods

request(params) click to toggle source

@param [Hash] @return [Nordea::Siirto::Request] rubocop:disable MethodLength

# File lib/nordea/siirto/pay.rb, line 34
def request(params)
  request = Nordea::Siirto::Request.new
  request.uri = uri
  request.method = 'POST'
  request.headers = {
    'Accept' => 'application/json',
    'Content-type' => 'application/json',
    'Authorization' => "Bearer #{AccessToken.access_token}"
  }
  request.body = format_params(params).to_json
  Nordea::Siirto.log("Body: #{request.body}")
  request
end
valid_iban?(params) click to toggle source

@param [Hash] @return [Boolean]

# File lib/nordea/siirto/pay.rb, line 69
def valid_iban?(params)
  # It makes sense to check IBAN validity and bank compatibility before
  # sending request
  iban = Iban.new(params[:bene_account_number])
  return false unless iban.validate

  ALLOWED_BIC.include?(iban.bic)
end
valid_payload?(params) click to toggle source

@param [Hash] @return [Boolean] rubocop:disable AbcSize,LineLength

# File lib/nordea/siirto/pay.rb, line 81
def valid_payload?(params)
  return false unless params.is_a?(Hash)

  # convenience lambda for testing conditions
  params_present = lambda do |key|
    (params.keys & PARAMS[key]).size == PARAMS[key].size
  end

  # required params present
  return false unless params_present.call(:required)

  # either person or company params present
  return false if params_present.call(:person) && params_present.call(:company)
  return false unless params_present.call(:person) || params_present.call(:company)

  # must not contain other params than those listed above
  (params.keys - PARAMS.values.flatten).size.zero?
end