showDynamicQRCode method
Future<TinkoffResult>
showDynamicQRCode({
- required AndroidDynamicQrCode androidDynamicQrCode,
- required IosDynamicQrCode iOSDynamicQrCode,
Отображает экран с одноразовым QR-кодом
, отсканировав который,
пользователь сможет провести оплату с помощью Системы быстрых платежей
При данном типе оплаты сумма и информация о платеже фиксируется, и SDK способен получить и обработать статус платежа
Implementation
Future<TinkoffResult> showDynamicQRCode({
required AndroidDynamicQrCode androidDynamicQrCode,
required IosDynamicQrCode iOSDynamicQrCode,
}) async {
_checkActivated();
final method = Method.showDynamicQrScreen;
late final Map<String, dynamic> arguments;
if (Platform.isIOS) {
switch (iOSDynamicQrCode.runtimeType) {
case IosDynamicQrCodeFullPaymentFlow:
final code = iOSDynamicQrCode as IosDynamicQrCodeFullPaymentFlow;
arguments = {
method.orderOptions: code.orderOptions.arguments,
method.customerOptions: code.customerOptions?.arguments,
method.successUrl: code.successUrl,
method.failureUrl: code.failureUrl,
method.paymentData: code.paymentData,
method.paymentFlow: PaymentFlow.full.name,
};
break;
case IosDynamicQrCodeFinishPaymentFlow:
final code = iOSDynamicQrCode as IosDynamicQrCodeFinishPaymentFlow;
arguments = {
method.paymentId: code.paymentId,
method.amount: code.amount,
method.orderId: code.orderId,
method.customerOptions: code.customerOptions?.arguments,
method.paymentFlow: PaymentFlow.finish.name,
};
break;
}
} else {
arguments = {
method.terminalKey: androidDynamicQrCode.terminalKey,
method.publicKey: androidDynamicQrCode.publicKey,
method.orderOptions: androidDynamicQrCode.orderOptions.arguments,
method.customerOptions: androidDynamicQrCode.customerOptions.arguments,
method.paymentId: androidDynamicQrCode.paymentId,
method.featuresOptions: androidDynamicQrCode.featuresOptions?.arguments,
};
}
return _channel
.invokeMethod(
method.name,
arguments..removeWhere((key, value) => value == null),
)
.then(parseTinkoffResult);
}