Getting Started
Installation
Simply add receipt_verifier to your list of dependencies in mix.exs:
def deps do
[
{:receipt_verifier, "~> 0.13"},
{:jason, "~> 1.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. With this config, if you send the receipt to a server with mismatched environment, it will be automatically resend to another environment.
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