class PaymentsApi::PaymentsController

PaymentsController

Public Class Methods

new(config, http_call_back: nil) click to toggle source
Calls superclass method PaymentsApi::BaseController::new
# File lib/payments_api/controllers/payments_controller.rb, line 9
def initialize(config, http_call_back: nil)
  super(config, http_call_back: http_call_back)
end

Public Instance Methods

approve_payment(bank_id, payment_id) click to toggle source

Approves a Payment to be sent @param [String] bank_id Required parameter: Bank ID (Routing Number) @param [Integer] payment_id Required parameter: ID of payment to approve @return [void] response from the API call

# File lib/payments_api/controllers/payments_controller.rb, line 174
def approve_payment(bank_id,
                    payment_id)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/payments/{paymentId}/approve'
  _query_builder = APIHelper.append_url_with_template_parameters(
    _query_builder,
    'paymentId' => { 'value' => payment_id, 'encode' => true }
  )
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'bankId' => bank_id
  }

  # Prepare and execute HttpRequest.
  _request = config.http_client.post(
    _query_url,
    headers: _headers
  )
  CustomHeaderAuth.apply(config, _request)
  _response = execute_request(_request)

  # Validate response against endpoint and global error codes.
  if _response.status_code == 400
    raise RequestErrorException.new(
      'Error in Request',
      _response
    )
  elsif _response.status_code == 403
    raise APIException.new(
      'Forbidden',
      _response
    )
  elsif _response.status_code == 500
    raise RequestErrorException.new(
      'System Error',
      _response
    )
  end
  validate_response(_response)
end
cancel_payment(bank_id, payment_id) click to toggle source

Attempts to cancel a Payment. Does not automatically cancel the linked Quote. @param [String] bank_id Required parameter: Bank ID (Routing Number) @param [Integer] payment_id Required parameter: ID of payment to cancel @return [void] response from the API call

# File lib/payments_api/controllers/payments_controller.rb, line 69
def cancel_payment(bank_id,
                   payment_id)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/payments/{paymentId}'
  _query_builder = APIHelper.append_url_with_template_parameters(
    _query_builder,
    'paymentId' => { 'value' => payment_id, 'encode' => true }
  )
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'bankId' => bank_id
  }

  # Prepare and execute HttpRequest.
  _request = config.http_client.delete(
    _query_url,
    headers: _headers
  )
  CustomHeaderAuth.apply(config, _request)
  _response = execute_request(_request)

  # Validate response against endpoint and global error codes.
  if _response.status_code == 400
    raise RequestErrorException.new(
      'Error in Request',
      _response
    )
  elsif _response.status_code == 403
    raise APIException.new(
      'Forbidden',
      _response
    )
  elsif _response.status_code == 500
    raise RequestErrorException.new(
      'System Error',
      _response
    )
  end
  validate_response(_response)
end
create_payment(bank_id, body) click to toggle source

Creates a new Payment @param [String] bank_id Required parameter: Bank ID (Routing Number) @param [Payment] body Required parameter: Create Payment Body Data @return [Payment] response from the API call

# File lib/payments_api/controllers/payments_controller.rb, line 17
def create_payment(bank_id,
                   body)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/payments'
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'accept' => 'application/json',
    'content-type' => 'application/json; charset=utf-8',
    'bankId' => bank_id
  }

  # Prepare and execute HttpRequest.
  _request = config.http_client.post(
    _query_url,
    headers: _headers,
    parameters: body.to_json
  )
  CustomHeaderAuth.apply(config, _request)
  _response = execute_request(_request)

  # Validate response against endpoint and global error codes.
  if _response.status_code == 400
    raise RequestErrorException.new(
      'Error in Request',
      _response
    )
  elsif _response.status_code == 403
    raise APIException.new(
      'Forbidden',
      _response
    )
  elsif _response.status_code == 500
    raise RequestErrorException.new(
      'System Error',
      _response
    )
  end
  validate_response(_response)

  # Return appropriate response type.
  decoded = APIHelper.json_deserialize(_response.raw_body)
  Payment.from_hash(decoded)
end
update_payment(bank_id, payment_id, body) click to toggle source

Update the data for a Payment before it is approved or sent @param [String] bank_id Required parameter: Bank ID (Routing Number) @param [Integer] payment_id Required parameter: ID of payment to update @param [Payment] body Required parameter: Update Payment Body Data @return [Payment] response from the API call

# File lib/payments_api/controllers/payments_controller.rb, line 118
def update_payment(bank_id,
                   payment_id,
                   body)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/payments/{paymentId}'
  _query_builder = APIHelper.append_url_with_template_parameters(
    _query_builder,
    'paymentId' => { 'value' => payment_id, 'encode' => true }
  )
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'accept' => 'application/json',
    'content-type' => 'application/json; charset=utf-8',
    'bankId' => bank_id
  }

  # Prepare and execute HttpRequest.
  _request = config.http_client.put(
    _query_url,
    headers: _headers,
    parameters: body.to_json
  )
  CustomHeaderAuth.apply(config, _request)
  _response = execute_request(_request)

  # Validate response against endpoint and global error codes.
  if _response.status_code == 400
    raise RequestErrorException.new(
      'Error in Request',
      _response
    )
  elsif _response.status_code == 403
    raise APIException.new(
      'Forbidden',
      _response
    )
  elsif _response.status_code == 500
    raise RequestErrorException.new(
      'System Error',
      _response
    )
  end
  validate_response(_response)

  # Return appropriate response type.
  decoded = APIHelper.json_deserialize(_response.raw_body)
  Payment.from_hash(decoded)
end
validate_iban(bank_id, iban) click to toggle source

Validates an IBAN and returns the bank account information @param [String] bank_id Required parameter: Bank ID (Routing Number) @param [String] iban Required parameter: Currency that is required by the client, sell foreign currency in exchange for local currency @return [BankAccount] response from the API call

# File lib/payments_api/controllers/payments_controller.rb, line 223
def validate_iban(bank_id,
                  iban)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/payments/get-bank-account-from-iban'
  _query_builder = APIHelper.append_url_with_query_parameters(
    _query_builder,
    'iban' => iban
  )
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'accept' => 'application/json',
    'bankId' => bank_id
  }

  # Prepare and execute HttpRequest.
  _request = config.http_client.get(
    _query_url,
    headers: _headers
  )
  CustomHeaderAuth.apply(config, _request)
  _response = execute_request(_request)

  # Validate response against endpoint and global error codes.
  if _response.status_code == 400
    raise RequestErrorException.new(
      'Error in Request',
      _response
    )
  elsif _response.status_code == 403
    raise APIException.new(
      'Forbidden',
      _response
    )
  elsif _response.status_code == 500
    raise RequestErrorException.new(
      'System Error',
      _response
    )
  end
  validate_response(_response)

  # Return appropriate response type.
  decoded = APIHelper.json_deserialize(_response.raw_body)
  BankAccount.from_hash(decoded)
end