confirmPayment method
Future<PaymentIntent>
confirmPayment(
- String paymentIntentClientSecret,
- PaymentMethodParams? params, [
- PaymentMethodOptions? options
override
Implementation
@override
Future<PaymentIntent> confirmPayment(
String paymentIntentClientSecret,
PaymentMethodParams? params, [
PaymentMethodOptions? options,
]) async {
assert(params != null, 'params are not allowed to be null on the web');
final response =
await params!.maybeWhen<Future<stripe_js.PaymentIntentResponse>>(
card: (usage) {
return js.confirmCardPayment(
paymentIntentClientSecret,
data: stripe_js.ConfirmCardPaymentData(
paymentMethod: stripe_js.PaymentMethodRef.details(
stripe_js.CardPaymentMethodDetails(card: element!),
),
setupFutureUsage: (options?.setupFutureUsage ??
PaymentIntentsFutureUsage.OnSession)
.toJs(),
),
);
},
cardFromMethodId: (paymentMethodData) {
// https://stripe.com/docs/js/payment_intents/confirm_card_payment#stripe_confirm_card_payment-existing
return js.confirmCardPayment(
paymentIntentClientSecret,
data: stripe_js.ConfirmCardPaymentData(
paymentMethod: stripe_js.$id(paymentMethodData.paymentMethodId),
),
);
},
cardFromToken: (PaymentMethodDataCardFromToken data) {
// https: //stripe.com/docs/js/payment_intents/confirm_card_payment#stripe_confirm_card_payment-token
return js.confirmCardPayment(
paymentIntentClientSecret,
data: stripe_js.ConfirmCardPaymentData(
paymentMethod: stripe_js.$expanded(
stripe_js.CardPaymentMethodDetails.token(
card: stripe_js.CardToken(token: data.token),
),
),
setupFutureUsage: (options?.setupFutureUsage ??
PaymentIntentsFutureUsage.OnSession)
.toJs(),
),
);
},
alipay: (data) {
// https://stripe.com/docs/js/payment_intents/confirm_alipay_payment#stripe_confirm_alipay_payment-options
return js.confirmAlipayPayment(
paymentIntentClientSecret,
data: stripe_js.ConfirmAlipayPaymentData(
returnUrl: window.location.href,
),
);
},
ideal: (paymentData) {
if (paymentData.bankName == null) throw 'bankName is required for web';
// https://stripe.com/docs/js/payment_intents/confirm_alipay_payment#stripe_confirm_alipay_payment-options
return js.confirmIdealPayment(
paymentIntentClientSecret,
data: stripe_js.ConfirmIdealPaymentData(
paymentMethod: stripe_js.$expanded(
stripe_js.IdealPaymentMethodDetails.withBank(
ideal: stripe_js.IdealBankData(bank: paymentData.bankName!),
),
),
returnUrl: window.location.href,
// recommended
// setup_future_usage:
),
);
},
orElse: () {
throw UnimplementedError();
},
);
if (response.error != null) {
throw StripeError(
message: response.error?.message ?? '',
code: response.error!.code,
);
}
return response.paymentIntent!.parse();
}