Flutter RuStoreSDK Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ-ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ:
- ΠΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ RuStore.
- RuStore Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ.
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½ Π² RuStore.
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ Π² RuStore.
- ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠΊΡΠΏΠΎΠΊ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° RuStore.
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
flutter pub add flutter_rustore_billing
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ ΡΡΡΠΎΡΠΊΡ Π² ΡΠ°ΠΉΠ» pubspec.yaml
dependencies:
flutter_rustore_billing: ^2.0.0
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΎΠΏΠ»Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π‘ΠΠ ΠΈΠ»ΠΈ 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 - ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΠ΅ ΠΊΠ°ΡΡΡ.