class Monza::StatusResponse
Attributes
auto_renew_product_id[R]
auto_renew_status[R]
auto_renew_status_change_date[R]
auto_renew_status_change_date_ms[R]
auto_renew_status_change_date_pst[R]
bundle_id[R]
bvrs[R]
cancellation_date[R]
environment[R]
expiration_intent[R]
expires_date[R]
expires_date_ms[R]
expires_date_pst[R]
is_in_intro_offer_period[R]
is_trial_period[R]
item_id[R]
latest_receipt[R]
latest_receipt_info[R]
notification_type[R]
original_json_response[R]
original_purchase_date[R]
original_purchase_date_ms[R]
original_purchase_date_pst[R]
original_transaction_id[R]
password[R]
product_id[R]
purchase_date[R]
purchase_date_ms[R]
purchase_date_pst[R]
quantity[R]
renewal_info[R]
transaction_id[R]
unique_identifier[R]
unique_vendor_identifier[R]
web_order_line_item_id[R]
Public Class Methods
new(attributes)
click to toggle source
# File lib/monza/status_response.rb, line 63 def initialize(attributes) @original_json_response = attributes @auto_renew_product_id = attributes['auto_renew_product_id'] @auto_renew_status = attributes['auto_renew_status'].to_bool if attributes['auto_renew_status_change_date'] @auto_renew_status_change_date = DateTime.parse(attributes['auto_renew_status_change_date']) end if attributes['auto_renew_status_change_date_ms'] @auto_renew_status_change_date_ms = Time.zone.at(attributes['auto_renew_status_change_date_ms'].to_i / 1000) end if attributes['auto_renew_status_change_date_pst'] @auto_renew_status_change_date_pst = DateTime.parse(attributes['auto_renew_status_change_date_pst'].gsub("America/Los_Angeles", "PST")) end @environment = attributes['environment'] @expiration_intent = attributes['expiration_intent'] @latest_receipt = attributes.dig('unified_receipt', 'latest_receipt') @notification_type = attributes['notification_type'] @password = attributes['password'] if attributes['password'] latest_receipt_info = [] case attributes.dig('unified_receipt', 'latest_receipt_info') when Array attributes.dig('unified_receipt', 'latest_receipt_info').each do |transaction_receipt_attributes| latest_receipt_info << transaction_receipt_attributes end when Hash latest_receipt_info << attributes.dig('unified_receipt', 'latest_receipt_info') end @renewal_info = [] attributes.dig('unified_receipt', 'pending_renewal_info')&.each do |renewal_info_attributes| renewal_info << RenewalInfo.new(renewal_info_attributes) end latest_receipt_info = latest_receipt_info.first @bundle_id = latest_receipt_info['bid'] @bvrs = latest_receipt_info['bvrs'].to_i @item_id = latest_receipt_info['item_id'].to_i @product_id = latest_receipt_info['product_id'] @transaction_id = latest_receipt_info['transaction_id'] @original_transaction_id = latest_receipt_info['original_transaction_id'] @purchase_date = DateTime.parse(latest_receipt_info['purchase_date']) if latest_receipt_info['purchase_date'] @purchase_date_ms = Time.zone.at(latest_receipt_info['purchase_date_ms'].to_i / 1000) if latest_receipt_info['purchase_date_pst'] @purchase_date_pst = date_for_pacific_time(latest_receipt_info['purchase_date_pst']) end if latest_receipt_info['original_purchase_date'] @original_purchase_date = DateTime.parse(latest_receipt_info['original_purchase_date']) end @original_purchase_date_ms = Time.zone.at(latest_receipt_info['original_purchase_date_ms'].to_i / 1000) if latest_receipt_info['original_purchase_date_pst'] @original_purchase_date_pst = date_for_pacific_time(latest_receipt_info['original_purchase_date_pst']) end @web_order_line_item_id = latest_receipt_info['web_order_line_item_id'] @quantity = latest_receipt_info['quantity'].to_i @unique_identifier = latest_receipt_info['unique_identifier'] @unique_vendor_identifier = latest_receipt_info['unique_vendor_identifier'] # Here we coerce the field names to match what the receipt verify response returns if latest_receipt_info['expires_date_formatted'] @expires_date = DateTime.parse(latest_receipt_info['expires_date_formatted']) end if latest_receipt_info['expires_date'] @expires_date_ms = if latest_receipt_info['expires_date'].size == 13 Time.zone.at(latest_receipt_info['expires_date'].to_i / 1000) else DateTime.parse(latest_receipt_info['expires_date']) end end if latest_receipt_info['expires_date_formatted_pst'] @expires_date_pst = date_for_pacific_time(latest_receipt_info['expires_date_formatted_pst'] || latest_receipt_info['expires_date_pst']) end if latest_receipt_info['is_in_intro_offer_period'] @is_in_intro_offer_period = latest_receipt_info['is_in_intro_offer_period'].to_bool end if latest_receipt_info['is_trial_period'] @is_trial_period = latest_receipt_info['is_trial_period'].to_bool end if latest_receipt_info['cancellation_date'] @cancellation_date = DateTime.parse(latest_receipt_info['cancellation_date']) end @latest_receipt_info = [] case attributes.dig('unified_receipt', 'latest_receipt_info') when Array attributes.dig('unified_receipt', 'latest_receipt_info').each do |transaction_receipt_attributes| @latest_receipt_info << TransactionReceipt.new(transaction_receipt_attributes) end when Hash @latest_receipt_info << TransactionReceipt.new(attributes.dig('unified_receipt', 'latest_receipt_info')) end @renewal_info = [] if attributes.dig('unified_receipt', 'pending_renewal_info') attributes.dig('unified_receipt', 'pending_renewal_info').each do |renewal_info_attributes| @renewal_info << RenewalInfo.new(renewal_info_attributes) end end end
Public Instance Methods
cancel?()
click to toggle source
# File lib/monza/status_response.rb, line 173 def cancel? notification_type == Type::CANCEL end
date_for_pacific_time(pt)
click to toggle source
# File lib/monza/status_response.rb, line 167 def date_for_pacific_time pt # The field is labelled "PST" by apple, but the "America/Los_Angelus" time zone is actually Pacific Time, # which is different, because it observes DST. ActiveSupport::TimeZone["Pacific Time (US & Canada)"].parse(pt).to_datetime end
did_change_renewal_pref?()
click to toggle source
# File lib/monza/status_response.rb, line 177 def did_change_renewal_pref? notification_type == Type::DID_CHANGE_RENEWAL_PREF end
did_change_renewal_status?()
click to toggle source
# File lib/monza/status_response.rb, line 181 def did_change_renewal_status? notification_type == Type::DID_CHANGE_RENEWAL_STATUS end
did_fail_to_renew?()
click to toggle source
# File lib/monza/status_response.rb, line 185 def did_fail_to_renew? notification_type == Type::DID_FAIL_TO_RENEW end
did_recover?()
click to toggle source
# File lib/monza/status_response.rb, line 189 def did_recover? notification_type == Type::DID_RECOVER end
initial_buy?()
click to toggle source
# File lib/monza/status_response.rb, line 193 def initial_buy? notification_type == Type::INITIAL_BUY end
interactive_renewal?()
click to toggle source
# File lib/monza/status_response.rb, line 197 def interactive_renewal? notification_type == Type::INTERACTIVE_RENEWAL end
refund?()
click to toggle source
# File lib/monza/status_response.rb, line 205 def refund? notification_type == Type::REFUND end
renewal?()
click to toggle source
# File lib/monza/status_response.rb, line 201 def renewal? notification_type == Type::RENEWAL end