Class: Kakeibo::Client::Receipt::Iap

Inherits:
Object
  • Object
show all
Defined in:
lib/kakeibo/client/receipt/iap.rb

Constant Summary collapse

VALID_RECEIPT =
0
INVALID_JSON =
1
IS_SANDBOX_STATUS =
21007

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_receipt_data, option = {}) ⇒ Iap

Returns a new instance of Iap.



15
16
17
18
19
20
21
# File 'lib/kakeibo/client/receipt/iap.rb', line 15

def initialize(raw_receipt_data, option={})
  @raw_receipt_data = raw_receipt_data
  @receipt_data     = nil
  @transaction_id   = option[:transaction_id]
  @status           = nil
  valid?
end

Instance Attribute Details

#receipt_dataObject (readonly)

Returns the value of attribute receipt_data.



13
14
15
# File 'lib/kakeibo/client/receipt/iap.rb', line 13

def receipt_data
  @receipt_data
end

#statusObject (readonly)

Returns the value of attribute status.



12
13
14
# File 'lib/kakeibo/client/receipt/iap.rb', line 12

def status
  @status
end

Instance Method Details

#errorObject



41
42
43
44
# File 'lib/kakeibo/client/receipt/iap.rb', line 41

def error
  return nil if valid?
  Kakeibo::Error.new(@status, message)
end

#valid?Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/kakeibo/client/receipt/iap.rb', line 23

def valid?
  begin
    @receipt_data ||= JSON.parse(@raw_receipt_data, symbolize_names: true)
  rescue JSON::ParserError => e
    @status = INVALID_JSON
    return false
  end

  @status = @receipt_data[:status]
  return false if @status != VALID_RECEIPT
  return true if @transaction_id.nil?
  if ios7?(@receipt_data)
    @receipt_data[:receipt][:in_app].one? { |r| r[:transaction_id] == @transaction_id }
  else
    @receipt_data[:receipt][:transaction_id] == @transaction_id
  end
end