43 lines
2.0 KiB
Dart
43 lines
2.0 KiB
Dart
/// نتیجهی یک خریدِ فروشگاهی، مستقل از اینکه کدام SDK آن را تولید کرده.
|
|
///
|
|
/// بکاند برای تأییدِ آفلاینِ RSA به [purchaseData] (JSONِ خام) و [signature]
|
|
/// نیاز دارد؛ [token] هم برای تأییدِ سمتسرور/سازگاری فرستاده میشود.
|
|
class PurchaseResult {
|
|
final bool success;
|
|
final String token;
|
|
final String purchaseData;
|
|
final String signature;
|
|
|
|
/// پاکسازیِ لازم پس از تأییدِ بکاند (مثلاً مایکت باید خرید را consume کند).
|
|
final Future<void> Function()? onConfirmed;
|
|
|
|
const PurchaseResult.success({
|
|
required this.token,
|
|
required this.purchaseData,
|
|
required this.signature,
|
|
this.onConfirmed,
|
|
}) : success = true;
|
|
|
|
const PurchaseResult.failure()
|
|
: success = false,
|
|
token = '',
|
|
purchaseData = '',
|
|
signature = '',
|
|
onConfirmed = null;
|
|
}
|
|
|
|
/// انتزاعِ SDKِ پرداختِ درونبرنامهایِ مخصوصِ هر فروشگاه. هر flavor یک پیادهسازی
|
|
/// ثبت میکند؛ بقیهی اپ از SDK بیخبر میماند.
|
|
abstract class PaymentGateway {
|
|
/// شناسهی فروشگاه که به بکاند فرستاده میشود (`myket` | `bazaar`).
|
|
String get store;
|
|
|
|
/// جریانِ خریدِ [productSku] (همان UUIDِ محصول در پنلِ فروشگاه) را باز میکند.
|
|
/// [payload] در فروشگاه ذخیره و در پنلِ توسعهدهنده نمایش داده میشود؛ اینجا
|
|
/// شمارهی موبایلِ کاربر را میفرستیم تا خرید قابلِ ردیابی باشد.
|
|
Future<PurchaseResult> purchase(String productSku, {String payload = ''});
|
|
|
|
/// اتصالِ اولیه (در صورتِ نیاز). پیش از اولین خرید صدا زده میشود.
|
|
Future<void> connect() async {}
|
|
}
|