Skip to content

Commit 84056ba

Browse files
committed
feat(payment): add checkout locale to Stripe elements
1 parent 45fa2f5 commit 84056ba

15 files changed

+84
-19
lines changed

packages/core/src/shipping/strategies/stripe-upe/stripe-upe-shipping-strategy.spec.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { createScriptLoader } from '@bigcommerce/script-loader';
44
import { Observable, of } from 'rxjs';
55

66
import {
7+
STRIPE_UPE_CLIENT_API_VERSION,
8+
STRIPE_UPE_CLIENT_BETAS,
79
StripeClient,
810
StripeDisplayName,
911
StripeElement,
@@ -139,6 +141,8 @@ describe('StripeUPEShippingStrategy', () => {
139141
jest.spyOn(store.getState().paymentMethods, 'getPaymentMethodOrThrow').mockReturnValue(
140142
getStripeUPE(),
141143
);
144+
145+
jest.spyOn(store.getState().config, 'getLocale').mockReturnValue('en');
142146
});
143147

144148
afterEach(() => {
@@ -152,6 +156,12 @@ describe('StripeUPEShippingStrategy', () => {
152156
);
153157

154158
expect(stripeScriptLoader.getStripeClient).toHaveBeenCalledTimes(1);
159+
expect(stripeScriptLoader.getStripeClient).toHaveBeenCalledWith(
160+
paymentMethodMock.initializationData,
161+
'en',
162+
STRIPE_UPE_CLIENT_BETAS,
163+
STRIPE_UPE_CLIENT_API_VERSION,
164+
);
155165
expect(stripeUPEJsMock.elements).toHaveBeenCalledTimes(1);
156166
});
157167

packages/core/src/shipping/strategies/stripe-upe/stripe-upe-shipping-strategy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export default class StripeUPEShippingStrategy implements ShippingStrategy {
9696

9797
this._stripeUPEClient = await this._stripeUPEScriptLoader.getStripeClient(
9898
initializationData,
99+
state.config.getLocale(),
99100
STRIPE_UPE_CLIENT_BETAS,
100101
STRIPE_UPE_CLIENT_API_VERSION,
101102
);

packages/stripe-integration/src/stripe-ocs/stripe-link-v2-button-strategy.spec.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ describe('StripeLinkV2ButtonStrategy', () => {
135135
jest.spyOn(paymentIntegrationService.getState(), 'getPaymentMethodOrThrow').mockReturnValue(
136136
stripePaymentMethod,
137137
);
138+
jest.spyOn(paymentIntegrationService.getState(), 'getLocale').mockReturnValue('en');
138139
jest.spyOn(stripeIntegrationService, 'isPaymentCompleted').mockReturnValue(
139140
Promise.resolve(false),
140141
);
@@ -194,10 +195,13 @@ describe('StripeLinkV2ButtonStrategy', () => {
194195
stripePaymentMethod.initializationData.captureMethod = 'automatic';
195196
await strategy.initialize(initialiseOptions);
196197

197-
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith({
198-
...stripePaymentMethod.initializationData,
199-
captureMethod: 'automatic',
200-
});
198+
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith(
199+
{
200+
...stripePaymentMethod.initializationData,
201+
captureMethod: 'automatic',
202+
},
203+
'en',
204+
);
201205
expect(elements.create).toHaveBeenCalledWith(
202206
'expressCheckout',
203207
expressCheckoutOptionsMock,
@@ -215,10 +219,13 @@ describe('StripeLinkV2ButtonStrategy', () => {
215219
stripePaymentMethod.initializationData.captureMethod = 'manual';
216220
await strategy.initialize(initialiseOptions);
217221

218-
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith({
219-
...stripePaymentMethod.initializationData,
220-
captureMethod: 'manual',
221-
});
222+
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith(
223+
{
224+
...stripePaymentMethod.initializationData,
225+
captureMethod: 'manual',
226+
},
227+
'en',
228+
);
222229
expect(elements.create).toHaveBeenCalledWith(
223230
'expressCheckout',
224231
expressCheckoutOptionsMock,

packages/stripe-integration/src/stripe-ocs/stripe-link-v2-button-strategy.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,10 @@ export default class StripeLinkV2ButtonStrategy implements CheckoutButtonStrateg
9090
const { captureMethod } = initializationData;
9191

9292
this._captureMethod = captureMethod;
93-
this._stripeClient = await this.scriptLoader.getStripeClient(initializationData);
93+
this._stripeClient = await this.scriptLoader.getStripeClient(
94+
initializationData,
95+
state.getLocale(),
96+
);
9497

9598
await this.paymentIntegrationService.loadDefaultCheckout();
9699

packages/stripe-integration/src/stripe-ocs/stripe-link-v2-customer-strategy.spec.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ describe('StripeLinkV2CustomerStrategy', () => {
135135
jest.spyOn(paymentIntegrationService.getState(), 'getPaymentMethodOrThrow').mockReturnValue(
136136
stripePaymentMethod,
137137
);
138+
jest.spyOn(paymentIntegrationService.getState(), 'getLocale').mockReturnValue('en');
138139
jest.spyOn(stripeIntegrationService, 'isPaymentCompleted').mockReturnValue(
139140
Promise.resolve(false),
140141
);
@@ -200,10 +201,13 @@ describe('StripeLinkV2CustomerStrategy', () => {
200201
stripePaymentMethod.initializationData.captureMethod = 'automatic';
201202
await strategy.initialize(initialiseOptions);
202203

203-
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith({
204-
...stripePaymentMethod.initializationData,
205-
captureMethod: 'automatic',
206-
});
204+
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith(
205+
{
206+
...stripePaymentMethod.initializationData,
207+
captureMethod: 'automatic',
208+
},
209+
'en',
210+
);
207211
expect(elements.create).toHaveBeenCalledWith(
208212
'expressCheckout',
209213
expressCheckoutOptionsMock,
@@ -221,10 +225,13 @@ describe('StripeLinkV2CustomerStrategy', () => {
221225
stripePaymentMethod.initializationData.captureMethod = 'manual';
222226
await strategy.initialize(initialiseOptions);
223227

224-
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith({
225-
...stripePaymentMethod.initializationData,
226-
captureMethod: 'manual',
227-
});
228+
expect(scriptLoader.getStripeClient).toHaveBeenCalledWith(
229+
{
230+
...stripePaymentMethod.initializationData,
231+
captureMethod: 'manual',
232+
},
233+
'en',
234+
);
228235
expect(elements.create).toHaveBeenCalledWith(
229236
'expressCheckout',
230237
expressCheckoutOptionsMock,

packages/stripe-integration/src/stripe-ocs/stripe-link-v2-customer-strategy.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,10 @@ export default class StripeLinkV2CustomerStrategy implements CustomerStrategy {
9393
const { captureMethod } = initializationData;
9494

9595
this._captureMethod = captureMethod;
96-
this._stripeClient = await this.scriptLoader.getStripeClient(initializationData);
96+
this._stripeClient = await this.scriptLoader.getStripeClient(
97+
initializationData,
98+
state.getLocale(),
99+
);
97100

98101
await this._mountExpressCheckoutElement(
99102
methodId,

packages/stripe-integration/src/stripe-ocs/stripe-ocs-payment-strategy.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ describe('StripeOCSPaymentStrategy', () => {
7272
jest.spyOn(paymentIntegrationService.getState(), 'getPaymentMethodOrThrow').mockReturnValue(
7373
getStripeOCSMock(),
7474
);
75+
jest.spyOn(paymentIntegrationService.getState(), 'getLocale').mockReturnValue('en');
7576
jest.spyOn(stripeScriptLoader, 'getElements').mockReturnValue(
7677
Promise.resolve(stripeUPEJsMock.elements({})),
7778
);
@@ -386,6 +387,10 @@ describe('StripeOCSPaymentStrategy', () => {
386387
await stripeOCSPaymentStrategy.initialize(stripeOptions);
387388

388389
expect(stripeScriptLoader.getStripeClient).toHaveBeenCalledTimes(1);
390+
expect(stripeScriptLoader.getStripeClient).toHaveBeenCalledWith(
391+
getStripeOCSMock().initializationData,
392+
'en',
393+
);
389394
});
390395

391396
it('should enable Link by initialization data option', async () => {

packages/stripe-integration/src/stripe-ocs/stripe-ocs-payment-strategy.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,9 @@ export default class StripeOCSPaymentStrategy implements PaymentStrategy {
242242
return this.stripeClient;
243243
}
244244

245-
return this.scriptLoader.getStripeClient(initializationData);
245+
const state = this.paymentIntegrationService.getState();
246+
247+
return this.scriptLoader.getStripeClient(initializationData, state.getLocale());
246248
}
247249

248250
private _collapseStripeElement() {

packages/stripe-integration/src/stripe-upe/stripe-upe-customer-strategy.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import {
1414
PaymentIntegrationServiceMock,
1515
} from '@bigcommerce/checkout-sdk/payment-integrations-test-utils';
1616
import {
17+
STRIPE_UPE_CLIENT_API_VERSION,
18+
STRIPE_UPE_CLIENT_BETAS,
1719
StripeClient,
1820
StripeCustomerEvent,
1921
StripeElement,
@@ -58,6 +60,7 @@ describe('StripeUpeCustomerStrategy', () => {
5860
jest.spyOn(paymentIntegrationService.getState(), 'getPaymentMethod').mockReturnValue(
5961
paymentMethodMock,
6062
);
63+
jest.spyOn(paymentIntegrationService.getState(), 'getLocale').mockReturnValue('en');
6164
jest.spyOn(paymentIntegrationService, 'loadPaymentMethod').mockResolvedValue(
6265
paymentIntegrationService.getState(),
6366
);
@@ -112,6 +115,12 @@ describe('StripeUpeCustomerStrategy', () => {
112115
await strategy.initialize(customerInitialization);
113116

114117
expect(stripeScriptLoader.getStripeClient).toHaveBeenCalledTimes(1);
118+
expect(stripeScriptLoader.getStripeClient).toHaveBeenCalledWith(
119+
paymentMethodMock.initializationData,
120+
'en',
121+
STRIPE_UPE_CLIENT_BETAS,
122+
STRIPE_UPE_CLIENT_API_VERSION,
123+
);
115124
expect(stripeUPEJsMock.elements).toHaveBeenCalledTimes(1);
116125
});
117126

packages/stripe-integration/src/stripe-upe/stripe-upe-customer-strategy.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ export default class StripeUPECustomerStrategy implements CustomerStrategy {
106106

107107
stripeUPEClient = await this.scriptLoader.getStripeClient(
108108
paymentMethod.initializationData,
109+
state.getLocale(),
109110
STRIPE_UPE_CLIENT_BETAS,
110111
STRIPE_UPE_CLIENT_API_VERSION,
111112
);

0 commit comments

Comments
 (0)