class Comune::Receipt
Constants
- MAXIMUM_OPEN_TIMEOUT
- MAXIMUM_READ_TIMEOUT
Public Class Methods
new(receipt_data, signature)
click to toggle source
# File lib/comune/receipt.rb, line 8 def initialize(receipt_data, signature) @receipt_data = receipt_data @signature = signature end
Public Instance Methods
verify()
click to toggle source
# File lib/comune/receipt.rb, line 13 def verify Comune::Tampering.verify(@receipt_data, @signature) access_token = Comune::GenerateToken.execute receipt_verification(access_token) end
Private Instance Methods
encoded_receipt_data()
click to toggle source
# File lib/comune/receipt.rb, line 25 def encoded_receipt_data JSON.parse(Base64.decode64(@receipt_data)) end
end_point()
click to toggle source
# File lib/comune/receipt.rb, line 43 def end_point "https://www.googleapis.com/androidpublisher/v3/applications/#{Comune.package_name}/purchases/subscriptions/#{Comune.subscription_id}" end
purchase_token()
click to toggle source
# File lib/comune/receipt.rb, line 21 def purchase_token encoded_receipt_data['purchaseToken'] end
receipt_verification(access_token)
click to toggle source
# File lib/comune/receipt.rb, line 29 def receipt_verification(access_token) uri = URI.parse("#{end_point}/tokens/#{purchase_token}") req = Net::HTTP::Get.new(uri.path) req.content_type = 'application/json' req['Authorization'] = "Bearer #{access_token}" req_options = { use_ssl: uri.scheme == 'https' } res = Net::HTTP.start(uri.host, uri.port, req_options) do |http| http.read_timeout = MAXIMUM_READ_TIMEOUT http.open_timeout = MAXIMUM_OPEN_TIMEOUT http.request(req) end JSON.parse(res.body) end