In-App Purchases are not only just subscriptions. Subscriptions are the hardest to handle but you can also sell consumables, non-consumables and non-renewing subscriptions and they are also handled by Purchasely.
They are simpler products to handle but as you have Purchasely in place you might want to handle everything in one place and that's a good thing to keep it in one place.
Consumables – available once This is a product that needs to be bought again after use. For example coins in games, swipes or loves in dating apps.
Non-consumable – always available This is a product with no expiry date that will remain available in your app. That can be an unlocked feature, level or item in a game (golf club in a golf game, new car, engine, paint in a car game).
Non-renewing subscriptions – available a fixed amount of time This item will only give you the access during a certain amount of time (usually long) but you will have to manually renew if you want to. Non renewing can be helpful if you sell a content in education that covers a special degree that most user will pass next year.
Consumables, non-consumables and non-renewing subscriptions can be declared just like a regular plans.
You can either choose them to be inside a new product (for example coins offerings will be inside a "Coins" product and you will have several plans like "100 coins", "200 coins", …).
You can also add a non-consumable alongside subscriptions in the same product. It can be a lifetime access to a feature next to a monthly and yearly subscription. This is a pretty common behaviour and we will take that example.
First you need to add a plan to a product (newly created or not).
Once the purchase is done, the Webhook will send the
If the user asks Apple, Google, … for a refund (and gets it) you will receive a
PURCHASE_REFUND event. In that case you should make the appropriate action like:
Substract the coins purchased
Block access to the game level
You should also handle the
PURCHASE_TRANSFERRED events to chnage the user owner.
While regular restoration works for non-consumables, it won't work for consumables or non-renewing subscriptions. For these types of products, your app must have its own restoring function. That restoration can be made using an account creation and linking the purchase to that account.