Referenca manifesta aplikacije
Datoteka manifesta stripe-app.json je osrednja konfiguracija vaše aplikacije Stripe App. Določa identiteto aplikacije, dovoljenja, poglede vmesnika, varnostne politike in vedenje po namestitvi.
Caution
Stanje: načrtovano, ne izdelano. Tajo nima aplikacije Stripe, zato danes ničesar iz tega razdelka ni mogoče namestiti. Identifikatorji aplikacije, naslovi URL in poverilnice na tej strani so ponazoritvena nadomestila, ne delujoče končne točke.
Celoten primer manifesta
{ "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": "Read 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.example.com", "https://api.brevo.com" ], "image-src": [ "https://cdn.example.com", "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.example.com/v1", "SYNC_INTERVAL_SECONDS": "300" }}Referenca sheme
Polja na najvišji ravni
| Polje | Tip | Obvezno | Opis |
|---|---|---|---|
id | string | Da | Enolični identifikator aplikacije v obrnjenem domenskem zapisu (oblika slug) |
version | string | Da | Niz semantične različice (na primer "1.2.0") |
name | string | Da | Prikazno ime na tržnici (največ 35 znakov) |
icon | string | Da | Relativna pot do datoteke z ikono aplikacije (PNG ali SVG velikosti 300x300) |
distribution_type | string | Da | "public" za tržnico ali "private" za interno rabo |
sandbox_install_compatible | boolean | Ne | Ali je aplikacijo mogoče namestiti v peskovniku oziroma testnem načinu |
stripe_api_access_type | string | Ne | Način dostopa do API: "oauth" ali "api_key" |
allowed_redirect_uris | string[] | Ne | Dovoljeni preusmeritveni naslovi OAuth za namestitveni potek |
permissions | PermissionRequest[] | Da | Polje zahtev za dovoljenja |
ui_extension | UIExtensionManifest | Ne | Konfiguracija razširitve vmesnika |
post_install_action | PostInstallAction | Ne | Dejanje po namestitvi aplikacije |
constants | object | Ne | Pari ključ-vrednost, dostopni v aplikaciji med izvajanjem |
id
Identifikator aplikacije je niz v obliki slug, običajno v obrnjenem domenskem zapisu:
"id": "com.tajo.brevo-integration"- Mora biti enolični med vsemi aplikacijami Stripe Apps
- Uporabljajte samo male črke, števke, vezaje in pike
- Po ustvarjanju aplikacije ga ni več mogoče spremeniti
- Določa naslov URL aplikacije na tržnici
version
Sledi semantičnemu določanju različic:
"version": "1.2.0"- MAJOR: nezdružljive spremembe ali obsežne nove funkcije
- MINOR: nove funkcije, združljive nazaj
- PATCH: odprava napak in manjše izboljšave
- Ob vsakem nalaganju jo je treba povečati
distribution_type
Določa, kdo lahko namesti vašo aplikacijo:
| Vrednost | Opis |
|---|---|
"public" | Na voljo vsem uporabnikom na tržnici Stripe App Marketplace |
"private" | Namestljiva samo z vašim lastnim računom Stripe |
stripe_api_access_type
Določa, kako se vaša aplikacija overi pri API-ju Stripe:
| Vrednost | Opis |
|---|---|
"oauth" | Uporablja potek OAuth 2.0 za preverjanje pristnosti (priporočeno za javne aplikacije) |
"api_key" | Uporablja omejene ključe API (primerno za zasebne aplikacije) |
PermissionRequest
Vsaka zahteva za dovoljenje navede določeno dovoljenje za API Stripe, ki ga vaša aplikacija potrebuje:
{ "permission": "customer_read", "purpose": "Read customer profiles to sync with Brevo contacts"}| Polje | Tip | Obvezno | Opis |
|---|---|---|---|
permission | string | Da | Identifikator dovoljenja (glejte referenco dovoljenj) |
purpose | string | Da | Človeku razumljiva razlaga, zakaj je to dovoljenje potrebno |
Smernice za polje purpose:
- Napišite jasne in konkretne razlage, ki jih trgovci razumejo
- Pojasnite, čemu je dovoljenje namenjeno, ne le kaj omogoča
- Opisi naj bodo jedrnati (en stavek)
- Izogibajte se tehničnemu žargonu
UIExtensionManifest
Konfigurira komponente vmesnika vaše aplikacije:
{ "ui_extension": { "views": [...], "content_security_policy": {...} }}| Polje | Tip | Obvezno | Opis |
|---|---|---|---|
views | ViewManifest[] | Da | Polje deklaracij pogledov |
content_security_policy | CSPRequest | Ne | Varnostna politika vsebine za zunanje vire |
ViewManifest
Vsak pogled preslika komponento React v izsek nadzorne plošče Stripe:
{ "viewport": "stripe.dashboard.customer.detail", "component": "CustomerDetailView"}| Polje | Tip | Obvezno | Opis |
|---|---|---|---|
viewport | string | Da | Mesto na nadzorni plošči, kjer se pogled izriše (glejte referenco izsekov) |
component | string | Da | Ime komponente React za izris (ujemati se mora z imenom izvožene komponente) |
Ena aplikacija lahko določi več pogledov za različne izseke:
"views": [ { "viewport": "stripe.dashboard.customer.detail", "component": "CustomerDetailView" }, { "viewport": "stripe.dashboard.payment.detail", "component": "PaymentDetailView" }, { "viewport": "stripe.dashboard.home.overview", "component": "OverviewView" }]CSPRequest
Varnostna politika vsebine določa, s katerimi zunanjimi domenami se lahko vaša aplikacija poveže:
{ "content_security_policy": { "connect-src": [ "https://api.example.com", "https://api.brevo.com" ], "image-src": [ "https://cdn.example.com" ], "purpose": "Connect to Tajo API for data sync and load images from CDN" }}| Polje | Tip | Obvezno | Opis |
|---|---|---|---|
connect-src | string[] | Ne | Domene, na katere lahko aplikacija pošilja omrežne zahteve |
image-src | string[] | Ne | Domene, s katerih lahko aplikacija nalaga slike |
purpose | string | Da | Razlaga, zakaj so te zunanje povezave potrebne |
Caution
Navedite samo domene, s katerimi se vaša aplikacija resnično mora povezati. Prevelik nabor vnosov CSP lahko sproži dodatno pregledovanje.
PostInstallAction
Konfigurira, kaj se zgodi takoj po tem, ko uporabnik namesti vašo aplikacijo:
{ "post_install_action": { "type": "onboarding" }}| Polje | Tip | Obvezno | Opis |
|---|---|---|---|
type | string | Da | Vrsta dejanja (glejte spodaj) |
url | string | Pogojno | Naslov URL za dejanja vrste external |
Vrste dejanj
| Vrsta | Vedenje |
|---|---|
"onboarding" | Odpre uvajalni pogled aplikacije na nadzorni plošči |
"settings" | Odpre pogled z nastavitvami aplikacije na nadzorni plošči |
"external" | Preusmeri uporabnika na zunanji naslov URL (zahteva polje url) |
Primeri:
// 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" }}Podrobne vzorce izvedbe najdete v vodniku po dejanjih po namestitvi.
Konstante
Določite statične pare ključ-vrednost, ki so v aplikaciji dostopni med izvajanjem:
{ "constants": { "API_BASE_URL": "https://api.example.com/v1", "SYNC_INTERVAL_SECONDS": "300", "MAX_BATCH_SIZE": "100" }}- Vse vrednosti morajo biti nizi
- Konstante se v aplikacijo vgradijo med gradnjo
- Konstante uporabite za konfiguracijo, ki se razlikuje med okolji
- Nikoli ne shranjujte skrivnosti ali ključev API kot konstant, uporabite Secret Store API
Do konstant v kodi aplikacije dostopate takole:
import { constants } from '@stripe/ui-extension-sdk/constants';
const apiUrl = constants.API_BASE_URL;Razširjeni manifest za razvoj
Med lokalnim razvojem so na voljo dodatna polja:
{ "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 }}Razdelek dev se med produkcijskimi gradnjami in nalaganjem aplikacije odstrani. Uporabljajte ga izključno za nastavitve, ki olajšajo lokalni razvoj.
Preverjanje
Pred nalaganjem preverite svoj manifest:
# Validate manifest syntax and schemastripe apps validate
# Check for common issuesstripe apps checkPogoste napake pri preverjanju:
| Napaka | Vzrok | Rešitev |
|---|---|---|
Invalid permission | Neznan identifikator dovoljenja | Preverite referenco dovoljenj |
Invalid viewport | Neznan identifikator izseka | Preverite referenco izsekov |
Missing purpose | Dovoljenje brez polja purpose | Vsakemu dovoljenju dodajte niz purpose |
Invalid version | Niz različice ni v obliki semver | Uporabite obliko MAJOR.MINOR.PATCH |
Icon not found | Pot do ikone se ne razreši | Preverite, ali datoteka z ikono obstaja na navedeni poti |