class AndroidInAppBilling::InappPurchase
Represents the INAPP_PURCHASE concept from Google Play In-app Billing v3 API (java API for Android devices), including both data and signature
@see developer.android.com/google/play/billing/billing_reference.html
Constants
- Attributes
- PURCHASE_STATES
Public Class Methods
new(data:, signature:)
click to toggle source
@param data [String] @param signature [String] @!attribute raw
@return [String]
@!attribute signature
@return [String]
@!attribute order_id
@return [String]
@!attribute package_name
@return [String]
@!attribute product_id
@return [String]
@!attribute purchased_at
@return [DateTime]
@!attribute state
@return [String]
@!attribute developer_payload
@return [String]
@!attribute token
@return [String]
@!attribute auto_renewing
@return [Boolean]
Calls superclass method
# File lib/android_in_app_billing/inapp_purchase.rb, line 44 def initialize(data:, signature:) super Attributes.new(data, parse_signature(signature), *parse_data(data)) end
Public Instance Methods
attributes()
click to toggle source
@return [Hash]
# File lib/android_in_app_billing/inapp_purchase.rb, line 49 def attributes to_h.reject { |k, _| [:raw, :signature].include?(k) } end
signature_valid?()
click to toggle source
@return [true, false]
# File lib/android_in_app_billing/inapp_purchase.rb, line 54 def signature_valid? signature_verifier.call end
Private Instance Methods
parse_data(raw_data)
click to toggle source
# File lib/android_in_app_billing/inapp_purchase.rb, line 64 def parse_data(raw_data) # rubocop:disable Metrics/MethodLength data = JSON.parse(raw_data) [ data.fetch('orderId', ''), data.fetch('packageName'), data.fetch('productId'), millis_to_datetime(data.fetch('purchaseTime')), PURCHASE_STATES[data.fetch('purchaseState')], data.fetch('developerPayload', ''), data.fetch('purchaseToken'), data.fetch('autoRenewing') ] end
parse_signature(signature)
click to toggle source
# File lib/android_in_app_billing/inapp_purchase.rb, line 60 def parse_signature(signature) Base64.decode64(signature) end
signature_verifier()
click to toggle source
# File lib/android_in_app_billing/inapp_purchase.rb, line 79 def signature_verifier SignatureVerifier.new(data: raw, signature: signature) end