2024-08-05 00:12:20 +00:00
|
|
|
|
// import 'dart:developer';
|
|
|
|
|
|
//
|
|
|
|
|
|
// import 'package:flutter_rustore_billing/flutter_rustore_billing.dart';
|
|
|
|
|
|
// import 'package:mnemo_cards/features/analytics/analytics.dart';
|
|
|
|
|
|
// import 'package:mnemo_cards/flags.dart';
|
|
|
|
|
|
// import 'package:mnemo_cards_common/mnemo_cards_common.dart';
|
|
|
|
|
|
//
|
|
|
|
|
|
// import '../../../di/locator.dart';
|
|
|
|
|
|
// import '../../../domain/router/dialogs.dart';
|
|
|
|
|
|
//
|
|
|
|
|
|
// class RustorePurchaseService {
|
|
|
|
|
|
// Future<bool> init() async {
|
|
|
|
|
|
// return RustoreBillingClient.initialize(
|
|
|
|
|
|
// "2063563896",
|
|
|
|
|
|
// "mnemocards://iamback",
|
|
|
|
|
|
// true,
|
|
|
|
|
|
// ).then((value) {
|
|
|
|
|
|
// print("initialize success: $value");
|
|
|
|
|
|
// return true;
|
|
|
|
|
|
// }, onError: (err) {
|
|
|
|
|
|
// print("initialize err: $err");
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// });
|
|
|
|
|
|
// }
|
|
|
|
|
|
//
|
|
|
|
|
|
// Future<bool> buyPack(CardPackBuyDto dto) async {
|
|
|
|
|
|
// if (dto.rustoreId == null) {
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (!await init()) {
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (!await RustoreBillingClient.available().then((value) {
|
|
|
|
|
|
// print("available success $value");
|
|
|
|
|
|
// return true;
|
|
|
|
|
|
// }, onError: (err) {
|
|
|
|
|
|
// print("available err: $err");
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// })) {
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// final product = (await RustoreBillingClient.products([dto.rustoreId]))
|
|
|
|
|
|
// .products
|
|
|
|
|
|
// .firstOrNull;
|
|
|
|
|
|
// if (product == null) {
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// try {
|
|
|
|
|
|
// final result = await RustoreBillingClient.purchase(dto.rustoreId!, null);
|
|
|
|
|
|
// try {
|
|
|
|
|
|
// try {
|
|
|
|
|
|
// // creating payment to check it later
|
|
|
|
|
|
// // in case there will be an error after confirmation
|
|
|
|
|
|
// await locator.repository.checkPayment(
|
|
|
|
|
|
// itemId: result.successPurchase!.productId,
|
|
|
|
|
|
// key: result.successPurchase!.subscriptionToken!,
|
|
|
|
|
|
// paymentSystem: androidPaymentSystem,
|
|
|
|
|
|
// );
|
|
|
|
|
|
// } catch (e, s) {
|
|
|
|
|
|
// Analytics.buyError(
|
|
|
|
|
|
// dto,
|
|
|
|
|
|
// PaymentSystem.rustore,
|
|
|
|
|
|
// message: 'Error when creating payment',
|
|
|
|
|
|
// );
|
|
|
|
|
|
// log('Error when creating payment', error: e, stackTrace: s);
|
|
|
|
|
|
// showErrorDialog(
|
|
|
|
|
|
// 'Технические шоколадки...\n\nПопробуйте позже или обновите приложение до последней версии');
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// final p = await RustoreBillingClient.confirm(
|
|
|
|
|
|
// result.successPurchase!.subscriptionToken!,
|
|
|
|
|
|
// );
|
|
|
|
|
|
// if (p.success) {
|
|
|
|
|
|
// final r = await locator.repository.checkPayment(
|
|
|
|
|
|
// itemId: result.successPurchase!.productId,
|
|
|
|
|
|
// key: result.successPurchase!.subscriptionToken!,
|
|
|
|
|
|
// paymentSystem: androidPaymentSystem,
|
|
|
|
|
|
// );
|
|
|
|
|
|
// if (r) {
|
|
|
|
|
|
// return r;
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
// Analytics.buyError(
|
|
|
|
|
|
// dto,
|
|
|
|
|
|
// PaymentSystem.rustore,
|
|
|
|
|
|
// message: 'Error when confirming payment',
|
|
|
|
|
|
// );
|
|
|
|
|
|
// showErrorDialog(
|
|
|
|
|
|
// 'Технические шоколадки...\n\nДоступ откроется в течение 5 мин',
|
|
|
|
|
|
// );
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// } catch (e, s) {
|
|
|
|
|
|
// log('Error when confirming purchase', error: e, stackTrace: s);
|
|
|
|
|
|
// Analytics.crashlyticsError(
|
|
|
|
|
|
// e: e,
|
|
|
|
|
|
// s: s,
|
|
|
|
|
|
// message: 'Error when confirming rustore purchase',
|
|
|
|
|
|
// );
|
|
|
|
|
|
// }
|
|
|
|
|
|
// } catch (e, s) {
|
|
|
|
|
|
// log('Error when processing purchase', error: e, stackTrace: s);
|
|
|
|
|
|
// Analytics.crashlyticsError(
|
|
|
|
|
|
// e: e,
|
|
|
|
|
|
// s: s,
|
|
|
|
|
|
// message: 'Error when processing rustore purchase',
|
|
|
|
|
|
// );
|
|
|
|
|
|
// }
|
|
|
|
|
|
// return false;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|