Class: Vendor::Buy

Inherits:
Object
  • Object
show all
Defined in:
lib/project/buy.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBuy

Returns a new instance of Buy.



5
6
7
# File 'lib/project/buy.rb', line 5

def initialize
  SKPaymentQueue.defaultQueue.addTransactionObserver(self)
end

Instance Attribute Details

#blockObject

Returns the value of attribute block.



3
4
5
# File 'lib/project/buy.rb', line 3

def block
  @block
end

#paramsObject

Returns the value of attribute params.



3
4
5
# File 'lib/project/buy.rb', line 3

def params
  @params
end

#request_operation_queueObject

Returns the value of attribute request_operation_queue.



3
4
5
# File 'lib/project/buy.rb', line 3

def request_operation_queue
  @request_operation_queue
end

Instance Method Details

#closeObject



9
10
11
# File 'lib/project/buy.rb', line 9

def close
  SKPaymentQueue.defaultQueue.removeTransactionObserver(self)
end

#completeTransaction(transaction) ⇒ Object



61
62
63
# File 'lib/project/buy.rb', line 61

def completeTransaction(transaction)
  finishTransaction(transaction, success:true)
end

#failedTransaction(transaction) ⇒ Object



69
70
71
# File 'lib/project/buy.rb', line 69

def failedTransaction(transaction)
  finishTransaction(transaction, success:false)
end

#finishTransaction(transaction, success: success) ⇒ Object

DELEGATE METHODS



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 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) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
# 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) ⇒ Object

PUBLIC METHODS



16
17
18
19
20
# 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) ⇒ Object



22
23
24
25
26
# File 'lib/project/buy.rb', line 22

def restore(params, &block)
  @params = params
  @block = block
  SKPaymentQueue.defaultQueue.restoreCompletedTransactions
end

#restoreTransaction(transaction) ⇒ Object



65
66
67
# File 'lib/project/buy.rb', line 65

def restoreTransaction(transaction)
  finishTransaction(transaction, success:true)
end