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.

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

Starting with SDK 7.0.0, product purchases no longer mandate authorization via the user’s VK ID (providing an email for the receipt is sufficient). However, the getPurchases method always requires the user to be signed in via VK ID. To check whether RuStore is installed on the device, use the isRuStoreInstalled method from the RuStoreUtils utilities. This method returns true or false depending on whether RuStore is installed on the user’s device.

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

An authorization request is triggered when calling SDK methods:

  • getPurchases
  • getProduct
  • purchaseProduct

Starting with SDK 8.0.0, the getProduct method can be invoked without requiring the user to be logged into RuStore. Also, starting with version 8.0.0, there is no strict requirement for the user to be authorized in RuStore. When you call the purchaseProduct method, the payment SDK’s internal logic lets the user complete a purchase by either signing in via VK ID or entering an email address for the receipt on the payment sheet. However, when invoking the getPurchases method, the user will need to authorize with VK ID on the payment sheet. An authorization prompt will also reappear if more than 900 seconds have passed since the previous SDK method call.

For SDK versions below 8.0.0, the user must be authorized in RuStore. After confirming that RuStore is installed on the device, use the getAuthorizationStatus method to check whether the user is already authorized in RuStore. Then, call RuStoreUtils.openRuStoreAuthorization(context: Context) to open the RuStore authorization screen. Upon successful authorization, the user is automatically returned to your application. Reauthorization is not required until the user explicitly logs out of their RuStore profile.

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

Authorization is verified seamlessly for the user.