How to Implement In-App Purchases Case by Case

ONE store provides the managed product and subscription. Through the purchase of the product, the managed product can be turned into a status where customers can repurchase the same product. By using the characteristics of the managed product which can be repurchased after the consumption, the managed product can be made into Non-Renewable and Non-Consumable products and used. In addition, due to the characteristics of Android terminals, the result value may not be passed to the application after IAP is requested. And therefore, a developer's app is required to provide a flow to offer the product in that situation.

The following is a summary of guidelines for each type of products.

Managed Product

  • The managed product is managed by ONE store after the product is purchased once by users. To use the managed product as a consumable type product which can be consumed repeatedly, the purchased product is required to be consumed immediately after the product purchase is completed, and items must be provided for the users after the consumption request is successful. By using Check Purchase History(getPurchase) (Implementation of In-App Purchases > Check Purchase History - getPurchase()), developers can receive the list of the managed products which have not been consumed yet after the customers had completed the purchase and the list of the subscription products which were purchased by the customers. As for the managed product which is not consumed yet, the developer proceeds with the consumption of the product and provides items. As for the non-renewable and non-consumable product, the developer provides content that needs to be provided in addition by comparing with the information of a developer's server.

Subscription

  • As for the subscription product, customers make the first purchase in person and ONE store will manage payment renewal during the period from the following month to an explicit cancellation of the product. Developers can cancel the subscription through the API and must provide a flow within the application to enable users to cancel the subscription. When the user proceeds with the cancellation of the subscription, the product in question will not be cancelled immediately but will be turned into the state of the reservation of cancellation. If the repurchase is not made after the expiration of the subscription product which was in use at the time when the cancellation was booked, the product will not be displayed in Check Purchase History (getPurchase) (Implementation of In-App Purchases > Check Purchase History - getPurchase()). During the waiting time for the cancellation of the product, the developer is required to equally provide the subscription product for the user. For details on the subscription product, use ONE store In-App Purchase Server API.

Non-Renewable & Non-Consumable Product

  • Non-Renewable and Non-Consumable products can be defined as follows.

    • Non-Renewable product: the right to use this product/service is granted for a certain period of time. This product is different from the subscription in that the automatic payment is not made upon the expiration of the term.

    • Non-Consumable product: the right to permanently use this product/service is granted if this product is purchased only once.

    The non-renewable and non-consumable products are not the type of the products officially provided by the ONE store IAP. However, developers can implement these products by using the managed product in a way that they directly manage the consumption of the product. In other words, if a non-renewable product is needed, the developer creates a managed product. If a customer purchases the created managed product, the developer implements a non-renewable product by providing the customer with the managed product without consumption. Instead, after the validity period of the product expires, the developer proceeds with the consumption of the non-renewable product of this customer through ONE store's consumePurchase server API<link>. The consumption of the product should be processed according to the validity period of the product, and therefore the developer is required to directly manage the validity period of the product in its service server. As a result, the developer is responsible for the mismanagement if the customer cannot use the product service continuously because the consumption is not processed after the validity period, or if the customer fails to use the product service during the validity period due to the false processing of the consumption. If a non-consumable product is needed, the developer creates a managed product. Likewise, if a customer purchases the created managed product, the developer can implement a non-consumable product by providing the customer with the managed product without consumption. The developer is required to enable the customer to permanently use the product without repurchase, and therefore it makes the product non-consumable without consuming the product permanently. If the developer wants to run the non-renewable and non-consumable products, the developer's app is required to provide the service of these products continuously if these products are checked in Implementation of In-App Purchase > Check Purchase History(getPurchase).

Recovery When Failed to Provide Products

  • Even if the purchase by users is completed, the result may be passed as failure to the developer's app when the network is temporarily disconnected during the purchase process. Or the purchase result may not be received at all due to the app crashing caused by unknown errors. In this case, a serious problem will arise in which the users are not provided with the items of the developer's app even though they paid the amount of money. To minimize such a problem and to prevent problems from occurring when the users buy the same products, the developer is required to import the list of in-app products which were not consumed by using Check Purchase History (getPurchase) (Implementation of In-App Purchases > Check Purchase History - getPurchase()) and proceed with the consumption of the in-app product by using Consume In-App Products (consumePurchase) (Implementation of In-App Purchases > Consume In-App Products (consumePurchase)), during the execution of app or by providing a purchase recovery button. And then a logic must be entered to reprocess the provision of a developer's app items.

Last updated