Iap Audit and custom store

Hello,
I am studying the Nakama API documentation, and I am searching information about the Virtual Store and the IAP.
I am looking at a couple of features I can not find in the documentation, can you please confirm me if this exists?

For IAP, I wish to list every transaction made for a game. This is for Auditing purpose, but also alerting in case of problem with the purchase/delivery of certain item. Is there such a feature in the Consol or somewhere else?

For store, virtual or real, I wish to customize the store for each user depending on multiple criteria. For example running a temporary promotion where an Item (purchased with hard or soft currencies) is cheaper than usual. Or an item available only if the user has specific criteria.

I guess I could achieve this by having my store config containing all object, and filtering with before-hook, but if there is something already embedded it would be easier :slight_smile:

The IAP Validation features in Nakama generally cover these requirements:

  • Validate a receipt against the Store Provider (we support many of them),
  • Prevent receipt replay attacks where the same receipt is used multiple times to grant the reward,
  • Prevent receipt sharing attacks where one player makes a purchase and then shares the same receipt with many other players.

This is for Auditing purpose, but also alerting in case of problem with the purchase/delivery of certain item. Is there such a feature in the Consol or somewhere else?

@Jonathan This feature is covered by both the Nakama Console API as well as within the Console UI as part of what’s called the “Purchases” view.

For store, virtual or real, I wish to customize the store for each user depending on multiple criteria. For example running a temporary promotion where an Item (purchased with hard or soft currencies) is cheaper than usual. Or an item available only if the user has specific criteria.

Nakama provides a large number of features for Social, Competitive, and Realtime game design. These include APIs like Guilds (Groups), Friends, Leaderboards, Cloud Storage, etc, etc.

For metagame features like Shop System, Achievements, Live Events, and others which you see in many of the best live services games on the market you can either use the Server Framework to implement the specific game design requirements from your game designer or have a look at our game development kit called Hiro.

https://heroiclabs.com/hiro/

All the requirements you mentioned for a Shop System are covered by Hiro’s Virtual Store:

  • Display Shop Items with localized prices and support both soft and hard currency purchases.
  • Present Shop Item bundles to players.
  • Personalize the Shop Items in the Store to a player specifically. Like progression based Shop Items or Discounts.
  • Run Dynamic Pricing experiments to change one or more Shop Item prices for segments of players.
  • Run Shop Promotions for players which could be linked to Live Events or similar in game content which is released for players.

Hope this helps.

Thank you for your fast answer !

I can see indeed the Purchase view in the console. It seems latest documentation does not reflect its presence however, do you have other guide or demo about what it can do?
I would rather avoid having to implement and make purchase to test the system if it is possible.

Concerning the Virtual store, I indeed looked at Hiro documentation, which give some information.

But I could not see information on how it can run player based promotion and time based promotion. I saw the guide on how to implement a ingame store, but the store is generic to every Player no matter what their language, or stats.

Maybe I missed it, but if such feature exist as part of Hiro, could you kindly link to the guide or documentation about these specific feature? Or would I need to add before/after hook to handle the additional features?

It seems latest documentation does not reflect its presence however, do you have other guide or demo about what it can do?

Thanks for the callout. I’ve asked our DevRel team to update that content.

I would rather avoid having to implement and make purchase to test the system if it is possible.

Can you share information about what you want to check with a test of the purchase system? Perhaps I can share some content which would help, keep in mind that IAP validation is used by 100s of games on Apple AppStore, Google Play, Discord Payments, Facebook Instant Gaming, and others; you can be confident it’s production ready.

But I could not see information on how it can run player based promotion and time based promotion. I saw the guide on how to implement a ingame store, but the store is generic to every Player no matter what their language, or stats.

Within Hiro we have designed the Virtual Store to be controlled with a variety of different discounts, promotions, and bundles based on what we call a Personalizer. For example to implement one time offers you can see our guide on it here:

https://heroiclabs.com/docs/hiro/guides/personalizer/one-time-store-offers/

The way store items are presented to the player can be entirely customized by code or within another tool which the Personalizer type is written to use.

Maybe I missed it, but if such feature exist as part of Hiro, could you kindly link to the guide or documentation about these specific feature? Or would I need to add before/after hook to handle the additional features?

Most game studios who use Hiro use a LiveOps tool like Satori or have some kind of remote configuration service which is used to define the content to apply in a Personalizer for the various store promotions or personalization to apply to segments of players or on an individual player.

Hope this helps.

Thanks !
I will come back at you with a more exhaustive list of requirement we are seeking for the Transaction Audit, but it mainly is about failing transaction. We need to be able to know when a transaction failed, and at what step, payment, delivery, validation …

Thanks for linking the Personalizer, when I skimmed the Satori doc, I did not realized I could also use it with the Virtual store.