module Od::Payments::Charge

Public Class Methods

cancel(payment_intent_id) click to toggle source
# File lib/od/payments/resources/charge.rb, line 45
def self.cancel(payment_intent_id)
  case Od::Payments.adapter
  when :stripe
    Stripe::PaymentIntent.cancel payment_intent_id
  end
rescue Stripe::CardError => e
  raise Od::Payments::CardError.new(e.error.message, {})
rescue Stripe::StripeError => e
  raise Od::Payments::OdPaymentsError, e.error.message
end
capture(payment_intent_id) click to toggle source
# File lib/od/payments/resources/charge.rb, line 34
def self.capture(payment_intent_id)
  case Od::Payments.adapter
  when :stripe
    Stripe::PaymentIntent.capture(payment_intent_id)
  end
rescue Stripe::CardError => e
  raise Od::Payments::CardError.new(e.error.message, {})
rescue Stripe::StripeError => e
  raise Od::Payments::OdPaymentsError, e.error.message
end
confirm(payment_intent_id, payment_method_id) click to toggle source
# File lib/od/payments/resources/charge.rb, line 90
def self.confirm(payment_intent_id, payment_method_id)
  case Od::Payments.adapter
  when :stripe
    Stripe::PaymentIntent.confirm(
      payment_intent_id,
      { payment_method: payment_method_id }
    )
  end
rescue Stripe::CardError => e
  raise Od::Payments::CardError.new(e.error.message, {})
rescue Stripe::StripeError => e
  raise Od::Payments::OdPaymentsError, e.error.message
end
create(amount, option = {}) click to toggle source
# File lib/od/payments/resources/charge.rb, line 4
def self.create(amount, option = {})
  case Od::Payments.adapter
  when :stripe
    Stripe::PaymentIntent.create({
      currency: 'usd',
      amount: (amount * 100).to_i
    }.merge(option))
  when :square
    result = Od::Payments.client_square.payments.create_payment(
      body: {
        idempotency_key: SecureRandom.uuid,
        amount_money: {
          amount: amount,
          currency: 'USD'
        }
      }.merge(option)
    )

    if result.success?
      result.data
    elsif result.error?
      raise Od::Payments::CardError.new(result.errors, {})
    end
  end
rescue Stripe::CardError => e
  raise Od::Payments::CardError.new(e.error.message, {})
rescue Stripe::StripeError => e
  raise Od::Payments::OdPaymentsError, e.error.message
end
show(payment_intent_id) click to toggle source
# File lib/od/payments/resources/charge.rb, line 79
def self.show(payment_intent_id)
  case Od::Payments.adapter
  when :stripe
    Stripe::PaymentIntent.retrieve payment_intent_id
  end
rescue Stripe::CardError => e
  raise Od::Payments::CardError.new(e.error.message, {})
rescue Stripe::StripeError => e
  raise Od::Payments::OdPaymentsError, e.error.message
end
void(payment_intent_id, option = {}) click to toggle source
# File lib/od/payments/resources/charge.rb, line 56
def self.void(payment_intent_id, option = {})
  case Od::Payments.adapter
  when :stripe
    Stripe::Refund.create({
      payment_intent: payment_intent_id
    }.merge(option))
  when :square
    result = Od::Payments.client_square.refunds.refund_payment(body: {
      payment_id: payment_intent_id,
      idempotency_key: SecureRandom.uuid
    }.merge(option))
    if result.success?
      result.data
    elsif result.error?
      raise Od::Payments::CardError.new(result.errors, {})
    end
  end
rescue Stripe::CardError => e
  raise Od::Payments::CardError.new(e.error.message, {})
rescue Stripe::StripeError => e
  raise Od::Payments::OdPaymentsError, e.error.message
end