mnemo_cards/lib/features/purchase/purchase_manager.dart

111 lines
2.8 KiB
Dart
Raw Normal View History

2024-08-18 16:52:03 +00:00
import 'package:mnemo_cards/features/analytics/analytics.dart';
import 'package:mnemo_cards/features/purchase/yookassa_purchase_handler.dart';
import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import 'google_purchase_handler.dart';
class PurchaseManager {
final GooglePurchaseHandler _googlePurchaseHandler;
final YookassaPurchaseHandler _yookassaPurchaseHandler;
PurchaseManager(
this._googlePurchaseHandler,
this._yookassaPurchaseHandler,
);
Future<void> initPurchaseFromDto({
required CardPackBuyDto dto,
required PaymentSystem paymentSystem,
String? source = 'dto',
}) async {
String? paymentId;
switch (paymentSystem) {
case PaymentSystem.google:
paymentId = dto.googlePlayId;
break;
case PaymentSystem.apple:
paymentId = dto.appStoreId;
break;
case PaymentSystem.rustore:
paymentId = dto.rustoreId;
break;
case PaymentSystem.yookassa:
paymentId = dto.id;
break;
case PaymentSystem.unknown:
break;
}
if (paymentId == null) {
Analytics.buyError(
dto,
paymentSystem,
message: 'Cant find payment id',
);
return;
}
return initPurchase(
id: dto.id,
productType: MnemoCardsProductType.pack,
paymentId: paymentId,
paymentSystem: paymentSystem,
);
}
Future<void> initPurchase({
required String id,
required MnemoCardsProductType productType,
required String paymentId,
required PaymentSystem paymentSystem,
String? source,
}) async {
switch (paymentSystem) {
case PaymentSystem.google:
return _googlePurchaseHandler.initPurchase(
id: id,
productType: productType,
paymentId: paymentId,
source: source,
);
case PaymentSystem.apple:
return;
case PaymentSystem.rustore:
return;
case PaymentSystem.yookassa:
return _yookassaPurchaseHandler.initPurchase(
id: id,
productType: productType,
paymentId: paymentId,
);
case PaymentSystem.unknown:
return;
}
}
Future<bool> checkPurchase({
required MnemoCardsProduct product,
required String token,
required PaymentSystem paymentSystem,
}) async {
switch (paymentSystem) {
case PaymentSystem.google:
return _googlePurchaseHandler.checkPurchase(
product: product,
paymentToken: token,
);
case PaymentSystem.apple:
return false;
case PaymentSystem.rustore:
return false;
case PaymentSystem.yookassa:
return _yookassaPurchaseHandler.checkPurchase(
product: product,
paymentToken: token,
);
case PaymentSystem.unknown:
return false;
}
}
}