feat: add payment
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
/// نتیجهی یک خریدِ فروشگاهی، مستقل از اینکه کدام 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ِ محصول در پنلِ فروشگاه) را باز میکند.
|
||||
Future<PurchaseResult> purchase(String productSku);
|
||||
|
||||
/// اتصالِ اولیه (در صورتِ نیاز). پیش از اولین خرید صدا زده میشود.
|
||||
Future<void> connect() async {}
|
||||
}
|
||||
Reference in New Issue
Block a user