A Sinatra implementation for a web server that talks with Apple for In-app-purchase-related stuff.
Just download the code, then run
bundle installfrom the local folder to install all the required gems.
This sinatra server works with the rack gem. Start the server using:
rackup config.ruIf you need to do some local test and need to frequently change source files, you can install the rerun gem and then
call this:
rerun 'rackup'This will automatically relaunch your local server instance whenever a source file is modified.
To test the calls in sandbox mode, you have to change the DEBUG constant at the beginning of server.rb. Set this
constant to true to sandbox all the calls, or set it to false to call the Apple production servers.
The server will support 3 different calls, to:
- Verify a purchase receipt with Apple
- Locally register a successful purchase
- Verify is a product has already been purchased
To accomplish these tasks, the server will require three parameters: a purchase_receipt, a product_identifier and a device_id.
All the exposed API calls can just be reached through the POST method.
Each API will respond with a JSON output, with this format:
{"result": value, "error" : {"message" : error_message}, "data" : custom_data}The result parameter will always be returned, with a 0 value for successful calls, and 1 for calls generating errors.
The error parameter could be returned when an exception is caught by the server. The inner message parameter will
describe the error itself.
The data parameter could be returned from API calls that need to send back custom, additional data. Its form is not know a priori.
Send POST calls to: http://server/verifyReceipt
with body:
{:purchase_receipt => "myBase64EncodedPurchaseReceipt"}
Send POST calls to: http://server/registerPurchase/:product_identifier/:device_id
Send POST calls to: http://server/verifyPurchase/:product_identifier/:device_id
