module NaspayRails::Payouts

Public Class Methods

create_new(endpoint, params, token) click to toggle source
# File lib/naspay_rails/payouts.rb, line 6
def self.create_new(endpoint, params, token)
  route_suffix = '/api/v1/payouts'
  target_url   = "#{endpoint}#{route_suffix}"
  request_uri  = URI.parse(target_url)
  request      = Net::HTTP::Post.new(request_uri)
  request["Authorization"] = "Bearer #{token}"
  request["Content-Type"]  = "application/json"
  request["Accept"]        = "application/json"

  request_body =
      case params.keys.sort
        when %i[amount currency transaction_id description card].sort
          {
              "amount"                 => params[:amount],
              "currency"               => params[:currency],
              "merchantTransactionId"  => params[:transaction_id],
              "description"            => params[:description],
              "card" => {
                  "cardholder"          => params[:card].try(:[], :cardholder),
                  "pan"                 => params[:card].try(:[], :pan),
                  "expiryYear"          => params[:card].try(:[], :exp_year),
                  "expiryMonth"         => params[:card].try(:[], :exp_month)
              }
          }
        else
          return 'please check the keys provided in params Hash!'
      end
  request.body = JSON.dump(request_body)
  req_options = {
      use_ssl: request_uri.scheme == "https",
  }

  Net::HTTP.start(request_uri.hostname, request_uri.port, req_options) { |http| http.request(request) }
end