Beantrage frühzeitigen Zugang

Gib deinen Vornamen und eine E-Mail-Adresse oder Telefonnummer an. Wir melden uns mit den Details zum Tajo-Zugang bei dir.

Install Links & Deep Links

Mit Install Links verteilst du deine Stripe App außerhalb des Marketplace, und Deep Links führen Nutzer:innen direkt zu einer bestimmten Ansicht innerhalb deiner installierten App. Beide sind für ein reibungsloses Onboarding und saubere Integrationsflows unverzichtbar.

Install Links liefern eine direkte URL, über die Händler:innen deine App installieren können. Klickt jemand auf einen Install Link, übernimmt Stripe den Installationsflow und leitet danach zu der von dir angegebenen URI zurück.

Voraussetzungen

Bevor du Install Links verwendest, konfiguriere allowed_redirect_uris in deinem App-Manifest:

{
"id": "com.tajo.brevo-integration",
"allowed_redirect_uris": [
"https://tajo.io/stripe/callback",
"https://tajo.io/stripe/oauth/complete"
]
}
https://marketplace.stripe.com/oauth/v2/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&state=STATE_VALUE
ParameterErforderlichBeschreibung
client_idJaDeine App-ID (z. B. com.tajo.brevo-integration)
redirect_uriJaMuss mit einer deiner allowed_redirect_uris übereinstimmen
stateEmpfohlenZufällige Zeichenfolge zum CSRF-Schutz

Weiterleitungsparameter

Nach einer erfolgreichen Installation leitet Stripe die Person mit diesen Query-Parametern zu deiner redirect_uri weiter:

ParameterBeschreibung
user_idDie Stripe-Nutzer-ID des installierenden Kontos
account_idDie Stripe-Konto-ID (z. B. acct_xxxxx)
stateDer state-Wert, den du übergeben hast (zur CSRF-Prüfung)
install_signatureHMAC-Signatur, mit der du die Echtheit der Installation prüfst

Beispiel für eine Weiterleitungs-URL:

https://tajo.io/stripe/callback
?user_id=usr_xxxxx
&account_id=acct_xxxxx
&state=abc123random
&install_signature=sig_xxxxx

CSRF-Schutz

Nutze immer den state-Parameter, um Cross-Site-Request-Forgery-Angriffe zu verhindern:

import crypto from 'crypto';
// Generate a random state value and store it in the session
const generateInstallLink = (req, res) => {
const state = crypto.randomBytes(32).toString('hex');
// Store state in session for later verification
req.session.stripeInstallState = state;
const installUrl = new URL('https://marketplace.stripe.com/oauth/v2/authorize');
installUrl.searchParams.set('client_id', 'com.tajo.brevo-integration');
installUrl.searchParams.set('redirect_uri', 'https://tajo.io/stripe/callback');
installUrl.searchParams.set('state', state);
res.redirect(installUrl.toString());
};
// Handle the redirect callback
const handleInstallCallback = async (req, res) => {
const { state, user_id, account_id, install_signature } = req.query;
// Verify state matches what we stored
if (state !== req.session.stripeInstallState) {
return res.status(403).json({ error: 'Invalid state parameter' });
}
// Clear the stored state
delete req.session.stripeInstallState;
// Verify the install signature
if (!verifyInstallSignature(install_signature, account_id)) {
return res.status(403).json({ error: 'Invalid install signature' });
}
// Process the successful installation
await processInstallation(user_id, account_id);
res.redirect('/dashboard/stripe-connected');
};

Signaturprüfung

Prüfe die install_signature mit dem Signing Secret deiner App:

import crypto from 'crypto';
const verifyInstallSignature = (signature, accountId) => {
const signingSecret = process.env.STRIPE_APP_SIGNING_SECRET;
const expectedSignature = crypto
.createHmac('sha256', signingSecret)
.update(accountId)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
};

Caution

Nutze für den Signaturvergleich immer crypto.timingSafeEqual, um Timing-Angriffe zu verhindern. Verwende nie einen einfachen Zeichenkettenvergleich (===).

Signing Secret

Das Signing Secret deiner App findest du im Stripe Dashboard in den Einstellungen der App. Verwende es, um:

  • Install-Signaturen aus Weiterleitungs-Callbacks zu prüfen
  • Webhook-Payloads von Stripe zu validieren
  • Anfragen zwischen deinem Backend und Stripe zu authentifizieren

Bewahre das Signing Secret sicher auf:

Terminal window
# Set as environment variable
export STRIPE_APP_SIGNING_SECRET="whsec_xxxxx"

Schreibe Signing Secrets nie fest in deinen Quellcode und checke sie nie in die Versionsverwaltung ein.

Deep Links führen Nutzer:innen direkt zu einer bestimmten Ansicht innerhalb deiner installierten Stripe App. Setze sie ein, um Personen aus externer Kommunikation (E-Mails, Benachrichtigungen, Support-Seiten) in den passenden App-Kontext zu bringen.

https://dashboard.stripe.com/MODE/acct_ID/PAGE?apps[APP_ID][TARGET]=VIEWPORT_ID
KomponenteBeschreibungBeispiel
MODElive oder testlive
acct_IDZiel-Stripe-Konto-IDacct_1234567890
PAGEPfad der Dashboard-Seitecustomers/cus_xxxxx
APP_IDDie ID deiner Appcom.tajo.brevo-integration
TARGETdrawer oder modaldrawer
VIEWPORT_IDDer zu öffnende Viewportstripe.dashboard.customer.detail

Drawer- oder Modal-Target

TargetVerhaltenAnwendungsfall
drawerÖffnet die App im Seitenbereich (Drawer)Standardinteraktion, Kontext neben der Seite
modalÖffnet die App als bildschirmfüllendes OverlayFokussierte Abläufe, Onboarding, komplexe Formulare

Kundendetailansicht im Drawer öffnen

https://dashboard.stripe.com/live/acct_xxxxx/customers/cus_xxxxx
?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.customer.detail

Einstellungen im Modal öffnen

https://dashboard.stripe.com/live/acct_xxxxx/settings
?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.settings

Onboarding-Flow öffnen

https://dashboard.stripe.com/live/acct_xxxxx/dashboard
?apps[com.tajo.brevo-integration][modal]=stripe.dashboard.onboarding

Zahlungsdetailansicht im Testmodus öffnen

https://dashboard.stripe.com/test/acct_xxxxx/payments/pi_xxxxx
?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.payment.detail
const generateDeepLink = ({
accountId,
mode = 'live',
page,
appId = 'com.tajo.brevo-integration',
target = 'drawer',
viewport,
}) => {
const baseUrl = `https://dashboard.stripe.com/${mode}/${accountId}/${page}`;
const params = new URLSearchParams();
params.set(`apps[${appId}][${target}]`, viewport);
return `${baseUrl}?${params.toString()}`;
};
// Generate a link to view a customer's Brevo profile
const customerLink = generateDeepLink({
accountId: 'acct_xxxxx',
page: 'customers/cus_xxxxx',
viewport: 'stripe.dashboard.customer.detail',
});
// Generate a link to app settings
const settingsLink = generateDeepLink({
accountId: 'acct_xxxxx',
page: 'settings',
viewport: 'stripe.dashboard.settings',
target: 'modal',
});

Deep Links sind besonders nützlich in:

  • E-Mail-Benachrichtigungen: „Brevo-Sync-Status für diese Kund:in ansehen”
  • Support-Antworten: „Hier klicken, um deine Integrationseinstellungen zu prüfen”
  • Onboarding-E-Mails: „Schließe deine Brevo-Einrichtung ab”
  • Fehlerwarnungen: „Sieh dir das Sync-Problem für Kund:in X an”
<!-- Example in an email template -->
<a href="https://dashboard.stripe.com/live/acct_xxxxx/customers/cus_xxxxx?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.customer.detail">
View Brevo Profile in Stripe
</a>

Für das beste Onboarding-Erlebnis kombinierst du Install Links mit Deep Links nach der Installation:

  1. Eine Person klickt auf deiner Website oder in einer E-Mail auf einen Install Link
  2. Sie installiert die App und wird zu deiner Callback-URL weitergeleitet
  3. Dein Callback verarbeitet die Installation und leitet zu einem Deep Link weiter, der den Onboarding-Viewport öffnet
const handleInstallCallback = async (req, res) => {
const { account_id, install_signature, state } = req.query;
// Verify state and signature
// ... (verification code)
// Process installation
await processInstallation(account_id);
// Redirect to the app's onboarding view via deep link
const onboardingLink = generateDeepLink({
accountId: account_id,
page: 'dashboard',
viewport: 'stripe.dashboard.onboarding',
target: 'modal',
});
res.redirect(onboardingLink);
};

Tip

Teste Install Links und Deep Links immer sowohl im Live- als auch im Testmodus, damit sie in allen Umgebungen zuverlässig funktionieren.

Beantrage frühzeitigen Zugang

Gib deinen Vornamen und eine E-Mail-Adresse oder Telefonnummer an. Wir melden uns mit den Details zum Tajo-Zugang bei dir.

automatische Erkennung
AI-Assistent

Hallo! Fragen Sie mich alles über die Dokumentation.