Skip to content

Commit 2b183ea

Browse files
authored
Merge pull request #1425 from internxt/feat/object-storage-subscription-retries
[PB-4396]: feat/verify the payment method instead of creating an object storage subscription
2 parents 34a72e6 + d5a843c commit 2b183ea

4 files changed

Lines changed: 63 additions & 42 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"@ffmpeg/util": "^0.12.2",
2828
"@headlessui/react": "1.6.6",
2929
"@iconscout/react-unicons": "^1.1.6",
30-
"@internxt/sdk": "=1.9.21",
30+
"@internxt/sdk": "1.9.27",
3131
"@mui/material": "^5.15.21",
3232
"@phosphor-icons/react": "^2.1.5",
3333
"@sendgrid/mail": "^8.1.0",

src/pages/cloud-object-storage/checkout.tsx

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ const IntegratedCheckout = ({ locale, textContent }: IntegratedCheckoutProps): J
163163
amount: plan?.amount ?? 0,
164164
currency: plan?.currency,
165165
payment_method_types: ['card', 'paypal'],
166+
paymentMethodCreation: 'manual',
166167
};
167168

168169
setStripeElementsOptions(stripeElementsOptions);
@@ -207,26 +208,35 @@ const IntegratedCheckout = ({ locale, textContent }: IntegratedCheckoutProps): J
207208
throw new Error(elementsError.message);
208209
}
209210

210-
const { clientSecret } = await paymentService.createObjectStorageSubscription({
211+
const { error: paymentMethodError, paymentMethod } = await stripeSDK.createPaymentMethod({
212+
elements,
213+
});
214+
215+
if (paymentMethodError) {
216+
throw new Error(paymentMethodError.message);
217+
}
218+
219+
const { verified, clientSecret } = await paymentService.paymentMethodVerification({
211220
customerId,
212-
priceId: plan.id,
213221
currency: plan.currency,
214222
token,
215-
promoCodeId: coupon?.codeId,
223+
paymentMethod: paymentMethod.id,
224+
priceId: plan.id,
216225
});
217226

218-
const confirmIntent = stripeSDK.confirmSetup;
219-
220-
const { error } = await confirmIntent({
221-
elements,
222-
clientSecret,
223-
confirmParams: {
224-
return_url: `${RETURN_URL_DOMAIN}`,
225-
},
226-
});
227+
if (!verified && clientSecret) {
228+
const confirmPaymentIntent = stripeSDK.confirmPayment;
227229

228-
if (error) {
229-
throw new Error(error.message);
230+
const { error } = await confirmPaymentIntent({
231+
elements,
232+
clientSecret,
233+
confirmParams: {
234+
return_url: RETURN_URL_DOMAIN,
235+
},
236+
});
237+
if (error) {
238+
throw new Error(error.message);
239+
}
230240
}
231241
} catch (err) {
232242
if (err.message.includes('500')) {

src/services/payments.service.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { PlanData } from '@/pages/cloud-object-storage/checkout';
22
import { Drive } from '@internxt/sdk';
3+
import { PaymentMethodVerificationPayload } from '@internxt/sdk/dist/payments/types';
34

45
export class ObjStoragePaymentsService {
56
private apiUrl: string;
@@ -61,4 +62,21 @@ export class ObjStoragePaymentsService {
6162
promoCodeId,
6263
});
6364
}
65+
66+
public paymentMethodVerification({
67+
customerId,
68+
token,
69+
priceId,
70+
currency = 'eur',
71+
paymentMethod,
72+
}: PaymentMethodVerificationPayload) {
73+
const client = ObjStoragePaymentsService.client(this.apiUrl);
74+
return client.paymentMethodVerification({
75+
customerId,
76+
token,
77+
priceId,
78+
currency,
79+
paymentMethod,
80+
});
81+
}
6482
}

yarn.lock

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,10 +1683,10 @@
16831683
dependencies:
16841684
react ">=15.0.0 <17.0.0"
16851685

1686-
"@internxt/sdk@=1.9.21":
1687-
version "1.9.21"
1688-
resolved "https://registry.yarnpkg.com/@internxt/sdk/-/sdk-1.9.21.tgz#ce2e4d7730ba3fa9cf9baef47f129a8c156f4783"
1689-
integrity sha512-SaO78pgRl2viEjkFS+UuKCFS1ivibDLCN72nAfh22ackzeBn1viMcX29pJyXiWecrA21FO+zzMxpRxZJScbLNQ==
1686+
"@internxt/sdk@1.9.27":
1687+
version "1.9.27"
1688+
resolved "https://registry.yarnpkg.com/@internxt/sdk/-/sdk-1.9.27.tgz#903f8cf2c60e9dabf1897f86139c50fc35774066"
1689+
integrity sha512-viYs6tWouPuhFV9XNq1XybUbSoR06AeMM7kqPCSWYM6jJXcN1j4Z/U3lmKLBlyHB3CG8hhgoScGCgXQf/t/bBQ==
16901690
dependencies:
16911691
axios "^0.24.0"
16921692
query-string "^7.1.0"
@@ -3436,16 +3436,16 @@ concat-map@0.0.1:
34363436
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
34373437
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
34383438

3439-
content-type@^1.0.5:
3440-
version "1.0.5"
3441-
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
3442-
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
3443-
34443439
console-control-strings@^1.0.0, console-control-strings@^1.1.0:
34453440
version "1.1.0"
34463441
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
34473442
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
34483443

3444+
content-type@^1.0.5:
3445+
version "1.0.5"
3446+
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
3447+
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
3448+
34493449
convert-source-map@^1.5.0, convert-source-map@^1.7.0:
34503450
version "1.9.0"
34513451
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
@@ -3659,7 +3659,7 @@ dayjs@^1.10.4:
36593659
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2"
36603660
integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==
36613661

3662-
debug@4:
3662+
debug@4, debug@^4.4.0, debug@^4.4.1:
36633663
version "4.4.1"
36643664
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
36653665
integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
@@ -3687,13 +3687,6 @@ debug@^3.1.0, debug@^3.2.7:
36873687
dependencies:
36883688
ms "^2.1.1"
36893689

3690-
debug@^4.4.0, debug@^4.4.1:
3691-
version "4.4.1"
3692-
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
3693-
integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
3694-
dependencies:
3695-
ms "^2.1.3"
3696-
36973690
decamelize@^1.2.0:
36983691
version "1.2.0"
36993692
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -6208,16 +6201,16 @@ mimic-fn@^2.1.0:
62086201
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
62096202
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
62106203

6211-
minimalistic-assert@^1.0.1:
6212-
version "1.0.1"
6213-
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
6214-
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
6215-
62166204
mimic-response@^2.0.0:
62176205
version "2.1.0"
62186206
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43"
62196207
integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
62206208

6209+
minimalistic-assert@^1.0.1:
6210+
version "1.0.1"
6211+
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
6212+
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
6213+
62216214
minimatch@9.0.3:
62226215
version "9.0.3"
62236216
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
@@ -6799,11 +6792,6 @@ pdf-lib@^1.17.1:
67996792
pako "^1.0.11"
68006793
tslib "^1.11.1"
68016794

6802-
peek-readable@^7.0.0:
6803-
version "7.0.0"
6804-
resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-7.0.0.tgz#c6e4e78ec76f7005e5f6b51ffc93fdb91ede6512"
6805-
integrity sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==
6806-
68076795
pdfjs-dist@3.11.174:
68086796
version "3.11.174"
68096797
resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz#5ff47b80f2d58c8dd0d74f615e7c6a7e7e704c4b"
@@ -6812,6 +6800,11 @@ pdfjs-dist@3.11.174:
68126800
canvas "^2.11.2"
68136801
path2d-polyfill "^2.0.1"
68146802

6803+
peek-readable@^7.0.0:
6804+
version "7.0.0"
6805+
resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-7.0.0.tgz#c6e4e78ec76f7005e5f6b51ffc93fdb91ede6512"
6806+
integrity sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==
6807+
68156808
pend@~1.2.0:
68166809
version "1.2.0"
68176810
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"

0 commit comments

Comments
 (0)