Požádejte o přednostní přístup

Uveďte své křestní jméno a e-mail nebo telefonní číslo. Pošleme Vám informace o přístupu k platformě Tajo.

Instalační a hluboké odkazy

Instalační odkazy Vám umožňují distribuovat Vaši Stripe App mimo marketplace, zatímco hluboké odkazy navigují uživatele přímo do konkrétních pohledů v rámci nainstalované aplikace. Obojí je nezbytné pro plynulý onboarding a integrační toky.

Instalační odkazy

Instalační odkazy poskytují přímou URL, kterou obchodníci mohou použít k instalaci Vaší aplikace. Když uživatel klikne na instalační odkaz, Stripe provede instalační tok a poté ho přesměruje zpět na Vámi zadanou URI.

Předpoklady

Před použitím instalačních odkazů nakonfigurujte allowed_redirect_uris v manifestu aplikace:

{
"id": "com.tajo.brevo-integration",
"allowed_redirect_uris": [
"https://tajo.io/stripe/callback",
"https://tajo.io/stripe/oauth/complete"
]
}

Formát instalačního odkazu

https://marketplace.stripe.com/oauth/v2/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&state=STATE_VALUE
ParametrPovinnýPopis
client_idAnoID Vaší aplikace (např. com.tajo.brevo-integration)
redirect_uriAnoMusí odpovídat jedné z hodnot allowed_redirect_uris
stateDoporučenoNáhodný řetězec pro ochranu před CSRF

Parametry přesměrování

Po úspěšné instalaci Stripe přesměruje uživatele na Vaši redirect_uri s těmito parametry dotazu:

ParametrPopis
user_idStripe ID uživatele instalujícího účtu
account_idID účtu Stripe (např. acct_xxxxx)
stateHodnota state, kterou jste poskytli (pro ověření CSRF)
install_signaturePodpis HMAC pro ověření, že je instalace legitimní

Příklad URL přesměrování:

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

Ochrana před CSRF

Vždy používejte parametr state, abyste zabránili útokům typu cross-site request forgery:

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');
};

Ověření podpisu

Ověřte install_signature pomocí podpisového tajemství Vaší aplikace:

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

Pro porovnání podpisů vždy používejte crypto.timingSafeEqual, abyste zabránili časovacím útokům. Nikdy nepoužívejte prosté porovnání řetězců (===).

Podpisové tajemství

Podpisové tajemství Vaší aplikace najdete ve Stripe Dashboardu v nastavení aplikace. Použijte ho k tomu, abyste:

  • ověřili instalační podpisy z callbacků přesměrování
  • validovali payloady webhooků od Stripe
  • autentizovali požadavky mezi Vaším backendem a Stripe

Podpisové tajemství ukládejte bezpečně:

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

Podpisová tajemství nikdy nezapisujte natvrdo do zdrojového kódu ani je necommitujte do správy verzí.

Hluboké odkazy

Hluboké odkazy navigují uživatele přímo do konkrétního pohledu v rámci nainstalované Stripe App. Použijte je k nasměrování uživatelů z externí komunikace (e-maily, notifikace, stránky podpory) do relevantního kontextu aplikace.

Formát URL hlubokého odkazu

https://dashboard.stripe.com/MODE/acct_ID/PAGE?apps[APP_ID][TARGET]=VIEWPORT_ID
SoučástPopisPříklad
MODElive nebo testlive
acct_IDID cílového účtu Stripeacct_1234567890
PAGECesta ke stránce dashboarducustomers/cus_xxxxx
APP_IDID Vaší aplikacecom.tajo.brevo-integration
TARGETdrawer nebo modaldrawer
VIEWPORT_IDViewport, který se má otevřítstripe.dashboard.customer.detail

Cíl drawer versus modal

CílChováníPřípad použití
drawerOtevře aplikaci v bočním panelu (drawer)Výchozí interakce s aplikací, kontext vedle stránky
modalOtevře aplikaci v celoobrazovkové modální vrstvěSoustředěné pracovní postupy, onboarding, složité formuláře

Příklady hlubokých odkazů

Otevření detailu zákazníka v bočním panelu drawer

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

Otevření nastavení v modálním okně

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

Otevření onboardingového toku

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

Otevření detailu platby v testovacím režimu

https://dashboard.stripe.com/test/acct_xxxxx/payments/pi_xxxxx
?apps[com.tajo.brevo-integration][drawer]=stripe.dashboard.payment.detail

Generování hlubokých odkazů programově

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',
});

Použití hlubokých odkazů v komunikaci

Hluboké odkazy jsou obzvlášť užitečné v těchto případech:

  • E-mailové notifikace: „Zobrazit stav synchronizace s Brevo pro tohoto zákazníka”
  • Odpovědi podpory: „Kliknutím sem zkontrolujete nastavení své integrace”
  • Onboardingové e-maily: „Dokončete své nastavení Brevo”
  • Upozornění na chyby: „Zkontrolujte problém se synchronizací u zákazníka X”
<!-- 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>

Kombinace instalačních a hlubokých odkazů

Nejlepšího onboardingu dosáhnete kombinací instalačních odkazů s hlubokými odkazy po instalaci:

  1. Uživatel klikne na instalační odkaz na Vašem webu nebo v e-mailu
  2. Uživatel nainstaluje aplikaci a je přesměrován na Vaši callback URL
  3. Váš callback zpracuje instalaci a přesměruje uživatele na hluboký odkaz, který otevře onboardingový viewport
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

Instalační i hluboké odkazy vždy otestujte v živém i testovacím režimu, abyste zajistili jejich správnou funkci ve všech prostředích.

Požádejte o přednostní přístup

Uveďte své křestní jméno a e-mail nebo telefonní číslo. Pošleme Vám informace o přístupu k platformě Tajo.

automatické rozpoznání
AI asistent

Ahoj! Zeptejte se mě na dokumentaci.