Skip to content

rustore-dev/flutter-rustore-billing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

flutter_rustore_billing

Flutter RuStoreSDK для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ

ΠžΠ±Ρ‰Π΅Π΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ, рСкомСндуСтся ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ-ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ

Условия Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ провСдСния ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ соблюдСниС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… условий:

  • На устройствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн RuStore.
  • RuStore Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½ Π² RuStore.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² RuStore.
  • Для прилоТСния Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ Π² консоли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° RuStore.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

flutter pub add flutter_rustore_billing

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ строчку Π² Ρ„Π°ΠΉΠ» pubspec.yaml

dependencies:
    flutter_rustore_billing: ^2.0.0

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° deeplink

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· сторонниС прилоТСния (Π‘Π‘ΠŸ ΠΈΠ»ΠΈ SberPay), Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ deeplink. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² AndroidManifest.xml intent-filter с scheme вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

<activity
android:name=".sample.MainActivity">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="yourappscheme" />
    </intent-filter>

</activity>

Π³Π΄Π΅ "yourappscheme" - схСма вашСго deeplink, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Π­Ρ‚Π° схСма Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ со схСмой, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ initialize().

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ RustoreBillingClient.initialize():

RustoreBillingClient.initialize(
    "123456",
    "yourappscheme://iamback",
    ).then((value) {
        print("initialize success: $value");
    }, onError: (err) {
        print("initialize err: $err");
});

123456 - ΠΊΠΎΠ΄ прилоТСния ΠΈΠ· консоли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° RuStore (ΠΏΡ€ΠΈΠΌΠ΅Ρ€: https://console.rustore.ru/apps/123456). yourappscheme://iamback - cΡ…Π΅ΠΌΠ° deeplink, нСобходимая для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ послС ΠΎΠΏΠ»Π°Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· стороннСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SberPay ΠΈΠ»ΠΈ Π‘Π‘ΠŸ). SDK Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ свой хост ΠΊ Π΄Π°Π½Π½ΠΎΠΉ схСмС. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ схСма deeplink, пСрСдаваСмая Π² deeplinkScheme, совпадала со схСмой, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² AndroidManifest.xml Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ "ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° deeplink".

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° доступности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°ΠΌΠΈ

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ доступности ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ условия:

  • На устройствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн RuStore.
  • RuStore Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½ Π² RuStore.
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² RuStore.
  • Для прилоТСния Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ Π² консоли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° RuStore.
  • Если всС условия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, ΠΌΠ΅Ρ‚ΠΎΠ΄ RustoreBillingClient.available() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.
RustoreBillingClient.available().then((value) {
        print("available success $value");
    }, onError: (err) {
        print("available err: $err");
});

Π Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²

Для получСния ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ RustoreBillingClient.products(ids):

RustoreBillingClient.products(ids).then((response) {
        for (final product in response.products) {
            print(product?.productId);
        }
    }, onError: (err) {
        print("products err: $err");
});

ids: List<String?> - список ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ProductsResponse:

class ProductsResponse {
    int code;
    String? errorMessage;
    String? errorDescription;
    String? traceId;
    List<Product?> products;
    List<DigitalShopGeneralError?> errors;
}
  • code - ΠΊΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‚Π°.
  • errorMessage - сообщСниС ΠΎΠ± ошибкС.
  • errorDescription - описаниС ошибки.
  • traceId - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ошибки.
  • errors - список ошибок.
  • products - список ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ошибки DigitalShopGeneralError:

class DigitalShopGeneralError {
    String? name;
    int? code;
    String? description
}
  • name - имя ошибки.
  • code - ΠΊΠΎΠ΄ ошибки.
  • description - описаниС ошибки.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Product:

class Product {
    String productId;
    String? productType;
    String productStatus;
    String? priceLabel;
    int? price;
    String? currency;
    String? language;
    String? title;
    String? description;
    String? imageUrl;
    String? promoImageUrl;
    Subscription? subscription;
}
  • productId - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  • productType - Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  • productStatus - статус ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  • priceLable - отформатированная Ρ†Π΅Π½Π° Ρ‚ΠΎΠ²Π°Ρ€Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π°Π»ΡŽΡ‚Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ Π½Π° языкС [language].
  • price - Ρ†Π΅Π½Π° Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ….
  • currency - ΠΊΠΎΠ΄ Π²Π°Π»ΡŽΡ‚Ρ‹ ISO 4217.
  • language - язык, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BCP 47 кодирования.
  • title - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½Π° языкС [language].
  • description - описаниС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½Π° языкС [language].
  • imageUrl - ссылка Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ.
  • promoImageUrl - ссылка Π½Π° ΠΏΡ€ΠΎΠΌΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ.
  • subscription - описаниС подписки, возвращаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² с Ρ‚ΠΈΠΏΠΎΠΌ subscription.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° подписки Subscription:

class Subscription {
    SubscriptionPeriod? subscriptionPeriod;
    SubscriptionPeriod? freeTrialPeriod;
    SubscriptionPeriod? gracePeriod;
    String? introductoryPrice;
    String? introductoryPriceAmount;
    SubscriptionPeriod? introductoryPricePeriod;
}
  • subscriptionPeriod - ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ подписки.
  • freeTrialPeriod - ΠΏΡ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ подписки.
  • gracePeriod - Π»ΡŒΠ³ΠΎΡ‚Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ подписки.
  • introductoryPrice - отформатированная Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ†Π΅Π½Π° подписки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π·Π½Π°ΠΊ Π²Π°Π»ΡŽΡ‚Ρ‹, Π½Π° языкС product:language.
  • introductoryPriceAmount - Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ†Π΅Π½Π° Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… Π²Π°Π»ΡŽΡ‚Ρ‹ (Π² ΠΊΠΎΠΏΠ΅ΠΉΠΊΠ°Ρ…).
  • introductoryPricePeriod - расчСтный ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅Π½Ρ‹.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° подписки SubscriptionPeriod:

class SubscriptionPeriod {
    int years;
    int months;
    int days;
}
  • years - количСство Π»Π΅Ρ‚.
  • months - количСство мСсяцСв.
  • days - количСство Π΄Π½Π΅ΠΉ.

Π Π°Π±ΠΎΡ‚Π° с ΠΏΠΎΠΊΡƒΠΏΠΊΠ°ΠΌΠΈ

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ

Для получСния списка ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ RustoreBillingClient.purchases():

RustoreBillingClient.purchases().then((response) {
        for (final product in response.purchases) {
            print(product?.purchaseId);
        }
    }, onError: (err) {
        print("purchases err: $err");
});

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ PurchasesResponse:

class PurchasesResponse {
    int code;
    String? errorMessage;
    String? errorDescription;
    String? traceId;
    List<Purchase?> purchases;
    List<DigitalShopGeneralError?> errors;
}
  • code - ΠΊΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‚Π°.
  • errorMessage - сообщСниС ΠΎΠ± ошибкС.
  • errorDescription - описаниС ошибки.
  • traceId - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ошибки.
  • errors - список ошибок.
  • purchases - список ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ошибки DigitalShopGeneralError:

class DigitalShopGeneralError {
    String? name;
    int? code;
    String? description;
}
  • name - Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ошибки.
  • code - ΠΊΠΎΠ΄ ошибки.
  • description - описаниС ошибки.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ Purchase:

class Purchase { String? purchaseId; String? productId; String? description; String? language; String? purchaseTime; String? orderId; String? amountLabel; int? amount; String? currency; int? quantity; String? purchaseState; String? developerPayload; }

  • purchaseId - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ.
  • productId - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  • description - описаниС ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ.
  • language - язык, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BCP 47 кодирования.
  • purchaseTime - врСмя ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ (Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ RFC 3339).
  • orderId - ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΏΠ»Π°Ρ‚Ρ‹, сформированный ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (uuid).
  • amountLable - отформатированная Ρ†Π΅Π½Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π°Π»ΡŽΡ‚Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ Π½Π° языкС [language].
  • amount - Ρ†Π΅Π½Π° Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… Π²Π°Π»ΡŽΡ‚Ρ‹.
  • currency - ΠΊΠΎΠ΄ Π²Π°Π»ΡŽΡ‚Ρ‹ ISO 4217.
  • quantity - количСство ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  • purchaseState - состояниС ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ.
    • CREATED - создана.
    • INVOICE_CREATED - создана, ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΎΠΏΠ»Π°Ρ‚Ρ‹.
    • CONFIRMED - ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π°.
    • PAID - ΠΎΠΏΠ»Π°Ρ‡Π΅Π½Π°.
    • CANCELLED - ΠΏΠΎΠΊΡƒΠΏΠΊΠ° ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°.
    • CONSUMED - ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ.
    • CLOSED - подписка Π±Ρ‹Π»Π° ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°.
  • developerPayload - указанная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ строка, содСрТащая Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°ΠΊΠ°Π·Π΅.

ΠŸΠΎΠΊΡƒΠΏΠΊΠ° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

Для Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ RustoreBillingClient.purchase(id):

RustoreBillingClient.purchase(id).then((response) {
        print("purchase success: $response");
    }, onError: (err) {
        print("purchase err: $err");
});
  • id - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ PaymentResult:

class PaymentResult {
    SuccessInvoice? successInvoice;
    InvalidInvoice? invalidInvoice;
    SuccessPurchase? successPurchase;
    InvalidPurchase? invalidPurchase;
}

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° SuccessInvoice:

class SuccessInvoice {
    String invoiceId;
    String finishCode;
}

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° InvalidInvoice:

class InvalidInvoice {
    String? invoiceId;
}

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° SuccessPurchase:

class SuccessPurchase {
    String finishCode;
    String? orderId;
    String purchaseId;
    String productId;
}

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° InvalidPurchase:

class InvalidPurchase {
    String? purchaseId;
    String? invoiceId;
    String? orderId;
    int? quantity;
    String? productId;
    int? errorCode;
}
  • SuccessInvoice - ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈΡΡŒ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ.
  • InvalidInvoice - ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈΡΡŒ Π±Π΅Π· указания инвойса. ВСроятно, ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ инвойсом (пустая строка, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€).
  • SuccessPurchase - Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°.
  • InvalidPurchase - ΠΏΡ€ΠΈ ΠΎΠΏΠ»Π°Ρ‚Π΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈΡΡŒ c ошибкой.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ статусы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ finishCode:

  • SUCCESSFUL_PAYMENT - ΡƒΡΠΏΠ΅ΡˆΠ½Π°Ρ ΠΎΠΏΠ»Π°Ρ‚Π°.
  • CLOSED_BY_USER - ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.
  • UNHANDLED_FORM_ERROR - нСизвСстная ошибка.
  • PAYMENT_TIMEOUT - ошибка ΠΎΠΏΠ»Π°Ρ‚Ρ‹ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ.
  • DECLINED_BY_SERVER - ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΎ сСрвСром.
  • RESULT_UNKNOWN - нСизвСстный статус ΠΎΠΏΠ»Π°Ρ‚Ρ‹.

ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ (ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅) ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ

RuStore содСрТит ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²:

  • CONSUMABLE - потрСбляСмый (ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ кристаллы Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ).
  • NON_CONSUMABLE - нСпотрСбляСмый (ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡƒΠΏΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ).
  • SUBSCRIPTION - подписка (ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡƒΠΏΠΈΡ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ подписка Π² стриминговом сСрвисС).

ΠŸΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° CONSUMABLE, Ссли ΠΎΠ½ΠΈ находятся Π² состоянии PurchaseState.PAID.

Для потрСблСния ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ RustoreBillingClient.confirm(id):

RustoreBillingClient.confirm(id).then((response) {
        print("confirm success: $response");
    }, onError: (err) {
        print("confirm err: $err");
});
  • id - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ConfirmPurchaseResponse:

class ConfirmPurchaseResponse {
    int code;
    String? errorMessage;
    String? errorDescription;
    String? traceId;
    List<DigitalShopGeneralError?> errors;
}
  • code - ΠΊΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‚Π°.
  • errorMessage - сообщСниС ΠΎΠ± ошибкС для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • errorDescription - Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° сообщСния ΠΎΠ± ошибкС.
  • traceId - ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ сообщСния.
  • errors - список ошибок.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ошибки DigitalShopGeneralError:

class DigitalShopGeneralError {
    String? name;
    int? code;
    String? description;
}
  • name - Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ошибки.
  • code - ΠΊΠΎΠ΄ ошибки.
  • description - описаниС ошибки.

ВСстовыС Π΄Π°Π½Π½Ρ‹Π΅

Бсылка Π½Π° тСстовыС банковскиС ΠΊΠ°Ρ€Ρ‚Ρ‹.

About

Flutter RuStore Billing SDK

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •