class Ios::Receipt::Result
Attributes
application_version[R]
bundle_id[R]
environment[R]
in_app[R]
latest[R]
original_application_version[R]
receipt_style[R]
result[R]
Public Class Methods
new(result, environment=nil)
click to toggle source
# File lib/ios/receipt/result.rb, line 5 def initialize(result, environment=nil) @result = result @status = result['status'] check_status! @environment = (result['environment'] || environment).try(:downcase).try(:to_sym) raise Ios::Receipt::Exceptions::InvalidConfiguration if @environment.nil? receipt = result['receipt'] @bundle_id = receipt['bid'] || receipt['bundle_id'] @application_version = receipt['application_version'] @original_application_version = receipt['original_application_version'] @receipt_style = receipt['original_transaction_id'] ? :ios6 : :ios7 if @receipt_style == :ios6 latest = result['latest_receipt_info'] || result['latest_expired_receipt_info'] @latest = if latest [ Ios::Receipt::Receipt.new(latest) ] elsif receipt['original_transaction_id'] [ Ios::Receipt::Receipt.new(receipt) ] else [] end end @in_app = [receipt['in_app'] || []].flatten.compact.collect { |r| Ios::Receipt::Receipt.new r } @latest = [result['latest_receipt_info'] || []].flatten.compact.collect { |r| Ios::Receipt::Receipt.new r } unless @latest end
Public Instance Methods
active_recurring_receipts()
click to toggle source
# File lib/ios/receipt/result.rb, line 54 def active_recurring_receipts @active_recurring_receipts ||= recurring_receipts.select { |r| r.active? } end
expired?()
click to toggle source
# File lib/ios/receipt/result.rb, line 42 def expired? @status == 21006 end
in_trial_receipts()
click to toggle source
# File lib/ios/receipt/result.rb, line 62 def in_trial_receipts @in_trial_receipts ||= active_recurring_receipts.select { |r| r.in_trial? } end
next_recurring_receipt()
click to toggle source
# File lib/ios/receipt/result.rb, line 58 def next_recurring_receipt @next_recurring_receipt ||= active_recurring_receipts.sort_by { |r| r.expires_date }.first end
once_off_receipts()
click to toggle source
# File lib/ios/receipt/result.rb, line 38 def once_off_receipts @once_offs ||= @latest.select { |r| r.once_off? } end
production?()
click to toggle source
# File lib/ios/receipt/result.rb, line 50 def production? @environment == :production end
recurring_receipts()
click to toggle source
# File lib/ios/receipt/result.rb, line 34 def recurring_receipts @recurring ||= @latest.select { |r| r.recurring? } end
sandbox?()
click to toggle source
# File lib/ios/receipt/result.rb, line 46 def sandbox? @environment == :sandbox end
transaction_ids()
click to toggle source
# File lib/ios/receipt/result.rb, line 66 def transaction_ids (@in_app.collect { |r| r.transaction_id } + @latest.collect { |r| r.transaction_id }).flatten.compact.uniq end
Protected Instance Methods
check_status!()
click to toggle source
# File lib/ios/receipt/result.rb, line 72 def check_status! case @status when 21000 then raise Ios::Receipt::Exceptions::Json when 21002 then raise Ios::Receipt::Exceptions::ReceiptFormat when 21003 then raise Ios::Receipt::Exceptions::ReceiptAuthentication when 21004 then raise Ios::Receipt::Exceptions::SharedSecret when 21005 then raise Ios::Receipt::Exceptions::ServerOffline when 21007 then raise Ios::Receipt::Exceptions::SandboxReceipt when 21008 then raise Ios::Receipt::Exceptions::ProductionReceipt end end