Skip to content

Commit 753de34

Browse files
authored
fix: Remove empty bank parameter from iDEAL payments to comply with Stripe API changes (#2186)
- Remove bank parameter from IdealBankData when not provided - Prevents Stripe API error about empty payment_method_data[ideal][bank] parameter - Aligns with Stripe's updated guidance for self-collected iDEAL flows - Add tests to verify bank parameter is properly omitted Fixes issue where empty bank string was always sent even when not required, causing API rejection according to Stripe's migration requirements. Fixes #2185
1 parent 5725ac1 commit 753de34

File tree

3 files changed

+47
-2
lines changed

3 files changed

+47
-2
lines changed

packages/stripe_js/test/src/api/payment_intents/confirm_ideal_payment_data_test.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,26 @@ void main() {
7777
);
7878
});
7979

80+
test('with bank omitted completely (no bank parameter)', () {
81+
expect(
82+
ConfirmIdealPaymentData(
83+
paymentMethod: IdealPaymentMethodDetails.withBank(
84+
ideal: IdealBankData(),
85+
billingDetails: BillingDetails(name: 'Jenny Rosen'),
86+
),
87+
).toJson(),
88+
{
89+
"payment_method": {
90+
"ideal": {},
91+
"type": "ideal",
92+
"billing_details": {
93+
"name": "Jenny Rosen",
94+
},
95+
}
96+
},
97+
);
98+
});
99+
80100
test('extra params parse correctly', () {
81101
expect(
82102
ConfirmIdealPaymentData(

packages/stripe_web/lib/src/web_stripe.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class WebStripe extends StripePlatform {
212212
paymentIntentClientSecret,
213213
data: stripe_js.ConfirmIdealPaymentData(
214214
paymentMethod: stripe_js.IdealPaymentMethodDetails.withBank(
215-
ideal: stripe_js.IdealBankData(bank: paymentData.bankName ?? ""),
215+
ideal: stripe_js.IdealBankData(),
216216
),
217217
returnUrl: returnUrl ?? urlScheme,
218218
),
Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,26 @@
1-
void main() {}
1+
import 'package:flutter_test/flutter_test.dart';
2+
import 'package:stripe_platform_interface/stripe_platform_interface.dart';
3+
4+
void main() {
5+
group('iDEAL Payment Data Tests', () {
6+
test('PaymentMethodDataIdeal should handle null bankName correctly', () {
7+
const idealPaymentData = PaymentMethodDataIdeal(bankName: null);
8+
expect(idealPaymentData.bankName, isNull);
9+
});
10+
11+
test('PaymentMethodDataIdeal should handle empty bankName correctly', () {
12+
const idealPaymentData = PaymentMethodDataIdeal(bankName: '');
13+
expect(idealPaymentData.bankName, isEmpty);
14+
});
15+
16+
test('PaymentMethodDataIdeal default constructor has null bankName', () {
17+
const idealPaymentData = PaymentMethodDataIdeal();
18+
expect(idealPaymentData.bankName, isNull);
19+
});
20+
21+
test('PaymentMethodDataIdeal should preserve provided bankName', () {
22+
const idealPaymentData = PaymentMethodDataIdeal(bankName: 'abn_amro');
23+
expect(idealPaymentData.bankName, equals('abn_amro'));
24+
});
25+
});
26+
}

0 commit comments

Comments
 (0)