class Monza::Receipt

Attributes

adam_id[R]
app_item_id[R]

This field is not present for Mac apps

application_version[R]
bundle_id[R]
download_id[R]
expiration_date[R]

This key is present only for apps purchased through the Volume Purchase Program. If this key is not present, the receipt does not expire.

in_app[R]
original_application_version[R]
original_purchase_date[R]
original_purchase_date_ms[R]
original_purchase_date_pst[R]
receipt_creation_date[R]
receipt_creation_date_ms[R]
receipt_creation_date_pst[R]
request_date[R]
request_date_ms[R]
request_date_pst[R]
version_external_identifier[R]

This key is not present for receipts created in the test environment.

Public Class Methods

new(attributes) click to toggle source
# File lib/monza/receipt.rb, line 35
def initialize(attributes)
  @receipt_type = attributes['receipt_type']
  @adam_id = attributes['adam_id']
  @bundle_id = attributes['bundle_id']
  @application_version = attributes['application_version']
  @download_id = attributes['download_id']

  @receipt_creation_date = DateTime.parse(attributes['receipt_creation_date']) rescue nil
  @receipt_creation_date_ms = Time.zone.at(attributes['receipt_creation_date_ms'].to_i / 1000) rescue nil
  @receipt_creation_date_pst = DateTime.parse(attributes['receipt_creation_date_pst'].gsub("America/Los_Angeles","PST")) rescue nil
  @request_date = DateTime.parse(attributes['request_date']) rescue nil
  @request_date_ms = Time.zone.at(attributes['request_date_ms'].to_i / 1000) rescue nil
  @request_date_pst = DateTime.parse(attributes['request_date_pst'].gsub("America/Los_Angeles","PST")) rescue nil

  @original_purchase_date = DateTime.parse(attributes['original_purchase_date'])
  @original_purchase_date_ms = Time.zone.at(attributes['original_purchase_date_ms'].to_i / 1000)
  @original_purchase_date_pst = DateTime.parse(attributes['original_purchase_date_pst'].gsub("America/Los_Angeles","PST"))
  @original_application_version = attributes['original_application_version']

  if attributes['version_external_identifier']
    @version_external_identifier = attributes['version_external_identifier']
  end
  if attributes['app_item_id']
    @app_item_id = attributes['app_item_id']
  end
  if attributes['expiration_date']
    @expires_at = Time.zone.at(attributes['expiration_date'].to_i / 1000)
  end

  @in_app = []
  if attributes['in_app']
    attributes['in_app'].each do |transaction_receipt_attributes|
      @in_app << TransactionReceipt.new(transaction_receipt_attributes)
    end
  end
end
verify(data, options = {}) click to toggle source
# File lib/monza/receipt.rb, line 72
def self.verify(data, options = {})
  client = Client.production

  begin
    client.verify(data, options)
  rescue VerificationResponse::VerificationError => error
    case error.code
    when 21007 # This receipt is from the test environment, but it was sent to the production environment for verification. Send it to the test environment instead.
      client = Client.development
      retry
    when 21008 # This receipt is from the production environment, but it was sent to the test environment for verification. Send it to the production environment instead.
      client = Client.production
      retry
    else
      raise error
    end
  end
end