Skip to content

Commit 79b3af0

Browse files
authored
Enhance subscription checkout process with Stripe integration (#910)
* Enhance subscription checkout process with Stripe integration - Added support for Stripe payment processing by including the Stripe publishable key in the environment configuration. - Updated the PricingCards and PlanDialog components to handle checkout sessions using client secrets instead of redirecting to a checkout URL. - Introduced a new CheckoutModal component for embedded checkout experience. - Modified the createCheckoutSession API to return a client secret for embedded checkout instead of success and cancel URLs. - Updated translation keys to reflect changes in checkout session handling across multiple languages. * Update CheckoutModal to adjust dialog content width for improved layout * Update CheckoutModal to add vertical padding for improved content layout * Update CheckoutModal to add horizontal padding for improved content layout * Enhance CheckoutModal and createCheckoutSession for improved user experience - Increased the maximum width of the CheckoutModal for better content display. - Added a night theme appearance option to the createCheckoutSession API for a more visually appealing checkout process. * Update CheckoutModal to apply background color to EmbeddedCheckout component * Update CheckoutModal to set background color and remove unnecessary class from EmbeddedCheckout component * Update CheckoutModal to remove border from dialog content for a cleaner appearance * Update CheckoutModal to apply dark background class for improved styling consistency * Update CheckoutModal to reduce maximum width for improved layout consistency * Update CheckoutModal to further reduce maximum width for enhanced layout consistency * Update CheckoutModal to further reduce maximum width for improved layout consistency * Update CheckoutModal to apply consistent border styling for improved visual coherence * Update CheckoutModal to increase maximum width for improved content display * Update CheckoutModal to increase maximum width for better content display * Update translations to replace empty strings with "7-day free trial" across multiple languages * Update translations to replace "Pricing" with "Start for Free" across multiple languages * Update translations to replace "Start free trial" with "Start for $0" across multiple languages * Refactor PricingCards and CheckoutModal components to improve checkout handling and modal behavior
1 parent 8581b92 commit 79b3af0

37 files changed

Lines changed: 287 additions & 219 deletions

client/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ ARG NEXT_PUBLIC_BACKEND_URL
2929
ARG NEXT_PUBLIC_DISABLE_SIGNUP
3030
ARG NEXT_PUBLIC_CLOUD
3131
ARG NEXT_PUBLIC_TURNSTILE_SITE_KEY
32+
ARG NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
3233
ENV NEXT_PUBLIC_BACKEND_URL=${NEXT_PUBLIC_BACKEND_URL}
3334
ENV NEXT_PUBLIC_DISABLE_SIGNUP=${NEXT_PUBLIC_DISABLE_SIGNUP}
3435
ENV NEXT_PUBLIC_CLOUD=${NEXT_PUBLIC_CLOUD}
3536
ENV NEXT_PUBLIC_TURNSTILE_SITE_KEY=${NEXT_PUBLIC_TURNSTILE_SITE_KEY}
37+
ENV NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=${NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY}
3638

3739
WORKDIR /app/client
3840
RUN npm run build

client/messages/cs.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "Pro předplatné prosím vyber organizaci.",
869869
"Po5b4M": "Vybraný cenový plán nebyl nalezen. Uprav prosím posuvník.",
870870
"NLmfEq": "Nepodařilo se vytvořit platební relaci.",
871-
"lMJ3zA": "URL pro platbu nebylo přijato.",
871+
"Xtxl5C": "",
872872
"+bk3BW": "Předplatné selhalo: {message}",
873873
"9h0k8z": "Měsíční zobrazení stránek",
874874
"wYsv4Z": "Měsíční",
@@ -883,7 +883,7 @@
883883
"fr4eNi": "Testovací předplatné za $1 pro vývoj",
884884
"CnmIg8": "Předplatit ($1)",
885885
"5dX7fM": "Pokročilé funkce pro firemní týmy",
886-
"5Wwopw": "Ceník",
886+
"GnHuiT": "",
887887
"vYmJVk": "",
888888
"UHF9uv": "Tvé zkušební využití",
889889
"blVqkQ": "Aktuální využití",

client/messages/de.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "Bitte wählen Sie eine Organisation zum Abonnieren aus.",
869869
"Po5b4M": "Ausgewählter Preisplan nicht gefunden. Bitte passen Sie den Schieberegler an.",
870870
"NLmfEq": "Checkout-Sitzung konnte nicht erstellt werden.",
871-
"lMJ3zA": "Keine Checkout-URL erhalten.",
871+
"Xtxl5C": "",
872872
"+bk3BW": "Abonnement fehlgeschlagen: {message}",
873873
"9h0k8z": "Monatliche Seitenaufrufe",
874874
"wYsv4Z": "Monatlich",
@@ -883,8 +883,8 @@
883883
"fr4eNi": "1 $ Test-Abonnement für Entwicklung",
884884
"CnmIg8": "Abonnieren (1 $)",
885885
"5dX7fM": "Erweiterte Funktionen für Unternehmensteams",
886-
"5Wwopw": "Preise",
887-
"vYmJVk": "Starten Sie Ihre 7-tägige kostenlose Testversion — keine Kreditkartengebühren bis zum Ende der Testphase.",
886+
"GnHuiT": "",
887+
"vYmJVk": "",
888888
"UHF9uv": "Ihre Testnutzung",
889889
"blVqkQ": "Aktuelle Nutzung",
890890
"O/w//A": "{count} Events",

client/messages/en.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "Please select an organization to subscribe.",
869869
"Po5b4M": "Selected pricing plan not found. Please adjust the slider.",
870870
"NLmfEq": "Failed to create checkout session.",
871-
"lMJ3zA": "Checkout URL not received.",
871+
"Xtxl5C": "Checkout session not received.",
872872
"+bk3BW": "Subscription failed: {message}",
873873
"9h0k8z": "Monthly pageviews",
874874
"wYsv4Z": "Monthly",
@@ -883,7 +883,7 @@
883883
"fr4eNi": "$1 test subscription for development",
884884
"CnmIg8": "Subscribe ($1)",
885885
"5dX7fM": "Advanced features for enterprise teams",
886-
"5Wwopw": "Pricing",
886+
"GnHuiT": "Start for Free",
887887
"vYmJVk": "Start your 7-day free trial — no credit card charges until the trial ends.",
888888
"UHF9uv": "Your Trial Usage",
889889
"blVqkQ": "Current Usage",

client/messages/es.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "Por favor, selecciona una organización para suscribirte.",
869869
"Po5b4M": "No se encontró el plan de precios seleccionado. Por favor, ajusta el deslizador.",
870870
"NLmfEq": "Error al crear la sesión de pago.",
871-
"lMJ3zA": "URL de pago no recibida.",
871+
"Xtxl5C": "",
872872
"+bk3BW": "Suscripción fallida: {message}",
873873
"9h0k8z": "Visitas a la página mensuales",
874874
"wYsv4Z": "Mensual",
@@ -883,8 +883,8 @@
883883
"fr4eNi": "Suscripción de prueba de $1 para desarrollo",
884884
"CnmIg8": "Suscribirse ($1)",
885885
"5dX7fM": "Funciones avanzadas para equipos de la empresa",
886-
"5Wwopw": "Precios",
887-
"vYmJVk": "Comienza tu prueba gratuita de 7 días: no se realizarán cargos en tu tarjeta de crédito hasta que finalice la prueba.",
886+
"GnHuiT": "",
887+
"vYmJVk": "",
888888
"UHF9uv": "Uso de tu prueba",
889889
"blVqkQ": "Uso actual",
890890
"O/w//A": "{count} eventos",

client/messages/fr.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "Veuillez sélectionner une organisation pour vous abonner.",
869869
"Po5b4M": "Plan tarifaire sélectionné introuvable. Veuillez ajuster le curseur.",
870870
"NLmfEq": "Échec de la création de la session de paiement.",
871-
"lMJ3zA": "URL de paiement non reçue.",
871+
"Xtxl5C": "",
872872
"+bk3BW": "Échec de l'abonnement : {message}",
873873
"9h0k8z": "Pages vues mensuelles",
874874
"wYsv4Z": "Mensuel",
@@ -883,8 +883,8 @@
883883
"fr4eNi": "Abonnement test à 1 $ pour le développement",
884884
"CnmIg8": "S'abonner (1 $)",
885885
"5dX7fM": "Fonctionnalités avancées pour les équipes entreprise",
886-
"5Wwopw": "Tarifs",
887-
"vYmJVk": "Commencez votre essai gratuit de 7 jours — aucune facturation par carte bancaire avant la fin de l'essai.",
886+
"GnHuiT": "",
887+
"vYmJVk": "",
888888
"UHF9uv": "Votre utilisation d'essai",
889889
"blVqkQ": "Utilisation actuelle",
890890
"O/w//A": "{count} événements",

client/messages/it.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "Seleziona un'organizzazione per abbonarti.",
869869
"Po5b4M": "Piano tariffario selezionato non trovato. Regola il cursore.",
870870
"NLmfEq": "Impossibile creare la sessione di checkout.",
871-
"lMJ3zA": "URL di checkout non ricevuto.",
871+
"Xtxl5C": "",
872872
"+bk3BW": "Abbonamento fallito: {message}",
873873
"9h0k8z": "Visualizzazioni di pagina mensili",
874874
"wYsv4Z": "Mensile",
@@ -883,8 +883,8 @@
883883
"fr4eNi": "Abbonamento di prova da 1$ per lo sviluppo",
884884
"CnmIg8": "Abbonati (1$)",
885885
"5dX7fM": "Funzionalità avanzate per team aziendali",
886-
"5Wwopw": "Prezzi",
887-
"vYmJVk": "Inizia la tua prova gratuita di 7 giorni — nessun addebito sulla carta di credito fino al termine della prova.",
886+
"GnHuiT": "",
887+
"vYmJVk": "",
888888
"UHF9uv": "Utilizzo in Prova",
889889
"blVqkQ": "Utilizzo Attuale",
890890
"O/w//A": "{count} eventi",

client/messages/ja.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "サブスクリプションする組織を選択してください。",
869869
"Po5b4M": "選択した料金プランが見つかりません。スライダーを調整してください。",
870870
"NLmfEq": "チェックアウトセッションの作成に失敗しました。",
871-
"lMJ3zA": "チェックアウトURLが受信されませんでした。",
871+
"Xtxl5C": "",
872872
"+bk3BW": "サブスクリプションに失敗しました:{message}",
873873
"9h0k8z": "月間ページビュー",
874874
"wYsv4Z": "月額",
@@ -883,8 +883,8 @@
883883
"fr4eNi": "開発用$1テストサブスクリプション",
884884
"CnmIg8": "サブスクリプション($1)",
885885
"5dX7fM": "エンタープライズチーム向けの高度な機能",
886-
"5Wwopw": "料金",
887-
"vYmJVk": "7日間の無料トライアルを開始しましょう。トライアル終了まで、クレジットカードには請求されません。",
886+
"GnHuiT": "",
887+
"vYmJVk": "",
888888
"UHF9uv": "トライアル使用量",
889889
"blVqkQ": "現在の使用量",
890890
"O/w//A": "{count}イベント",

client/messages/ko.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "구독하려면 조직을 선택해 주세요.",
869869
"Po5b4M": "선택한 요금제를 찾을 수 없습니다. 슬라이더를 조정해 주세요.",
870870
"NLmfEq": "결제 세션 생성에 실패했습니다.",
871-
"lMJ3zA": "결제 URL을 받지 못했습니다.",
871+
"Xtxl5C": "",
872872
"+bk3BW": "구독 실패: {message}",
873873
"9h0k8z": "월별 페이지뷰",
874874
"wYsv4Z": "월간",
@@ -883,8 +883,8 @@
883883
"fr4eNi": "개발용 $1 테스트 구독",
884884
"CnmIg8": "구독 ($1)",
885885
"5dX7fM": "엔터프라이즈 팀을 위한 고급 기능",
886-
"5Wwopw": "요금제",
887-
"vYmJVk": "7일 무료 체험을 시작하세요 — 체험 기간이 끝날 때까지 신용카드 요금이 청구되지 않습니다.",
886+
"GnHuiT": "",
887+
"vYmJVk": "",
888888
"UHF9uv": "체험판 사용량",
889889
"blVqkQ": "현재 사용량",
890890
"O/w//A": "{count}개 이벤트",

client/messages/pl.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -868,7 +868,7 @@
868868
"cdVnd3": "Wybierz organizację, aby subskrybować.",
869869
"Po5b4M": "Nie znaleziono wybranego planu cenowego. Dostosuj suwak.",
870870
"NLmfEq": "Nie udało się utworzyć sesji płatności.",
871-
"lMJ3zA": "Nie otrzymano adresu URL płatności.",
871+
"Xtxl5C": "",
872872
"+bk3BW": "Subskrypcja nie powiodła się: {message}",
873873
"9h0k8z": "Miesięczne odsłony",
874874
"wYsv4Z": "Miesięcznie",
@@ -883,8 +883,8 @@
883883
"fr4eNi": "Subskrypcja testowa za $1 do celów deweloperskich",
884884
"CnmIg8": "Subskrybuj ($1)",
885885
"5dX7fM": "Zaawansowane funkcje dla zespołów korporacyjnych",
886-
"5Wwopw": "Cennik",
887-
"vYmJVk": "Rozpocznij 7-dniowy bezpłatny okres próbny — karta kredytowa nie zostanie obciążona do końca okresu próbnego.",
886+
"GnHuiT": "",
887+
"vYmJVk": "",
888888
"UHF9uv": "Twoje wykorzystanie wersji próbnej",
889889
"blVqkQ": "Bieżące wykorzystanie",
890890
"O/w//A": "{count} zdarzeń",

0 commit comments

Comments
 (0)