Skip to content

Instantly share code, notes, and snippets.

@func09
Created July 20, 2010 11:19
Show Gist options
  • Save func09/482830 to your computer and use it in GitHub Desktop.
Save func09/482830 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'json'
require 'uri'
require 'net/http'
require 'net/https'
APPLE_RECEIPT_VERIFY_URL = 'https://sandbox.itunes.apple.com/verifyReceipt'
receipt = 'ewoJInNpZ25hdHVyZSIgPSAiQWtXSDVwQnowYnh6ZkEyakVkU28zT2RheUZFd0J1eVdQVDFKTUNyVW0rYXZLcUVwSFFXRFlwc1h6SHpnRGNhQnd1M0I0dW4rdUFYQXN1RE8vb2x4VVdRRVE0K1RubjRKRSszdHFUVVRNcVc2QldNd3NYOFZ1anJrMHo3YlVCUytVaHFoTkkwSmZWUGpxNmd0ZVlQY0lCWHFnejdmc002bXhTQU9vWk03Wi84c0FBQURWekNDQTFNd2dnSTdvQU1DQVFJQ0NHVVVrVTNaV0FTMU1BMEdDU3FHU0liM0RRRUJCUVVBTUg4eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVNZd0pBWURWUVFMREIxQmNIQnNaU0JEWlhKMGFXWnBZMkYwYVc5dUlFRjFkR2h2Y21sMGVURXpNREVHQTFVRUF3d3FRWEJ3YkdVZ2FWUjFibVZ6SUZOMGIzSmxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1CNFhEVEE1TURZeE5USXlNRFUxTmxvWERURTBNRFl4TkRJeU1EVTFObG93WkRFak1DRUdBMVVFQXd3YVVIVnlZMmhoYzJWU1pXTmxhWEIwUTJWeWRHbG1hV05oZEdVeEd6QVpCZ05WQkFzTUVrRndjR3hsSUdsVWRXNWxjeUJUZEc5eVpURVRNQkVHQTFVRUNnd0tRWEJ3YkdVZ1NXNWpMakVMTUFrR0ExVUVCaE1DVlZNd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNclJqRjJjdDRJclNkaVRDaGFJMGc4cHd2L2NtSHM4cC9Sd1YvcnQvOTFYS1ZoTmw0WElCaW1LalFRTmZnSHNEczZ5anUrK0RyS0pFN3VLc3BoTWRkS1lmRkU1ckdYc0FkQkVqQndSSXhleFRldngzSExFRkdBdDFtb0t4NTA5ZGh4dGlJZERnSnYyWWFWczQ5QjB1SnZOZHk2U01xTk5MSHNETHpEUzlvWkhBZ01CQUFHamNqQndNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVOaDNvNHAyQzBnRVl0VEpyRHRkREM1RllRem93RGdZRFZSMFBBUUgvQkFRREFnZUFNQjBHQTFVZERnUVdCQlNwZzRQeUdVakZQaEpYQ0JUTXphTittVjhrOVRBUUJnb3Foa2lHOTJOa0JnVUJCQUlGQURBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQUVhU2JQanRtTjRDL0lCM1FFcEszMlJ4YWNDRFhkVlhBZVZSZVM1RmFaeGMrdDg4cFFQOTNCaUF4dmRXLzNlVFNNR1k1RmJlQVlMM2V0cVA1Z204d3JGb2pYMGlreVZSU3RRKy9BUTBLRWp0cUIwN2tMczlRVWU4Y3pSOFVHZmRNMUV1bVYvVWd2RGQ0TndOWXhMUU1nNFdUUWZna1FRVnk4R1had1ZIZ2JFL1VDNlk3MDUzcEdYQms1MU5QTTN3b3hoZDNnU1JMdlhqK2xvSHNTdGNURXFlOXBCRHBtRzUrc2s0dHcrR0szR01lRU41LytlMVFUOW5wL0tsMW5qK2FCdzdDMHhzeTBiRm5hQWQxY1NTNnhkb3J5L0NVdk02Z3RLc21uT09kcVRlc2JwMGJzOHNuNldxczBDOWRnY3hSSHVPTVoydG04bnBMVW03YXJnT1N6UT09IjsKCSJwdXJjaGFzZS1pbmZvIiA9ICJld29KSW1sMFpXMHRhV1FpSUQwZ0lqTTFNVEE1TWpVek15STdDZ2tpYjNKcFoybHVZV3d0ZEhKaGJuTmhZM1JwYjI0dGFXUWlJRDBnSWpFd01EQXdNREF3TURBMk1qVTNOVE1pT3dvSkluQjFjbU5vWVhObExXUmhkR1VpSUQwZ0lqSXdNVEF0TURjdE1qQWdNRGc2TWpFNk5UTWdSWFJqTDBkTlZDSTdDZ2tpY0hKdlpIVmpkQzFwWkNJZ1BTQWlhbkF1YTNKaGVTNWpZWEJ3Y3k1dGIyTnJMbWxzYkhWemRDNHhJanNLQ1NKMGNtRnVjMkZqZEdsdmJpMXBaQ0lnUFNBaU1UQXdNREF3TURBd01EWXlOVGMxTXlJN0Nna2ljWFZoYm5ScGRIa2lJRDBnSWpFaU93b0pJbTl5YVdkcGJtRnNMWEIxY21Ob1lYTmxMV1JoZEdVaUlEMGdJakl3TVRBdE1EY3RNakFnTURnNk1qRTZOVE1nUlhSakwwZE5WQ0k3Q2draVltbGtJaUE5SUNKcWNDNXJjbUY1TG1OaGNIQnpJanNLQ1NKaWRuSnpJaUE5SUNJeExqQWlPd3A5IjsKCSJwb2QiID0gIjEwMCI7Cgkic2lnbmluZy1zdGF0dXMiID0gIjAiOwp9'
def verify(receipt)
url = URI.parse(APPLE_RECEIPT_VERIFY_URL)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
json_request = {'receipt-data' => receipt}.to_json
resp, resp_body = http.post(url.path, json_request, {'Content-Type' => 'application/x-www-form-urlencoded'})
p resp_body
end
p "receipt length: #{receipt.length}"
p "receipt hash: #{receipt.crypt('12')}"
verify(receipt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment