Sha256: 4739f5767a8a6eedd993350f8eac8a5b1ee51cef914ed2e1cde8b5b4882bdc09

Contents?: true

Size: 910 Bytes

Versions: 1

Compression:

Stored size: 910 Bytes

Contents

module PinPayment
  class Charge < Base
    attr_reader :token, :amount, :currency, :description, :email, :ip_address, :created_at, :card_token

    def self.create options
      response = self.post(
        URI.parse(PinPayment.api_url).tap{|uri| uri.path = '/1/charges' },
        options.select{|k| %w(amount currency description email ip_address card_token customer_token).include?(k.to_s) }
      )
      self.new.tap do |charge|
        charge.instance_variable_set('@card_token', response['card']['token']) if response['card']
        %w(token amount currency description email ip_address created_at error_message success).each do |key|
          charge.instance_variable_set("@#{key}", response[key])
        end
      end
    end

    def refund!
      Refund.create(charge_token: token)
    end

    def success?
      @success == true
    end

    def errors
      @error_message
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pin_payment-0.0.5 lib/pin_payment/charge.rb