Ga naar inhoud

Producten & Functies

Definieer wat je verkoopt. Maak producten met één of meer varianten, voeg herbruikbare functies toe voor op rechten gebaseerde toegangscontrole.

Proyecta Commerce werkt met drie concepten: producten, varianten en functies.

  • Product — wat je verkoopt (bijv. “Pro Plan”, “T-shirt”, “Strategy Call”)
  • Variant — een prijsniveau of configuratie van een product (bijv. “Pro Maandelijks $29”, “Pro Jaarlijks $290”, “T-shirt – Large”)
  • Functie — een herbruikbare rechtenschleutel die je app tijdens de uitvoering controleert (bijv. pro_features, unlimited_projects, api_access)

Een product kan meerdere varianten hebben. Een product heeft ook één of meer resources gekoppeld — meestal functies — die toegang verlenen wanneer een klant een abonnement neemt.

Twee manieren om te modelleren wat je verkoopt

Section titled “Twee manieren om te modelleren wat je verkoopt”

Commerce werkt samen met de rest van het platform, waardoor er twee vormen zijn voor “iets wat je verkoopt” — en Proyecta kiest de juiste voor jou:

  • Commerce-native producten — abonnementen, plannen, eenmalige upgrades en functies/rechten. Rechtstreeks gedefinieerd in Admin > Commerce > Products. Dit is het model dat de rest van deze pagina beschrijft.
  • Een contentgedreven storefrontcatalogus — goederen met foto’s, prijzen en beschrijvingen die een bedrijfseigenaar dagelijks beheert. Deze leven in het CMS als een verkoopbare collectie: elke invoer is het product. Wanneer een invoer wordt gepubliceerd, weeft Proyecta deze automatisch in Commerce als een echt, koopbaar product — het maakt het product en zijn variant met prijs voor je aan, en kopieert de prijs rechtstreeks vanuit het contentveld. De storefront toont de contentprijs en de checkout rekent de gekoppelde variant aan; omdat ze één bron delen, kunnen ze nooit uit elkaar lopen. Je beheert deze items als content (in de Admin van je app, in de builder of op je gepubliceerde site), niet onder Commerce > Products. Zie Contentbeheer.

Een gewone catalogus die geen kaartbetalingen verwerkt — een menu om te bladeren, of een winkel waarvan de “koop”-knop een WhatsApp-bestelkoppeling opent — is gewoon gewone content — een gewone cataloguscollectie, zonder Commerce-weving. Kaartcheckout is wat een collectie verkoopbaar maakt.

Klik in Admin > Commerce > Products op Create product (of vraag het de AI: "Create a Pro plan at $29/month and a Business plan at $99/month."). Elk product heeft het volgende nodig:

  • Een weergavenaam (bijv. “Pro”)
  • Ten minste één variant

Elke variant heeft zijn eigen prijsstelling:

Veld Opmerkingen
name Weergavelabel voor de variant (“Monthly”, “Annual”, “Large”)
currency Drieletterse ISO-code — USD, EUR, GBP, JPY, BRL, MXN, INR… (130+ ondersteund)
unit_amount Prijs in de kleinste valuta-eenheid (centen). 2900 = $29.00
recurring Optioneel — { interval: 'week' | 'month' | 'year' }. Weglaten voor eenmalige prijzen. Dagelijkse facturering wordt momenteel niet ondersteund.
is_default Geaccepteerd maar nog niet afgedwongen — standaard variantselectie is momenteel niet geïmplementeerd.
media Koppel afbeeldingen of video’s via CDN-bestands-ID (zie Bestanden)

Prijzen zijn onwijzigbaar. Zodra een variant is aangemaakt, kan de prijs niet worden gewijzigd — maak in plaats daarvan een nieuwe variant aan. Dit beschermt bestaande abonnees tegen onbedoelde prijswijzigingen.

Functies zijn de basisbouwsteen voor toegangscontrole. Maak een functie eenmalig aan in Admin > Commerce > Products en koppel deze vervolgens aan één of meer producten. Elke functie heeft een naam, een optionele beschrijving en een sleutel — kleine letters, cijfers en underscores (bijv. pro_features) — waartegen je app controleert.

Wanneer je een product aanmaakt, koppel je functies eraan via “resources”. Klanten die een abonnement nemen op een product krijgen toegang tot elke functie die eraan gekoppeld is.

Vervolgens gebruik je die sleutel in je app als toegangspoort:

const { hasAccess, isLoading } = useEntitlement('pro_features');
if (isLoading) return <Spinner />;
if (!hasAccess) return <UpgradePrompt />;
return <ProOnlyThing />;

De controle wordt server-side uitgevoerd tegen de ingelogde sessie, zodat deze niet vanuit de browser kan worden nagemaakt. Zie Commerce Integreren in Mijn App voor het volledige patroon.

Opmerking: Gebruik altijd de functiesleutel als toegangspoort — de slug afgeleid van de functienaam (bijv. pro_features) — niet het interne ID van de functie.

Zo beveilig je Pro-only pagina’s, API-endpoints of functies in je appcode.

SaaS-abonnementen

Create products: Free ($0/month), Pro ($29/month, $290/year), Business ($99/month, $990/year).
Attach a 'pro_features' feature to Pro and Business so I can gate access in my code.

Fysieke goederen

Create a T-shirt product with three variants: Small, Medium, Large at $25 each.

Digitale goederen

Create a course product with a single one-time variant at $149.

Donaties

Create a donation product with three variants: $25, $50, $100 — all one-time.

Proyecta Commerce houdt momenteel geen voorraad bij voor fysieke producten. Als je voorraadartikelen verkoopt, beheer dan de voorraadaantallen in de database van je app en controleer deze in je checkoutflow.

  • Aanpassing van checkoutvelden — verzamel aanvullende informatie van kopers
  • Betaal-wat-je-wilt-prijsstelling
  • Ingebouwde voorraadregistratie voor fysieke producten