class Vendor::Buy

Attributes

block[RW]
params[RW]
request_operation_queue[RW]

Public Class Methods

new() click to toggle source
# File lib/project/buy.rb, line 5
def initialize
  SKPaymentQueue.defaultQueue.addTransactionObserver(self)
end

Public Instance Methods

close() click to toggle source
# File lib/project/buy.rb, line 9
def close
  SKPaymentQueue.defaultQueue.removeTransactionObserver(self)
end
completeTransaction(transaction) click to toggle source
# File lib/project/buy.rb, line 61
def completeTransaction(transaction)
  finishTransaction(transaction, success:true)
end
failedTransaction(transaction) click to toggle source
# File lib/project/buy.rb, line 69
def failedTransaction(transaction)
  finishTransaction(transaction, success:false)
end
finishTransaction(transaction, success:success) click to toggle source

DELEGATE METHODS

# File lib/project/buy.rb, line 31
def finishTransaction(transaction, success:success)
  SKPaymentQueue.defaultQueue.finishTransaction(transaction)
  return if @params.nil?
  password = @params.secret=="no_secret" ? nil : @params.secret

  if success && !App.osx? # If successfull and ios
    # Verify transaction receipt
    Vendor::Receipt.new(transaction.transactionReceipt, @params) do |block|
      valid_receipt = block[:success] && block[:object][:status]==0
      @block.call({success: valid_receipt, transaction: transaction}.to_object) unless @block.blank?
    end
  else
    @block.call({success: success, transaction: transaction}.to_object) unless @block.blank?
  end
end
paymentQueue(queue, updatedTransactions:transactions) click to toggle source
# File lib/project/buy.rb, line 47
def paymentQueue(queue, updatedTransactions:transactions)
  transactions.each do |transaction|
    case transaction.transactionState
      when 1 #SKPaymentTransactionStatePurchased
        completeTransaction(transaction)
      when 2 #SKPaymentTransactionStateFailed
        failedTransaction(transaction)
      when 3 #SKPaymentTransactionStateRestored
        restoreTransaction(transaction)
      else 
    end
  end
end
purchase(params, &block) click to toggle source

PUBLIC METHODS

# File lib/project/buy.rb, line 16
def purchase(params, &block)
  @params = params
  @block = block
  SKPaymentQueue.defaultQueue.addPayment(SKPayment.paymentWithProduct(@params.sk_product))
end
restore(params, &block) click to toggle source
# File lib/project/buy.rb, line 22
def restore(params, &block)
  @params = params
  @block = block
  SKPaymentQueue.defaultQueue.restoreCompletedTransactions
end
restoreTransaction(transaction) click to toggle source
# File lib/project/buy.rb, line 65
def restoreTransaction(transaction)
  finishTransaction(transaction, success:true)
end