Skip to main content

Accepting Payments Without RuStore Installed

Users can now make payments and subscribe in your app, even if RuStore is not installed on their devices.

When making subscription payments, users will need to log in with their VK ID, but for in-app purchases, just providing an email for the receipt will be enough.

note

This feature is available when using the Payments SDK v.6.1.0 or higher. Please follow the recommended SDK adjustments before implementing the SDK.

Advantages

Boost your revenue and build a loyal audience with the following benefits:

  • Users can make purchases without having to install RuStore.
  • You can keep accepting payments while publishing your apps across multiple platforms.

Purchases For Unauthorized Users

  • Payments without VK ID authorization are only available for consumable and non-consumable in-app purchases. Subscription payments still require authorization.

  • The buyer must provide an email address to receive a receipt for the purchase.

  • During payment, the buyer will be prompted to install RuStore to view their purchase history.

  • Payment methods are not saved, so the buyer will need to enter their payment details each time. To save payment methods for future purchases, the buyer must be logged in with VK ID.

  • The app should not request a list of purchases or available products, as this is not possible for unauthorized users. Refer to the recommended SDK adjustments for details on how to avoid these SDK calls.

  • Refunds for unauthorized buyers can only be processed using the receipt sent to the email provided at the time of purchase. See the Refund Process for Users Without Authorization for details.

Purchases For Authorized Users

  • Authorization via VK ID is required for subscription payments. However, buyers can choose to authorize when making in-app purchases as well.

  • During payment, buyers will be prompted to install RuStore, allowing them to skip authorization for future in-app payments.

  • Users must be logged in with VK ID when the Payments SDK requests the list of purchases (getPurchases method) or the list of available products (getProducts method). To minimize the number of authorization requests, refer to the recommended SDK adjustments.

User Actions

The steps for making purchases are outlined in the user documentation. You'll also find tips there on how to streamline VK ID authorization.

Before you start

We recommend making the following improvements before upgrading to Payments SDK version 6.0.0 or higher.

Minimize Authorization Requests

Your app may need to retrieve a list of purchases or available products from the SDK, for instance, to show a user’s game balance, subscription status, or to verify if they’ve bought the PRO version.

These requests will often require the user to log in with their VK ID, which can be inconvenient and potentially frustrating for them.

To reduce the number of authorization prompts, replace calls to the Payment SDK (getPurchases and getProducts methods) with internal logic within your app. You can store purchase and product data locally or on a server and update it via the RuStore API.

Additionally, encourage users to link their account (such as Google Play) to save their game progress and purchases.

By minimizing these SDK requests, the user will only need to log in when making a purchase.

Set up Analytics

If your app is available on multiple platforms and you want to track payment flows based on the app's installation source, consider creating different build variants using build flavors. This will help you gather analytics specific to each distribution channel.

Authorization Request Features

This table specifies the conditions and frequency for which users receive authorization requests.

ContextAuthorization requestFeatures
RuStore is not installed on the device

Authorization request looks like:

  • when calling SDK methods in each app session:
    • getPurchases
    • getProduct
    • purchaseProduct
  • If there is a gap of more than 900 seconds between SDK method calls within the same session:
    • getPurchases
    • getProduct
    • purchaseProduct

Subsequent authorization requests within the same application session are completed with a single click.

To verify if RuStore is installed on the device, use the isRuStoreInstalled method from the RuStoreUtils utility set. This method returns true if RuStore is present and false if it is not.

RuStore is installed on the device, but the user is not authorized

An authorization request is triggered when calling SDK methods:

  • getPurchases
  • getProduct
  • purchaseProduct

To authorize, users are redirected to the RuStore application. Re-authorization is only required if the user logs out of their profile in RuStore.

To check if payments are available, use the checkPurchasesAvailability method. If all necessary conditions are met, FeatureAvailabilityResult.Available is returned. Otherwise, FeatureAvailabilityResult.Unavailable(val cause: RuStoreException), is returned, where cause provides details about the unmet condition. For a list of all possible RuStoreException errors, refer to the Error Handling section.

RuStore is installed on the device, and the user is authorized

Authorization is verified seamlessly for the user.