Sha256: db5a6782ffc291fa1fafa502eb5ba60c7cd51b3ad96d9b49f4b60e15863c4df1

Contents?: true

Size: 1.08 KB

Versions: 6

Compression:

Stored size: 1.08 KB

Contents

module MyMoip
  class Purchase
    attr_accessor :id, :price, :credit_card, :payer, :reason
    attr_reader :code

    def initialize(attrs)
      @id          = attrs.fetch(:id) { rand }
      @price       = attrs.fetch(:price)
      @credit_card = MyMoip::CreditCard.new(attrs.fetch(:credit_card))
      @payer       = MyMoip::Payer.new(attrs.fetch(:payer))
      @reason      = attrs.fetch(:reason)
    end

    def checkout!
      authorization = get_authorization!
      payment = MyMoip::CreditCardPayment.new(@credit_card,
                                              installments: 1)
      request = MyMoip::PaymentRequest.new(@id)
      request.api_call(payment, token: authorization.token)

      @code = request.code
      request.success?
    end

    private

    def get_authorization!
      instruction = MyMoip::Instruction.new(
        id:             @id,
        payment_reason: @reason,
        values:         [@price],
        payer:          @payer
      )

      request = MyMoip::TransparentRequest.new(@id)
      request.api_call(instruction)
      request
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
edools_mymoip-0.8.1 lib/mymoip/purchase.rb
mymoip-0.10.0 lib/mymoip/purchase.rb
mymoip-0.9.0 lib/mymoip/purchase.rb
mymoip-0.8.0 lib/mymoip/purchase.rb
mymoip-0.7.0 lib/mymoip/purchase.rb
mymoip-0.6.2 lib/mymoip/purchase.rb