{"id":25119329,"url":"https://github.com/thiagoesteves/applev","last_synced_at":"2025-10-14T00:04:23.721Z","repository":{"id":143332429,"uuid":"308405648","full_name":"thiagoesteves/applev","owner":"thiagoesteves","description":"This app validates Apple receipts with the App Store. The code is written in Erlang","archived":false,"fork":false,"pushed_at":"2020-11-17T01:31:44.000Z","size":64,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-14T00:04:18.790Z","etag":null,"topics":["apple","apple-validation","erlang","erlang-library"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thiagoesteves.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-10-29T17:45:01.000Z","updated_at":"2021-01-08T13:14:16.000Z","dependencies_parsed_at":"2023-06-25T19:44:12.764Z","dependency_job_id":null,"html_url":"https://github.com/thiagoesteves/applev","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thiagoesteves/applev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fapplev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fapplev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fapplev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fapplev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thiagoesteves","download_url":"https://codeload.github.com/thiagoesteves/applev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thiagoesteves%2Fapplev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017382,"owners_count":26086052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple","apple-validation","erlang","erlang-library"],"created_at":"2025-02-08T04:38:52.086Z","updated_at":"2025-10-14T00:04:23.716Z","avatar_url":"https://github.com/thiagoesteves.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://secure.travis-ci.org/thiagoesteves/applev.svg?branch=main)](http://travis-ci.org/thiagoesteves/applev)\n[![Coverage Status](https://coveralls.io/repos/github/thiagoesteves/applev/badge.svg?branch=main)](https://coveralls.io/github/thiagoesteves/applev?branch=main)\n[![Erlant/OTP Release](https://img.shields.io/badge/Erlang-OTP--23.0-green.svg)](https://github.com/erlang/otp/releases/tag/OTP-23.0)\n\n# This application validates apple receipts with App Store. [How to validate](https://developer.apple.com/documentation/storekit/in-app_purchase/validating_receipts_with_the_app_store)\n\n## Getting started ##\nYou need to clone the repository and download rebar/rebar3 (if it's not already available in your path).\n```\ngit clone https://github.com/thiagoesteves/applev.git\ncd applev\n```\nTo compile and run\n```\nmake\n```\n\n### How to use the application\n\nThe application has two modes of operation: Sync and Async. If you decide to use the sync mode, when validation function is called, the function will be blocked until it finishes (or timeout). If async mode is selected, you must pass the PID (or process name) of the destination process in order to receive the result and any argument to identify the validated receipt. See the examples:\n```erlang\n1\u003e applev:validate(\u003c\u003c\"Your Receipt Here\"\u003e\u003e).\n{ok,#{\u003c\u003c\"bid\"\u003e\u003e =\u003e \u003c\u003c\"com.es.Purchaser\"\u003e\u003e,\u003c\u003c\"bvrs\"\u003e\u003e =\u003e \u003c\u003c\"3\"\u003e\u003e,\n      ...\n      \u003c\u003c\"unique_vendor_identifier\"\u003e\u003e =\u003e\n          \u003c\u003c\"5C275B5A-3E66-4026-9523-845B225755FC\"\u003e\u003e}}\n2\u003e applev:validate_async(self(), \u003c\u003c\"Your Receipt Here\"\u003e\u003e, [arg1, arg2]).\n{ok,\u003c0.247.0\u003e}\n3\u003e flush().\nShell got {apple_receipt_return,{ok,#{\u003c\u003c\"bid\"\u003e\u003e =\u003e \u003c\u003c\"com.es.Purchaser\"\u003e\u003e,\n                                      ...\n                                      \u003c\u003c\"unique_vendor_identifier\"\u003e\u003e =\u003e\n                                          \u003c\u003c\"5C275B5A-3E66-4026-9523-845B225755FC\"\u003e\u003e},\n                                          [arg1, arg2]} }\nok\n```\n\n### How to test the application using the sandbox receipt example\n\nIn order to test the connectivity, there are test functions using sandbox receipt\n```erlang\n1\u003e applev:validate().\n{ok,#{\u003c\u003c\"bid\"\u003e\u003e =\u003e \u003c\u003c\"com.es.Purchaser\"\u003e\u003e,\u003c\u003c\"bvrs\"\u003e\u003e =\u003e \u003c\u003c\"3\"\u003e\u003e,\n      ...\n      \u003c\u003c\"unique_vendor_identifier\"\u003e\u003e =\u003e\n          \u003c\u003c\"5C275B5A-3E66-4026-9523-845B225755FC\"\u003e\u003e}}\n2\u003e applev:validate_async().\n{ok,\u003c0.247.0\u003e}\n3\u003e flush().\nShell got {apple_receipt_return,{ok,#{\u003c\u003c\"bid\"\u003e\u003e =\u003e \u003c\u003c\"com.es.Purchaser\"\u003e\u003e,\n                                      ...\n                                      \u003c\u003c\"unique_vendor_identifier\"\u003e\u003e =\u003e\n                                          \u003c\u003c\"5C275B5A-3E66-4026-9523-845B225755FC\"\u003e\u003e}\n                                      none}}\nok\n```\n\n### Unit Test and coverage\n\nThe following command will invoke common test and coverage.\n\n```\nmake test\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagoesteves%2Fapplev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthiagoesteves%2Fapplev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthiagoesteves%2Fapplev/lists"}