class MandarinApi::PaymentManager

Pergorms payouts and payins

Public Instance Methods

perform_charge(params) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 5
def perform_charge(params)
  perform(params, 'pay', :charge_request_body)
end
perform_payment(params) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 13
def perform_payment(params)
  perform(params, 'pay', :normal_request_body)
end
perform_payout(params) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 9
def perform_payout(params)
  perform(params, 'payout', :normal_request_body)
end
perform_rebill(params) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 21
def perform_rebill(params)
  perform(params, 'pay', :rebill_request_body)
end
perform_refund(params) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 17
def perform_refund(params)
  perform(params, 'reversal', :refund_request_body)
end

Private Instance Methods

charge_request_body(params, action) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 44
def charge_request_body(params, action)
  body = {
    payment: payment(params, action),
    customer_info: { email: params[:email], phone: phone(params[:phone]) }
  }
  body[:custom_values] = params[:custom_values] if params[:custom_values]
  body[:urls] = params[:urls] if params[:urls]
  body
end
normal_request_body(params, action) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 35
def normal_request_body(params, action)
  body = {
    payment: payment(params, action),
    target: { card: params[:assigned_card_uuid] }
  }
  body[:custom_values] = params[:custom_values] unless params[:custom_values].empty?
  body
end
payment(params, action) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 70
def payment(params, action)
  { order_id: params[:order_id], action: action, price: params[:amount] }
end
perform(params, action, body) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 27
def perform(params, action, body)
  MandarinApi::Wrapper.new(
    merchant_id: MandarinApi.config.merchant_id,
    secret: MandarinApi.config.secret,
    logger: MandarinApi.config.logger
  ).request('/api/transactions', send(body, params, action))
end
phone(phone) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 74
def phone(phone)
  if phone.nil?
    '+70000000000'
  else
    '+' + phone.gsub(/[^\d]+/, '').gsub(/^8/, '7')
  end
end
rebill_request_body(params, action) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 63
def rebill_request_body(params, action)
  {
    payment: payment(params, action),
    target: { rebill: params[:transaction_uuid] }
  }
end
refund_request_body(params, action) click to toggle source
# File lib/mandarin_api/payment_manager.rb, line 54
def refund_request_body(params, action)
  body = {
    payment: { order_id: params[:order_id], action: action },
    target: { transaction: params[:transaction_uuid] }
  }
  body[:payment][:price] = params[:amount] if params[:amount]
  body
end