module Fawry::Requests::RefundRequest

Public Instance Methods

fire_refund_request() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 8
def fire_refund_request
  fawry_api_response = Connection.post(request[:path], request[:params], request[:body], request[:options])
  response_body = JSON.parse(fawry_api_response.body)

  FawryResponse.new(response_body)
end

Private Instance Methods

build_refund_request() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 17
def build_refund_request
  {
    path: 'payments/refund',
    params: {},
    body: refund_request_transformed_params,
    options: options
  }
end
fawry_merchant_code() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 40
def fawry_merchant_code
  Fawry.configuration.fawry_merchant_code || ENV.fetch('FAWRY_MERCHANT_CODE') { request_params[:merchant_code] }
end
fawry_secure_key() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 44
def fawry_secure_key
  Fawry.configuration.fawry_secure_key || ENV.fetch('FAWRY_SECURE_KEY') { request_params[:fawry_secure_key] }
end
refund_request_signature() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 53
def refund_request_signature
  Digest::SHA256.hexdigest("#{fawry_merchant_code}#{request_params[:reference_number]}"\
                           "#{format('%<refund_amount>.2f', refund_amount: request_params[:refund_amount])}"\
                           "#{request_params[:reason]}#{fawry_secure_key}")
end
refund_request_transformed_params() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 30
def refund_request_transformed_params
  {
    merchantCode: fawry_merchant_code,
    referenceNumber: request_params[:reference_number],
    refundAmount: request_params[:refund_amount],
    reason: request_params[:reason],
    signature: refund_request_signature
  }.compact
end
request_params() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 26
def request_params
  @request_params = params
end
validate_refund_params!() click to toggle source
# File lib/fawry/requests/refund_request.rb, line 48
def validate_refund_params!
  contract = Contracts::RefundRequestContract.new.call(request_params)
  raise InvalidFawryRequestError, contract.errors.to_h if contract.failure?
end