feat: add payment
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import 'package:flutter_poolakey/flutter_poolakey.dart';
|
||||
|
||||
import '../config.dart';
|
||||
import 'payment_gateway.dart';
|
||||
|
||||
/// پرداختِ درونبرنامهایِ کافهبازار (Poolakey) — flavorِ `bazaar`.
|
||||
class BazaarPaymentGateway implements PaymentGateway {
|
||||
bool _connected = false;
|
||||
|
||||
@override
|
||||
String get store => 'bazaar';
|
||||
|
||||
@override
|
||||
Future<void> connect() async {
|
||||
if (_connected) return;
|
||||
await FlutterPoolakey.connect(
|
||||
AppConfig.bazaarRsaKey,
|
||||
onDisconnected: () => _connected = false,
|
||||
);
|
||||
_connected = true;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<PurchaseResult> purchase(String productSku) async {
|
||||
try {
|
||||
await connect();
|
||||
final info = await FlutterPoolakey.purchase(
|
||||
productSku,
|
||||
payload: 'hakemsho',
|
||||
);
|
||||
if (info.purchaseToken.isEmpty) {
|
||||
return const PurchaseResult.failure();
|
||||
}
|
||||
return PurchaseResult.success(
|
||||
token: info.purchaseToken,
|
||||
purchaseData: info.originalJson,
|
||||
signature: info.dataSignature,
|
||||
// کالای مصرفی باید مصرف شود تا خریدِ مجدد ممکن باشد.
|
||||
onConfirmed: () => FlutterPoolakey.consume(info.purchaseToken),
|
||||
);
|
||||
} catch (_) {
|
||||
// کنسلشدن یا خطای بازار ⇒ شکستِ خرید.
|
||||
return const PurchaseResult.failure();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user