25: Integraties

De meeste apps communiceren uiteindelijk met iets buiten zichzelf: een chatservice, een kalender, een boekhoudbackend, een kaartterminal, een betalingsverwerker. Phlo levert twee families hiervoor, beide in de runtime, zodat er geen SDK hoeft te worden toegevoegd en geen aparte client hoeft te worden aangesloten. Connectors zijn dunne, uniforme wrappers rond JSON REST API's; de betalingsresources omhullen Stripe en SumUp.

25.1: Connectoren

Een connector is een kleine klasse bovenop een derde-partij REST API. Elke connector breidt Connector uit, leest zijn eigen sectie met inloggegevens en retourneert dezelfde resultaatstructuur, zodat het aanroepen van Slack eruitziet als het aanroepen van Shopify.

$slack = Slack::make()
$res = $slack->send('#general', 'Deploy finished')
if ($res->ok) log('sent') else log($res->error)

make() laadt de inloggegevens van de connector uit de sectie in data/creds.ini (Slack leest [Slack], Shopify leest [Shopify], enzovoort). Elke aanroep retourneert een genormaliseerd object, dus je takkeert op ->ok en leest ->data in plaats van een ander foutformaat per service te parseren:

obj(ok: true,  status: 200, data: {...})   // success
obj(ok: false, status: 401, error: '...')  // failure

Onder de motorkap beheert Connector de aanvraagwerkwoorden (get/post/put/patch/del/form), paginering (paginate()) en auth-headers. Elke connector biedt ook een static fields credential schema, zodat een instellingen scherm of het CMS het kan configureren zonder hard-coding.

Beschikbare connectors

Groep Connectors
Messaging Slack, Telegram, Twilio, MessageBird, Resend
Cloud GoogleCalendar, GoogleSheets, MicrosoftGraph
Finance ExactOnline, Moneybird, EBoekhouden
Commerce Lightspeed, Shopify

Diensten die authenticeren met OAuth2 (Google, Exact) breiden OAuthConnector uit in plaats van Connector. Het houdt een automatisch ververste bearer token in een TokenStore (opgeslagen onder data/tokens/, ververst onder een exclusieve lock), zodat je code gewoon ->events(...) aanroept en de token-infrastructuur onzichtbaar blijft.

Per-connector methodenlijsten leven in de Handleiding onder connectors. Het wordt gegenereerd uit de resourcebestanden, zodat het nooit afwijkt van de code.

25.2: Betalingen

Stripe

De Stripe resource is een dunne laag bovenop de officiële stripe/stripe-php SDK (voeg deze toe met Composer). Roep Stripe::boot() eenmaal aan met je geheime sleutel, en gebruik vervolgens de statische helpers:

Stripe::boot(%creds->Stripe)
$session = Stripe::checkout([
	'mode' => 'subscription',
	'line_items' => [['price' => 'price_123', 'quantity' => 1]],
	'success_url' => 'https://example.com/done',
	'cancel_url' => 'https://example.com/pricing',
])
location($session->url)

checkout() maakt een Checkout Session aan, portal($customerId, $returnUrl) opent het Billing Portal, en verifyWebhook($payload, $sigHeader, $secret) valideert een binnenkomende gebeurtenis voordat je erop handelt. customer, createCustomer, subscription, subscriptions, product en price dekken de rest van het gebruikelijke oppervlak.

SumUp

SumUp verwerkt kaartbetalingen met aanwezigheid op een gekoppelde SumUp Solo lezer via de Cloud API. Het is een connector (SumUp::make(), [SumUp] inloggegevens), dus het retourneert hetzelfde obj(ok, ...) resultaat:

$res = SumUp::make()->createReaderCheckout(1250, 'EUR', description: 'Table 4')

createReaderCheckout($amountMinor, $currency, ...) duwt een checkout naar de reader (het bedrag is in kleinere eenheden, dus 1250 is €12,50). transaction() en transactions() kijken het resultaat op, en terminateReaderCheckout() annuleert een lopende checkout.

We gebruiken essentiële cookies om deze site te laten werken. Met uw toestemming gebruiken we ook analytics om de site te verbeteren.