Class: Itunes::IAP::Receipt

Inherits:
Object
  • Object
show all
Defined in:
lib/itunes/iap.rb

Constant Summary collapse

PRODUCTION_VALIDATION_URL =
'https://buy.itunes.apple.com/verifyReceipt'
SANDBOX_VALIDATION_URL =
'https://sandbox.itunes.apple.com/verifyReceipt'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base64_receipt, options = {}) ⇒ Receipt

Returns a new instance of Receipt.



43
44
45
46
47
# File 'lib/itunes/iap.rb', line 43

def initialize base64_receipt, options = {}
  @base64_receipt = base64_receipt
  @options = options
  @verified_receipt = update_receipt
end

Instance Attribute Details

#verified_receiptObject (readonly)

Returns the value of attribute verified_receipt.



14
15
16
# File 'lib/itunes/iap.rb', line 14

def verified_receipt
  @verified_receipt
end

Class Method Details

.analyze(base64_receipt, options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/itunes/iap.rb', line 17

def analyze base64_receipt, options = {}
  receipt = new(base64_receipt, options)
  out = Hash.new.tap do |r|
    r[:status] = receipt.verified_receipt['status']
    r[:response] = receipt.verified_receipt
    if r[:status] == 0
      newest_transaction = receipt.verified_receipt['latest_receipt_info'].last
      r[:original_transaction_id] = newest_transaction['original_transaction_id']
      r[:latest_transaction_id] = newest_transaction['transaction_id']
      r[:product_id] = newest_transaction['product_id']
      r[:valid_until] = Time.at(
        receipt
          .verified_receipt['latest_receipt_info']
          .last['expires_date_ms']
          .to_i / 1000
      )
      r[:valid] = Time.now < r[:valid_until]
    else
      r[:valid] = false
    end
  end

  out
end