Class: Venice::InAppReceipt

Inherits:
Object
  • Object
show all
Defined in:
lib/venice/in_app_receipt.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ InAppReceipt

Returns a new instance of InAppReceipt.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/venice/in_app_receipt.rb', line 46

def initialize(attributes = {})
  @quantity = Integer(attributes['quantity']) if attributes['quantity']
  @product_id = attributes['product_id']
  @transaction_id = attributes['transaction_id']
  @purchased_at = DateTime.parse(attributes['purchase_date']) if attributes['purchase_date']
  @app_item_id = attributes['app_item_id']
  @version_external_identifier = attributes['version_external_identifier']

  @expires_at = Time.at(attributes['expires_date_ms'].to_i/1000) if attributes['expires_date_ms']
  # cancellation_date is in ms since the Epoch, Time.at expects seconds
  @cancellation_date = Time.at(attributes['cancellation_date'].to_i / 1000) if attributes['cancellation_date']

  if attributes['original_transaction_id'] || attributes['original_purchase_date']
    original_attributes = {
      'transaction_id' => attributes['original_transaction_id'],
      'purchase_date' => attributes['original_purchase_date']
    }

    self.original = InAppReceipt.new(original_attributes)
  end

end

Instance Attribute Details

#app_item_idObject (readonly)

A string that the App Store uses to uniquely identify the application that created the payment transaction. If your server supports multiple applications, you can use this value to differentiate between them. Applications that are executing in the sandbox do not yet have an app-item-id assigned to them, so this key is missing from receipts created by the sandbox.



30
31
32
# File 'lib/venice/in_app_receipt.rb', line 30

def app_item_id
  @app_item_id
end

#cancellation_atObject (readonly)

For a transaction that was canceled by Apple customer support, the time and date of the cancellation.



43
44
45
# File 'lib/venice/in_app_receipt.rb', line 43

def cancellation_at
  @cancellation_at
end

#expires_atObject (readonly)

For auto-renewable subscriptions, returns the date the subscription will expire



40
41
42
# File 'lib/venice/in_app_receipt.rb', line 40

def expires_at
  @expires_at
end

#originalObject

For a transaction that restores a previous transaction, this is the original receipt



37
38
39
# File 'lib/venice/in_app_receipt.rb', line 37

def original
  @original
end

#product_idObject (readonly)

The product identifier of the item that was purchased. This value corresponds to the productIdentifier property of the SKPayment object stored in the transaction’s payment property.



15
16
17
# File 'lib/venice/in_app_receipt.rb', line 15

def product_id
  @product_id
end

#purchased_atObject (readonly)

The date and time this transaction occurred. This value corresponds to the transaction’s transactionDate property.



23
24
25
# File 'lib/venice/in_app_receipt.rb', line 23

def purchased_at
  @purchased_at
end

#quantityObject (readonly)

The number of items purchased. This value corresponds to the quantity property of the SKPayment object stored in the transaction’s payment property.



10
11
12
# File 'lib/venice/in_app_receipt.rb', line 10

def quantity
  @quantity
end

#transaction_idObject (readonly)

The transaction identifier of the item that was purchased. This value corresponds to the transaction’s transactionIdentifier property.



19
20
21
# File 'lib/venice/in_app_receipt.rb', line 19

def transaction_id
  @transaction_id
end

#version_external_identifierObject (readonly)

An arbitrary number that uniquely identifies a revision of your application. This key is missing in receipts created by the sandbox.



34
35
36
# File 'lib/venice/in_app_receipt.rb', line 34

def version_external_identifier
  @version_external_identifier
end

Instance Method Details

#to_hashObject Also known as: to_h



69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/venice/in_app_receipt.rb', line 69

def to_hash
  {
    :quantity => @quantity,
    :product_id => @product_id,
    :transaction_id => @transaction_id,
    :purchase_date => (@purchased_at.httpdate rescue nil),
    :original_transaction_id => (@original.transaction_id rescue nil),
    :original_purchase_date => (@original.purchased_at.httpdate rescue nil),
    :app_item_id => @app_item_id,
    :version_external_identifier => @version_external_identifier,
    :expires_at => (@expires_at.httpdate rescue nil),
    :cancellation_at => (@cancellation_at.httpdate rescue nil)
  }
end

#to_jsonObject



85
86
87
# File 'lib/venice/in_app_receipt.rb', line 85

def to_json
  self.to_hash.to_json
end