{"id":14960610,"url":"https://github.com/ivanmurzak/unity-iap-store","last_synced_at":"2025-07-31T04:03:21.763Z","repository":{"id":53148334,"uuid":"443115735","full_name":"IvanMurzak/Unity-IAP-Store","owner":"IvanMurzak","description":"Powerful Store manager for Unity project. Can handle everything related to: ingame currencies, ingame shop items, IAP purchases, subscriptions, data save with encryption.","archived":false,"fork":false,"pushed_at":"2024-11-10T10:13:16.000Z","size":1523,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T03:38:29.377Z","etag":null,"topics":["iap","store","unity","unity-iap","unity-plugin"],"latest_commit_sha":null,"homepage":"","language":"ShaderLab","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IvanMurzak.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}},"created_at":"2021-12-30T15:37:56.000Z","updated_at":"2024-12-26T19:14:40.000Z","dependencies_parsed_at":"2024-09-29T06:19:09.539Z","dependency_job_id":null,"html_url":"https://github.com/IvanMurzak/Unity-IAP-Store","commit_stats":{"total_commits":38,"total_committers":2,"mean_commits":19.0,"dds":"0.13157894736842102","last_synced_commit":"9448278365a46115fabd76fad30391d76d90ed55"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanMurzak%2FUnity-IAP-Store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanMurzak%2FUnity-IAP-Store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanMurzak%2FUnity-IAP-Store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanMurzak%2FUnity-IAP-Store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IvanMurzak","download_url":"https://codeload.github.com/IvanMurzak/Unity-IAP-Store/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238024405,"owners_count":19403837,"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","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":["iap","store","unity","unity-iap","unity-plugin"],"created_at":"2024-09-24T13:22:36.532Z","updated_at":"2025-02-09T21:32:44.237Z","avatar_url":"https://github.com/IvanMurzak.png","language":"ShaderLab","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unity IAP Store\n\n![npm](https://img.shields.io/npm/v/extensions.unity.iap.store) [![openupm](https://img.shields.io/npm/v/extensions.unity.iap.store?label=openupm\u0026registry_uri=https://package.openupm.com)](https://openupm.com/packages/extensions.unity.iap.store/) ![License](https://img.shields.io/github/license/IvanMurzak/Unity-IAP-Store) [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)\n\n![image](https://user-images.githubusercontent.com/9135028/182879404-d7cbc547-5f3d-4b08-9185-fcaf10b0080c.png)\n\nPowerful Store manager for Unity project. You have codeless products management system, where you can create in-game products. Create all currencies with custom names and icons. Each product has price in single or multiple in-game currencies. Ability to create bundle of different products and sell them in single purchase. Any product can be easily swapped to IAP or back to in-game product. Fully supported IAP for iOS and Android out of the box, other platforms supported also, just need to extend fram base class and add needed to you code.\n\n## Features\n\n- ✔️ add custom currencies\n- ✔️ item price in multiple currencies\n- ✔️ item categorization\n- ✔️ in-app purchases supported for iOS and Android\n- ✔️ currencies management\n- ✔️ pack of multiple products by single purchase\n- ✔️ pack of multiple currencies by single purchase\n- ✔️ drawer for showing items in Unity UI with ability to override for any other UI system\n- ✔️ drawer adapter for showing all items from specific category in Unity UI with ability to override for any other UI system\n\n# How to install - Option 1 (RECOMMENDED)\n\n- Install [ODIN Inspector](https://odininspector.com/)\n- Install [OpenUPM-CLI](https://github.com/openupm/openupm-cli#installation)\n- Open command line in Unity project folder\n- `openupm add extensions.unity.iap.store`\n\n# How to install - Option 2\n\n- Install [ODIN Inspector](https://odininspector.com/)\n- Add this code to \u003ccode\u003e/Packages/manifest.json\u003c/code\u003e\n\n```json\n{\n  \"dependencies\": {\n    \"extensions.unity.iap.store\": \"4.12.2\",\n  },\n  \"scopedRegistries\": [\n    {\n      \"name\": \"package.openupm.com\",\n      \"url\": \"https://package.openupm.com\",\n      \"scopes\": [\n        \"extensions.unity\",\n        \"com.cysharp.unitask\",\n        \"com.neuecc.unirx\"\n      ]\n    }\n  ]\n}\n```\n\n# How to setup\n\n### 1. Extends from `StoreSO`\n\nOverride at least abstract method. You should take of saving your data in persistent memory. There are basic methods required to implement in the example below.\n\n```C#\nusing System;\nusing System.Collections.Generic;\nusing Sirenix.Serialization;\nusing UnityEngine;\nusing UniRx;\nusing Project.Store;\nusing BigInt = System.Numerics.BigInteger;\n\n[CreateAssetMenu(fileName = \"MyStore\", menuName = \"Store/MyStore\")]\npublic class MyStore : StoreSO\n{\n    [OdinSerialize, NonSerialized]\n    public ReactiveProperty\u003cBigInt\u003e balance = new ReactiveProperty\u003cBigInt\u003e();\n\n    public override IObservable\u003cPrice\u003e OnBalanceChanged(string currency)\n    {\n        return balance.Select(x =\u003e new Price(currency, x));\n    }\n\n    public override BigInt GetBalance(string currency)\n    {\n        return balance.Value;\n    }\n\n    protected override void SpendBalance(string currency, BigInt amount)\n    {\n        balance.Value -= amount;\n    }\n    protected override void ApplyPurchase(List\u003cIStoreSellable\u003e sellables)\n    {\n        // Apply purchase here\n    }\n}\n```\n\n### 2. Create instance of the new ScriptableObject `MyStore`\n\nCreate instance and do setup. You can add as many currencies as needed. Also you can use it without currencies at all, if you just need to handle in-app purchases.\n![Unity_4gPx4Wi804](https://user-images.githubusercontent.com/9135028/182863155-054f4b69-085f-4cae-8e55-3e24b21e1127.gif)\n\n### 3. Add StoreInstaller to any gameObject\n\n![Unity_uV6ioqFm1l](https://user-images.githubusercontent.com/9135028/182876230-67e7bd27-418d-46ff-8e9c-710a8b2ebe2a.gif)\n\n# How to show sellable item(s) in UI\n\nThis system is quite independent, but you need to show sellable items for a user, to make ability for a user to buy them. There are multiple ways to do that.\n\n- create prefab for drawing UI element which represent single item for selling. If you need you can use multiple prefabs for different reasons in different places\n- add `StoreSellableDrawer_UGUI` component to the prefab\n- bind all required elements to the component\n\n![image](https://user-images.githubusercontent.com/9135028/182894050-03907564-178f-4ea9-890c-056dcb8ba9a2.png)\n\nIt can be used for showing single sellable item.\n\n## Adapters\n\nAdapter generates multiples items, very easy to setup all of them from single place with small amount of setup steps.\n\n- `StoreCategoryAdapter` - shows list of sellable items from specific category\n- `StoreCustomAdapter` - shows custom list of sellable items\n- Or create your own StoreAdapter, for that need to extand from `StoreAdapter`. Also you may create custom StoreSellableDrawer for any UI system in case if you don't use Unity UI.\n\n![image](https://user-images.githubusercontent.com/9135028/182894888-15171454-b3e7-438b-9a35-dbd11f51c2cc.png)\n\n# How to show player's current currencies balance in UI\n\n`CurrencyBalanceDrawer_UGUI_TMP` show currency balance and refreshes it when it changed.\n\n![image](https://user-images.githubusercontent.com/9135028/182909230-64a3e610-73b8-463d-8acf-d61c10d8f323.png)\n\n# How to show separate price of specific sellable item\n\nThat is easy. Just create any gameObject with Text component and add `PriceDrawer` on it.\n\n![image](https://user-images.githubusercontent.com/9135028/182895876-2cc5b343-b3c7-4a71-8552-1e5c259939ab.png)\n\n# Other\n\n- to execute `Purchase` action without sellable item drawer and/or adapter use `SimplePurchaser`\n- to restore non-consumable in-app purchases use `SimpleInAppPurchaseRestorer`\n\n![image](https://user-images.githubusercontent.com/9135028/182900204-5c9dddf7-87f6-4c34-b76d-6e70b1b8ae64.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanmurzak%2Funity-iap-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivanmurzak%2Funity-iap-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanmurzak%2Funity-iap-store/lists"}