Purchasely
4.4
4.4
  • Welcome page
  • General
    • Presentation
    • Release notes
  • Quick start
    • Console Configuration
    • SDK Implementation
    • Testing
    • Sample
  • Basic configuration
    • Console Configuration
      • Creating a new application
      • Creating your Products
        • App Store
        • Play Store
        • Huawei App Gallery
        • Amazon App Store
        • Products & Plans
      • Design your Paywalls
      • Design your Paywalls-Latest
        • Carousel
        • Carousel Flow
        • Features List
        • Features List & Plan Picker with 2 & 3 columns
        • Feature list overlay
        • Plan picker horizontal
        • Plan picker with 2 and 3 Column
    • SDK installation
      • iOS SDK
      • Android SDK
      • React Native SDK
      • Cordova SDK
      • Flutter SDK
      • Unity SDK
    • SDK configurations
      • Paywall observer mode
      • Full mode
      • StoreKit 2
      • Appendices
        • Start the SDK
        • Set User Id
        • Notify when the app is ready
        • Present paywalls
        • Unlock content / service
        • Close SDK (Android only)
    • Stripe
    • Purchasely with RevenueCat
  • S2S notifications
    • Server-to-server notifications ?
    • Apple App Store
    • Google Play Store
    • Huawei App Gallery
  • Analytics
    • Dashboards
      • Introduction
      • Live
      • Subscriptions
      • Cohorts
      • Trials
      • Events
    • Events
      • Webhook events
        • Subscription events
        • Subscription events attributes
      • SDK events
        • UI events
        • UI attributes
  • Integrations
    • Webhook
      • Receiving and understanding messages
      • Managing entitlements
      • Detailed sequence diagrams
    • Airship
    • Amplitude
    • AppsFlyer
    • Adjust
    • Piano analytics(ex AT Internet)
    • Batch
    • Branch
    • Braze
    • Clevertap
    • Customer.io
    • Firebase
    • Iterable
    • Mixpanel
    • MoEngage
    • OneSignal
    • Segment
    • Brevo(ex Sendinblue)
  • Advanced Features
    • Asynchronous paywalls
    • NEW: Promotional offers
    • Anonymous user
    • Associating content
    • Audiences
    • Customising UI
      • Errors & alerts
      • Controllers (iOS) / Fragments (Android)
    • Deeplinks automations
    • Disable placements
    • Displaying users subscriptions
    • Localization
    • Lottie animations
    • Non-subscription products
    • Paywall action interceptor
    • Promoting your products
      • Self-promotion
      • Promoting In-App Purchases
    • Purchase manually
    • Subscription status
    • Use your own paywall
  • Others
    • Frequently Asked Questions
    • Migration guides
      • Migrate to Purchasely
      • Webhook
        • Migrate to Webhook v3.0
      • SDK
        • Migrate to SDK v3.0
          • v2.2.0
          • v2.1.3
        • Migrate to SDK v3.1
        • Migrate to SDK v3.2
        • Migrate to SDK v4.0.0
  • TESTING
    • Testing Cycle Durations
Powered by GitBook

© Purchasely 2020-2023

On this page
  • Consumables ? Non-consumables ? Non-renewing subscriptions ?
  • Implementation
  • Setup the plan
  • Add the plan to a presentation
  • Handle the purchase on your server
  • Handle restoration

Was this helpful?

Edit on GitHub
  1. Advanced Features

Non-subscription products

PreviousLottie animationsNextPaywall action interceptor

Last updated 1 year ago

Was this helpful?

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.

Consumables ? Non-consumables ? Non-renewing subscriptions ?

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.

Implementation

Purchasely will verify the purchase but won't keep track of it. This must be done outside of Purchasely. So if you unlock a level with a non-consumable product, add coins to you game wallet with consumables… you will have to save the unlocked feature or increment the number of coins in the users wallet on your server or app.

We recommend you to do it server side using the Webhook notifications.

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.

Setup the plan

First you need to add a plan to a product (newly created or not).

Create a new plan for a non subscription product

Recommendations:

  • Be sure to select the appopriate type of product (Step 1)

  • Use a Plan Vendor ID that your can easily identify as this will be the identifier sent to your server to increment the items to your users account or unlock the content (Step 3)

  • If you build a lifetime purchase, set a plan level higher than any other subscription (Step 4)

  • If you are inside a game coin product, the more coins are contained, the higher plan level should be (Step 4)

Add the plan to a presentation

Handle the purchase on your server

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 USER_IDENTIFIED and PURCHASE_TRANSFERRED events to change the user owner.

Handle restoration

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.

Exemple of the addition of a purchase button for a lifetime purchase

Once the purchase is done, the will send the PURCHASE_VALIDATED event.

Webhook