Getting Started
Installation
Simply add receipt_verifier to your list of dependencies in mix.exs
:
def deps do
[
{:receipt_verifier, "~> 0.12"},
{:jason, "~> 1.0"} # or {:poison, "~> 4.0"}
]
end
then run mix deps.get
and you are ready to go.
Usage
The main interface is ReceiptVerifier.verify/2
, which accepts a Base64-Encoded
receipt data and an optional option.
Options:
env
- (Optional) The environment, default to:auto
:production
- production environment:sandbox
- sandbox environment:auto
- choose the environment automatically, in this mode, if you send sandbox receipt to production server, it will be automatically resend to test server. Same for the production receipt.
exclude_old_transactions
- (Optional) Exclude the old transactionspassword
- (Optional) the shared secret used for auto-renewable subscriptions
Validate a receipt with App Store
iex> ReceiptVerifier.verify(BASE64_ENCODED_RECEIPT_DATA, env: :production)
{:ok, %ReceiptVerifier.ResponseData{app_receipt: %ReceiptVerifier.AppReceipt{adam_id: 0,
app_item_id: 0, application_version: "1241",
bundle_id: "com.sumiapp.GridDiary", download_id: 0,
iap_receipts: [%ReceiptVerifier.IAPReceipt{expires_date: nil,
is_trial_period: false,
original_purchase_date: #DateTime<2014-08-04 06:24:51.000Z>,
original_transaction_id: "1000000118990828",
product_id: "com.sumiapp.GridDiary.pro",
purchase_date: #DateTime<2014-09-02 03:29:06.000Z>, quantity: 1,
transaction_id: "1000000118990828", web_order_line_item_id: nil},
%ReceiptVerifier.IAPReceipt{expires_date: nil, is_trial_period: false,
original_purchase_date: #DateTime<2014-09-02 03:29:06.000Z>,
original_transaction_id: "1000000122102348",
product_id: "com.sumiapp.griddiary.test",
purchase_date: #DateTime<2014-09-02 03:29:06.000Z>, quantity: 1,
transaction_id: "1000000122102348", web_order_line_item_id: nil}],
original_application_version: "1.0",
original_purchase_date: #DateTime<2013-08-01 07:00:00.000Z>,
receipt_creation_date: #DateTime<2014-09-02 03:29:06.000Z>,
receipt_type: "ProductionSandbox",
request_date: #DateTime<2016-11-11 07:49:50.831Z>,
version_external_identifier: 0}, base64_latest_app_receipt: nil,
environment: "Sandbox", latest_iap_receipts: [], pending_renewal_receipts: []}}
JSON Encoder
By default, ReceiptVerifier
use Jason
to encode JSON, if you want to use Poison
,
you can configure :receipt_verifier
application with:
config :receipt_verifier, :json_library, Poison