feat: add payment

This commit is contained in:
2026-07-05 16:03:15 +03:30
parent c2356b3242
commit 5017e9a613
30 changed files with 470 additions and 65 deletions
@@ -0,0 +1,40 @@
import 'package:myket_iap/myket_iap.dart';
import 'package:myket_iap/util/purchase.dart';
import '../config.dart';
import 'payment_gateway.dart';
/// پرداختِ درون‌برنامه‌ایِ مایکت (flavorِ `myket`).
class MyketPaymentGateway implements PaymentGateway {
bool _inited = false;
@override
String get store => 'myket';
@override
Future<void> connect() async {
if (_inited) return;
await MyketIAP.init(rsaKey: AppConfig.myketRsaKey, enableDebugLogging: false);
_inited = true;
}
@override
Future<PurchaseResult> purchase(String productSku) async {
await connect();
final Map<dynamic, dynamic> result =
await MyketIAP.launchPurchaseFlow(sku: productSku, payload: 'hakemsho');
final Purchase? purchase = result[MyketIAP.PURCHASE] as Purchase?;
if (purchase == null || purchase.mToken.isEmpty) {
return const PurchaseResult.failure();
}
return PurchaseResult.success(
token: purchase.mToken,
purchaseData: purchase.mOriginalJson,
signature: purchase.mSignature,
// کالای مصرفی (سکه/بلیت) باید مصرف شود تا کاربر بتواند دوباره بخرد.
onConfirmed: () => MyketIAP.consume(purchase: purchase),
);
}
}