Class: ItunesReceiptDecoder::Decode::UnifiedReceipt

Inherits:
Base
  • Object
show all
Defined in:
lib/itunes_receipt_decoder/decode/unified_receipt.rb

Overview

ItunesReceiptDecoder::Decode::UnifiedReceipt

Constant Summary collapse

RECEIPT_FIELDS =
{
  0 => :environment,
  2 => :bundle_id,
  3 => :application_version,
  4 => :opaque_value,
  5 => :sha1_hash,
  12 => :creation_date,
  17 => :in_app,
  19 => :original_application_version,
  21 => :expiration_date,
  1701 => :quantity,
  1702 => :product_id,
  1703 => :transaction_id,
  1705 => :original_transaction_id,
  1704 => :purchase_date,
  1706 => :original_purchase_date,
  1708 => :expires_date,
  1712 => :cancellation_date,
  1711 => :web_order_line_item_id
}.freeze
TIMESTAMP_FIELDS =
%i(creation_date expiration_date purchase_date
original_purchase_date expires_date
cancellation_date).freeze

Instance Attribute Summary

Attributes inherited from Base

#environment, #options, #raw_receipt, #receipt

Instance Method Summary collapse

Methods inherited from Base

#initialize, #production?, #sandbox?

Constructor Details

This class inherits a constructor from ItunesReceiptDecoder::Decode::Base

Instance Method Details

#signature_valid?Boolean

Returns:

  • (Boolean)


56
57
58
59
60
# File 'lib/itunes_receipt_decoder/decode/unified_receipt.rb', line 56

def signature_valid?
  serial = pkcs7.signers.first.serial.to_i
  cert = pkcs7.certificates.find { |c| c.serial.to_i == serial }
  cert && cert.verify(PublicKey::V3)
end

#styleObject



44
45
46
# File 'lib/itunes_receipt_decoder/decode/unified_receipt.rb', line 44

def style
  :unified
end

#uuid_valid?(uuid) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
52
53
54
# File 'lib/itunes_receipt_decoder/decode/unified_receipt.rb', line 48

def uuid_valid?(uuid)
  digest = OpenSSL::Digest::SHA1.new
  digest << uuid.scan(/[0-9A-F]{2}/).map(&:hex).pack('c*')
  digest << @receipt[:opaque_value]
  digest << @raw_bundle_id
  digest.digest == @receipt[:sha1_hash]
end