requestPayment method
선택한 결제수단의 결제창을 띄우는 메서드입니다.
paymentInfo
: 결제 정보입니다.
정상적으로 PaymentMethodWidget이 렌더링되지 않았을 경우 Exception을 발생시킵니다.
결제 성공 여부에 따라 Result의 Future를 반환합니다.
Implementation
Future<Result> requestPayment({required PaymentInfo paymentInfo}) async {
try {
final paymentMethodKey =
_widgetKeyMap.values.firstWhere((element) => element is GlobalKey<PaymentMethodWidgetState>)
as GlobalKey<PaymentMethodWidgetState>;
return await paymentMethodKey.currentState?.requestPayment(paymentInfo: paymentInfo) ??
(throw Exception('PaymentMethod is not rendered. Call \'renderPaymentMethods\' method first.'));
} catch (_) {
throw Exception('PaymentMethod is not rendered. Call \'renderPaymentMethods\' method first.');
}
}