Skip to content
Ruby Gem for In-App Purchase Receipt Verification
Ruby
Branch: master
Clone or download

Latest commit

AlexanderZaytsev Update README.md (#84)
Add info on how to generate a shared secret.
Latest commit 3a33515 May 28, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Update code style in bin/iap Apr 3, 2018
lib Add missing fields in pending renewal info (#82) Dec 5, 2019
spec Fix typo: rerenewal => renewal (#81) Dec 5, 2019
.gitignore Clean up .gitignore Apr 3, 2018
.rspec Clean up .gitignore Apr 3, 2018
.travis.yml Bump Ruby versions (#78) Oct 4, 2019
Gemfile Add git_source to Gemfile Apr 3, 2018
LICENSE Updating copyright Mar 6, 2015
README.md Update README.md (#84) May 27, 2020
Rakefile Clean up Rakefile, use tasks from Bundler and RSpec Oct 11, 2017
venice.gemspec Update code style Jul 30, 2018

README.md

Venice

Travis

Venice is a simple gem for verifying Apple In-App Purchase receipts, and retrieving the information associated with receipt data.

There are two reasons why you should verify in-app purchase receipts on the server: First, it allows you to keep your own records of past purchases, which is useful for up-to-the-minute metrics and historical analysis. Second, server-side verification over SSL is the most reliable way to determine the authenticity of purchasing records.

See Apple's Receipt Validation Programming Guide for additional information.

Venice is named for Venice, Italy—or more specifically, Shakespeare's The Merchant of Venice. It's part of a series of world-class command-line utilities for iOS development, which includes Cupertino (Apple Dev Center management), Shenzhen (Building & Distribution), Houston (Push Notifications), Dubai (Passbook pass generation), and Nashville (iTunes Store API).

Installation

$ gem install venice

Usage

Basic

require 'venice'

data = '(Base64-Encoded Receipt Data)'
if receipt = Venice::Receipt.verify(data)
  p receipt.to_h

  # You can refer an original JSON response via a Receipt instance.
  case receipt.original_json_response['status'].to_i
    when 0     then foo
    when 21006 then bar
  end
end

For Auto-Renewable

require 'venice'

data = '(Base64-Encoded Receipt Data)'

# You must pass shared secret when verification on Auto-Renewable
# To generate a shared secret, go to App Store Connect -> My Apps > (Your app) > In-App Purchases > View or generate a shared secret
opts = { shared_secret: 'your key' }

if receipt = Venice::Receipt.verify(data, opts)
  # Renewed receipts are added into `latest_receipt_info` array.
  p receipt.latest_receipt_info.map(&:expires_at)
  # => [2016-05-19 20:35:59 +0000, 2016-06-18 20:35:59 +0000, 2016-07-18 20:35:59 +0000]
end

Command Line Interface

Venice also comes with the iap binary, which provides a convenient way to verify receipts from the command line.

$ iap verify /path/to/receipt

+--------------------------------+------------------------------------+
|                               Receipt                               |
+--------------------------------+------------------------------------+
| adam_id                        | 664753504                          |
| application_version            | 123                                |
| bundle_id                      | com.example.product                |
| download_id                    | 30000000000005                     |
| expires_at                     |                                    |
| latest_receipt                 |                                    |
| original_application_version   | 123                                |
| original_purchase_date         | Fri, 07 Mar 2014 20:59:24 GMT      |
| receipt_type                   | Production                         |
| receipt_created_at             | Mon, 23 Jun 2014 17:59:38 GMT      |
| requested_at                   | Mon, 23 Jun 2014 17:59:38 GMT      |
+--------------------------------+------------------------------------+
| in_app                         | 1                                  |
|  - app_item_id                 |                                    |
|  - cancellation_at             |                                    |
|  - expires_at                  |                                    |
|  - original_purchase_date      |                                    |
|  - original_transaction_id     | 1000000000000001                   |
|  - product_id                  | com.example.product                |
|  - purchase_date               |                                    |
|  - quantity                    | 1                                  |
|  - transaction_id              | 1000000000000001                   |
|  - web_order_line_item_id      | 1000000000000001                   |
|  - version_external_identifier |                                    |
|  - is_trial_period             | true                               |
|  - is_in_intro_offer_period    | true                               |
+--------------------------------+------------------------------------+

Creator

Mattt Thompson (@mattt)

License

Venice is available under the MIT license. See the LICENSE file for more info.

You can’t perform that action at this time.