Ζητήστε πρώιμη πρόσβαση

Συμπληρώστε το όνομά σας και ένα email ή έναν αριθμό τηλεφώνου. Θα σας στείλουμε πληροφορίες για την πρόσβαση στο Tajo.

Αναφορά manifest εφαρμογής

Το αρχείο manifest stripe-app.json είναι η κεντρική διαμόρφωση της εφαρμογής σας για το Stripe. Δηλώνει την ταυτότητα της εφαρμογής, τα δικαιώματα, τις προβολές του περιβάλλοντος χρήστη, τις πολιτικές ασφαλείας και τη συμπεριφορά μετά την εγκατάσταση.

Πλήρες παράδειγμα manifest

{
"id": "com.tajo.brevo-integration",
"version": "1.2.0",
"name": "Tajo for Brevo",
"icon": "./assets/icon.png",
"distribution_type": "public",
"sandbox_install_compatible": true,
"stripe_api_access_type": "oauth",
"allowed_redirect_uris": [
"https://tajo.io/stripe/callback",
"https://tajo.io/stripe/oauth/complete"
],
"permissions": [
{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
},
{
"permission": "customer_write",
"purpose": "Update customer metadata with Brevo sync status"
},
{
"permission": "charge_read",
"purpose": "Access payment history for Brevo event tracking"
},
{
"permission": "product_read",
"purpose": "Sync product catalog to Brevo for personalized campaigns"
},
{
"permission": "event_read",
"purpose": "Subscribe to real-time events for Brevo automation triggers"
},
{
"permission": "invoice_read",
"purpose": "Track invoice lifecycle events in Brevo"
}
],
"ui_extension": {
"views": [
{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
},
{
"viewport": "stripe.dashboard.customer.list",
"component": "CustomerListView"
},
{
"viewport": "stripe.dashboard.home.overview",
"component": "OverviewView"
},
{
"viewport": "stripe.dashboard.drawer.default",
"component": "DrawerView"
},
{
"viewport": "stripe.dashboard.settings",
"component": "SettingsView"
},
{
"viewport": "stripe.dashboard.onboarding",
"component": "OnboardingView"
}
],
"content_security_policy": {
"connect-src": [
"https://api.tajo.io",
"https://api.brevo.com"
],
"image-src": [
"https://cdn.tajo.io",
"https://assets.brevo.com"
],
"purpose": "Connect to Tajo API for data sync and Brevo API for contact management"
}
},
"post_install_action": {
"type": "onboarding"
},
"constants": {
"API_BASE_URL": "https://api.tajo.io/v1",
"SYNC_INTERVAL_SECONDS": "300"
}
}

Αναφορά σχήματος

Πεδία ανώτατου επιπέδου

ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
idstringΝαιΜοναδικό αναγνωριστικό εφαρμογής σε αντίστροφη σημειογραφία domain (μορφή slug)
versionstringΝαιΣυμβολοσειρά σημασιολογικής έκδοσης (π.χ. "1.2.0")
namestringΝαιΕμφανιζόμενο όνομα στο marketplace (έως 35 χαρακτήρες)
iconstringΝαιΣχετική διαδρομή προς το αρχείο εικονιδίου της εφαρμογής (PNG ή SVG 300x300)
distribution_typestringΝαι"public" για το marketplace ή "private" για εσωτερική χρήση
sandbox_install_compatiblebooleanΌχιΑν η εφαρμογή μπορεί να εγκατασταθεί σε λειτουργία sandbox/δοκιμών
stripe_api_access_typestringΌχιΜέθοδος πρόσβασης στο API: "oauth" ή "api_key"
allowed_redirect_urisstring[]ΌχιΕπιτρεπόμενα URI ανακατεύθυνσης OAuth για τη ροή εγκατάστασης
permissionsPermissionRequest[]ΝαιΠίνακας αιτημάτων δικαιωμάτων
ui_extensionUIExtensionManifestΌχιΔιαμόρφωση της επέκτασης περιβάλλοντος χρήστη
post_install_actionPostInstallActionΌχιΕνέργεια που εκτελείται μετά την εγκατάσταση της εφαρμογής
constantsobjectΌχιΖεύγη κλειδιού-τιμής προσβάσιμα στην εφαρμογή κατά την εκτέλεση

id

Το αναγνωριστικό της εφαρμογής είναι μια συμβολοσειρά μορφής slug, συνήθως σε αντίστροφη σημειογραφία domain:

"id": "com.tajo.brevo-integration"
  • Πρέπει να είναι καθολικά μοναδικό σε όλες τις Stripe Apps
  • Χρησιμοποιήστε μόνο πεζά γράμματα, αριθμούς, παύλες και τελείες
  • Δεν μπορεί να αλλάξει μετά τη δημιουργία της εφαρμογής
  • Καθορίζει το URL της εφαρμογής στο marketplace

version

Ακολουθεί τη σημασιολογική έκδοση:

"version": "1.2.0"
  • MAJOR: Αλλαγές που σπάνε τη συμβατότητα ή σημαντικές προσθήκες λειτουργιών
  • MINOR: Νέες λειτουργίες, συμβατές προς τα πίσω
  • PATCH: Διορθώσεις σφαλμάτων και μικρές βελτιώσεις
  • Πρέπει να αυξάνεται σε κάθε μεταφόρτωση

distribution_type

Ελέγχει ποιος μπορεί να εγκαταστήσει την εφαρμογή σας:

ΤιμήΠεριγραφή
"public"Διαθέσιμη σε όλους τους χρήστες στο Stripe App Marketplace
"private"Εγκαθίσταται μόνο από τον δικό σας λογαριασμό Stripe

stripe_api_access_type

Καθορίζει τον τρόπο με τον οποίο η εφαρμογή σας πιστοποιείται στο API του Stripe:

ΤιμήΠεριγραφή
"oauth"Χρησιμοποιεί ροή OAuth 2.0 για την πιστοποίηση (συνιστάται για δημόσιες εφαρμογές)
"api_key"Χρησιμοποιεί περιορισμένα κλειδιά API (κατάλληλο για ιδιωτικές εφαρμογές)

PermissionRequest

Κάθε αίτημα δικαιώματος δηλώνει ένα συγκεκριμένο δικαίωμα του Stripe API που χρειάζεται η εφαρμογή σας:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
permissionstringΝαιΤο αναγνωριστικό του δικαιώματος (δείτε την Αναφορά δικαιωμάτων)
purposestringΝαιΚατανοητή εξήγηση για τον λόγο που χρειάζεται αυτό το δικαίωμα

Οδηγίες για το πεδίο purpose:

  • Γράψτε σαφείς και συγκεκριμένες εξηγήσεις που μπορούν να καταλάβουν οι έμποροι
  • Εξηγήστε σε τι χρησιμεύει το δικαίωμα, όχι μόνο τι παραχωρεί
  • Κρατήστε τις περιγραφές σύντομες (μία πρόταση)
  • Αποφύγετε την τεχνική ορολογία

UIExtensionManifest

Διαμορφώνει τα στοιχεία περιβάλλοντος χρήστη της εφαρμογής σας:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
viewsViewManifest[]ΝαιΠίνακας δηλώσεων προβολών
content_security_policyCSPRequestΌχιΠολιτική ασφάλειας περιεχομένου για εξωτερικούς πόρους

ViewManifest

Κάθε προβολή αντιστοιχίζει ένα στοιχείο React σε ένα viewport του Stripe Dashboard:

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
viewportstringΝαιΗ θέση στο Dashboard όπου αποδίδεται αυτή η προβολή (δείτε την Αναφορά viewports)
componentstringΝαιΌνομα του στοιχείου React που θα αποδοθεί (πρέπει να ταιριάζει με το εξαγόμενο όνομα του στοιχείου)

Μία εφαρμογή μπορεί να δηλώσει πολλαπλές προβολές για διαφορετικά viewports:

"views": [
{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
},
{
"viewport": "stripe.dashboard.payment.detail",
"component": "PaymentDetailView"
},
{
"viewport": "stripe.dashboard.home.overview",
"component": "OverviewView"
}
]

CSPRequest

Η πολιτική ασφάλειας περιεχομένου ελέγχει σε ποια εξωτερικά domains μπορεί να συνδεθεί η εφαρμογή σας:

{
"content_security_policy": {
"connect-src": [
"https://api.tajo.io",
"https://api.brevo.com"
],
"image-src": [
"https://cdn.tajo.io"
],
"purpose": "Connect to Tajo API for data sync and load images from CDN"
}
}
ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
connect-srcstring[]ΌχιDomains στα οποία μπορεί να κάνει αιτήματα δικτύου η εφαρμογή
image-srcstring[]ΌχιDomains από τα οποία μπορεί να φορτώνει εικόνες η εφαρμογή
purposestringΝαιΕξήγηση για τον λόγο που χρειάζονται αυτές οι εξωτερικές συνδέσεις

Caution

Συμπεριλάβετε μόνο τα domains στα οποία πραγματικά χρειάζεται να συνδεθεί η εφαρμογή σας. Οι υπερβολικές καταχωρίσεις CSP μπορεί να προκαλέσουν αυστηρότερο έλεγχο κατά την αξιολόγηση.

PostInstallAction

Διαμορφώνει τι συμβαίνει αμέσως μόλις ένας χρήστης εγκαταστήσει την εφαρμογή σας:

{
"post_install_action": {
"type": "onboarding"
}
}
ΠεδίοΤύποςΥποχρεωτικόΠεριγραφή
typestringΝαιΟ τύπος της ενέργειας (δείτε παρακάτω)
urlstringΥπό όρουςURL για ενέργειες τύπου external

Τύποι ενεργειών

ΤύποςΣυμπεριφορά
"onboarding"Ανοίγει την προβολή onboarding της εφαρμογής στο Dashboard
"settings"Ανοίγει την προβολή ρυθμίσεων της εφαρμογής στο Dashboard
"external"Ανακατευθύνει τον χρήστη σε εξωτερικό URL (απαιτεί το πεδίο url)

Παραδείγματα:

// Open onboarding flow
{
"post_install_action": {
"type": "onboarding"
}
}
// Open settings page
{
"post_install_action": {
"type": "settings"
}
}
// Redirect to external setup
{
"post_install_action": {
"type": "external",
"url": "https://app.tajo.io/stripe/setup"
}
}

Δείτε τον οδηγό ενεργειών μετά την εγκατάσταση για αναλυτικά μοτίβα υλοποίησης.

Σταθερές

Ορίστε στατικά ζεύγη κλειδιού-τιμής που είναι προσβάσιμα κατά την εκτέλεση στην εφαρμογή σας:

{
"constants": {
"API_BASE_URL": "https://api.tajo.io/v1",
"SYNC_INTERVAL_SECONDS": "300",
"MAX_BATCH_SIZE": "100"
}
}
  • Όλες οι τιμές πρέπει να είναι συμβολοσειρές
  • Οι σταθερές ενσωματώνονται στην εφαρμογή κατά τη μεταγλώττιση
  • Χρησιμοποιήστε σταθερές για διαμόρφωση που διαφέρει ανά περιβάλλον
  • Ποτέ μην αποθηκεύετε μυστικά ή κλειδιά API ως σταθερές, χρησιμοποιήστε αντ’ αυτού το Secret Store API

Πρόσβαση στις σταθερές μέσα από τον κώδικα της εφαρμογής σας:

import { constants } from '@stripe/ui-extension-sdk/constants';
const apiUrl = constants.API_BASE_URL;

Εκτεταμένο manifest για ανάπτυξη

Κατά την τοπική ανάπτυξη είναι διαθέσιμα επιπλέον πεδία:

{
"id": "com.tajo.brevo-integration",
"version": "0.1.0",
"name": "Tajo for Brevo (Dev)",
"icon": "./assets/icon-dev.png",
"distribution_type": "private",
"sandbox_install_compatible": true,
"dev": {
"hot_reload": true,
"port": 4242
}
}

Η ενότητα dev αφαιρείται κατά τις εκδόσεις παραγωγής και τις μεταφορτώσεις της εφαρμογής. Χρησιμοποιήστε την μόνο για ρυθμίσεις διευκόλυνσης της τοπικής ανάπτυξης.

Επικύρωση

Επικυρώστε το manifest σας πριν από τη μεταφόρτωση:

Terminal window
# Validate manifest syntax and schema
stripe apps validate
# Check for common issues
stripe apps check

Συνήθη σφάλματα επικύρωσης:

ΣφάλμαΑιτίαΔιόρθωση
Invalid permissionΆγνωστο αναγνωριστικό δικαιώματοςΕλέγξτε την Αναφορά δικαιωμάτων
Invalid viewportΆγνωστο αναγνωριστικό viewportΕλέγξτε την Αναφορά viewports
Missing purposeΔικαίωμα χωρίς πεδίο purposeΠροσθέστε μια συμβολοσειρά purpose σε κάθε δικαίωμα
Invalid versionΣυμβολοσειρά έκδοσης που δεν είναι semverΧρησιμοποιήστε τη μορφή MAJOR.MINOR.PATCH
Icon not foundΗ διαδρομή του εικονιδίου δεν αναλύεταιΕπαληθεύστε ότι το αρχείο εικονιδίου υπάρχει στη συγκεκριμένη διαδρομή

Ζητήστε πρώιμη πρόσβαση

Συμπληρώστε το όνομά σας και ένα email ή έναν αριθμό τηλεφώνου. Θα σας στείλουμε πληροφορίες για την πρόσβαση στο Tajo.

αυτόματη αναγνώριση
AI Βοηθός

Γεια! Ρωτήστε με οτιδήποτε για την τεκμηρίωση.