class Ios::Receipt::Receipt

Attributes

app_item_id[R]
cancellation_date[R]
expires_date[R]
is_trial_period[R]
original_purchase_date[R]
original_transaction_id[R]
product_id[R]
purchase_date[R]
quantity[R]
transaction_id[R]
version_external_identifier[R]
web_order_line_item_id[R]

Public Class Methods

new(receipt_hash) click to toggle source
# File lib/ios/receipt/receipt.rb, line 6
def initialize(receipt_hash)
  @quantity = receipt_hash['quantity']
  @product_id = receipt_hash['product_id']
  @original_transaction_id = receipt_hash['original_transaction_id']
  @transaction_id = receipt_hash['transaction_id']
  @original_purchase_date = parse_time receipt_hash['original_purchase_date']
  @purchase_date = parse_time receipt_hash['purchase_date']
  @expires_date = parse_time receipt_hash['expires_date']
  @cancellation_date = parse_time receipt_hash['cancellation_date']
  @app_item_id = receipt_hash['app_item_id']
  @version_external_identifier = receipt_hash['version_external_identifier']
  @web_order_line_item_id = receipt_hash['web_order_line_item_id']
  @is_trial_period = receipt_hash['is_trial_period'] == 'true'
end

Public Instance Methods

active?() click to toggle source
# File lib/ios/receipt/receipt.rb, line 29
def active?
  !cancelled? && !expired?
end
cancelled?() click to toggle source
# File lib/ios/receipt/receipt.rb, line 38
def cancelled?
  !@cancellation_date.nil?
end
expired?() click to toggle source
# File lib/ios/receipt/receipt.rb, line 33
def expired?
  return false unless recurring?
  !!(@expires_date && @expires_date < Time.now)
end
in_trial?() click to toggle source
# File lib/ios/receipt/receipt.rb, line 42
def in_trial?
  @is_trial_period
end
once_off?() click to toggle source
# File lib/ios/receipt/receipt.rb, line 21
def once_off?
  @expires_date.nil?
end
recurring?() click to toggle source
# File lib/ios/receipt/receipt.rb, line 25
def recurring?
  !once_off?
end

Private Instance Methods

parse_time(str) click to toggle source
# File lib/ios/receipt/receipt.rb, line 48
def parse_time(str)
  return nil if str.nil? || str == ''

  if !str.match(/^[0-9]+$/).nil? # It's in number format
    Time.at(str.to_i / 1000)
  else # They've sent it in string format
    Time.parse(str.sub('Etc/GMT', 'GMT')) rescue nil
  end
end