अर्ली एक्सेस का अनुरोध करें

अपना नाम और ईमेल या फ़ोन नंबर दर्ज करें. हम Tajo एक्सेस की जानकारी के साथ आपसे संपर्क करेंगे.

इंस्टॉल लिंक और डीप लिंक

इंस्टॉल लिंक से आप अपना Stripe App मार्केटप्लेस के बाहर भी बाँट सकते हैं, जबकि डीप लिंक यूज़र्स को सीधे आपके इंस्टॉल किए गए ऐप के किसी खास व्यू तक ले जाते हैं. सहज ऑनबोर्डिंग और इंटीग्रेशन फ़्लो के लिए दोनों ज़रूरी हैं.

इंस्टॉल लिंक

इंस्टॉल लिंक एक सीधा URL देते हैं जिससे मर्चेंट आपका ऐप इंस्टॉल कर सकते हैं. जब कोई यूज़र इंस्टॉल लिंक पर क्लिक करता है, तो Stripe इंस्टॉलेशन फ़्लो संभालता है और फिर आपके बताए गए URI पर वापस रीडायरेक्ट कर देता है.

ज़रूरी शर्तें

इंस्टॉल लिंक इस्तेमाल करने से पहले अपने ऐप मैनिफ़ेस्ट में allowed_redirect_uris कॉन्फ़िगर करें:

{
"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
पैरामीटरज़रूरीविवरण
client_idहाँआपका ऐप ID (जैसे com.tajo.brevo-integration)
redirect_uriहाँआपके allowed_redirect_uris में से किसी एक से मेल खाना चाहिए
stateअनुशंसितCSRF सुरक्षा के लिए रैंडम स्ट्रिंग

रीडायरेक्ट पैरामीटर

इंस्टॉलेशन सफल होने पर Stripe यूज़र को इन query पैरामीटर के साथ आपके redirect_uri पर रीडायरेक्ट करता है:

पैरामीटरविवरण
user_idइंस्टॉल कर रहे अकाउंट का Stripe यूज़र ID
account_idStripe अकाउंट ID (जैसे acct_xxxxx)
stateआपके दिए गए state की वैल्यू (CSRF सत्यापन के लिए)
install_signatureHMAC सिग्नेचर, जिससे पुष्टि होती है कि इंस्टॉल वैध है

रीडायरेक्ट URL का उदाहरण:

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

CSRF सुरक्षा

cross-site request forgery हमलों से बचने के लिए हमेशा state पैरामीटर इस्तेमाल करें:

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

सिग्नेचर सत्यापन

अपने ऐप के signing secret की मदद से install_signature सत्यापित करें:

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

टाइमिंग अटैक से बचने के लिए सिग्नेचर की तुलना हमेशा crypto.timingSafeEqual से करें. साधारण स्ट्रिंग समानता (===) का इस्तेमाल कभी न करें.

साइनिंग सीक्रेट

आपके ऐप का साइनिंग सीक्रेट Stripe डैशबोर्ड में आपके ऐप की सेटिंग्स के नीचे मिलता है. इसका इस्तेमाल इनके लिए करें:

  • रीडायरेक्ट कॉलबैक से आए इंस्टॉल सिग्नेचर सत्यापित करना
  • Stripe से आए वेबहुक पेलोड की जाँच करना
  • अपने बैकएंड और Stripe के बीच की रिक्वेस्ट प्रमाणित करना

साइनिंग सीक्रेट को सुरक्षित तरीके से स्टोर करें:

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

साइनिंग सीक्रेट को अपने सोर्स कोड में कभी हार्डकोड न करें और न ही version control में कमिट करें.

डीप लिंक

डीप लिंक यूज़र्स को सीधे आपके इंस्टॉल किए गए Stripe App के किसी खास व्यू तक ले जाते हैं. इनका इस्तेमाल यूज़र्स को बाहरी संचार (ईमेल, नोटिफ़िकेशन, सपोर्ट पेज) से सही ऐप संदर्भ तक पहुँचाने के लिए करें.

डीप लिंक URL का फ़ॉर्मैट

https://dashboard.stripe.com/MODE/acct_ID/PAGE?apps[APP_ID][TARGET]=VIEWPORT_ID
घटकविवरणउदाहरण
MODElive या testlive
acct_IDलक्ष्य Stripe अकाउंट IDacct_1234567890
PAGEडैशबोर्ड पेज का पाथcustomers/cus_xxxxx
APP_IDआपके ऐप का IDcom.tajo.brevo-integration
TARGETdrawer या modaldrawer
VIEWPORT_IDखोलने के लिए व्यूपोर्टstripe.dashboard.customer.detail

Drawer बनाम Modal टारगेट

टारगेटव्यवहारकब इस्तेमाल करें
drawerऐप को साइड पैनल (drawer) में खोलता हैसामान्य ऐप इंटरैक्शन, पेज के साथ-साथ संदर्भ
modalऐप को फ़ुल-स्क्रीन modal ओवरले में खोलता हैफ़ोकस्ड वर्कफ़्लो, ऑनबोर्डिंग, जटिल फ़ॉर्म

डीप लिंक के उदाहरण

drawer में ग्राहक विवरण व्यू खोलें

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

ऑनबोर्डिंग फ़्लो खोलें

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

test मोड में पेमेंट विवरण व्यू खोलें

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

संचार में डीप लिंक का इस्तेमाल

डीप लिंक खास तौर पर इनमें उपयोगी हैं:

  • ईमेल नोटिफ़िकेशन: “इस ग्राहक के लिए Brevo सिंक की स्थिति देखें”
  • सपोर्ट जवाब: “अपनी इंटीग्रेशन सेटिंग्स जाँचने के लिए यहाँ क्लिक करें”
  • ऑनबोर्डिंग ईमेल: “अपना Brevo सेटअप पूरा करें”
  • एरर अलर्ट: “ग्राहक 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>

इंस्टॉल लिंक और डीप लिंक को साथ में इस्तेमाल करना

सबसे बेहतर ऑनबोर्डिंग अनुभव के लिए इंस्टॉल लिंक को इंस्टॉल के बाद वाले डीप लिंक के साथ जोड़ें:

  1. यूज़र आपकी वेबसाइट या ईमेल से किसी इंस्टॉल लिंक पर क्लिक करता है
  2. यूज़र ऐप इंस्टॉल करता है और आपके कॉलबैक URL पर रीडायरेक्ट हो जाता है
  3. आपका कॉलबैक इंस्टॉलेशन प्रोसेस करता है और यूज़र को उस डीप लिंक पर भेजता है जो ऑनबोर्डिंग व्यूपोर्ट खोलता है
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

यह पक्का करने के लिए कि इंस्टॉल लिंक और डीप लिंक हर एनवायरनमेंट में सही काम करें, इन्हें हमेशा live और test दोनों मोड में टेस्ट करें.

अर्ली एक्सेस का अनुरोध करें

अपना नाम और ईमेल या फ़ोन नंबर दर्ज करें. हम Tajo एक्सेस की जानकारी के साथ आपसे संपर्क करेंगे.

ऑटो डिटेक्ट
AI असिस्टेंट

नमस्ते! डॉक्यूमेंटेशन के बारे में कुछ भी पूछें.