Webhooks
posty.ro relayează evenimentele Stripe relevante pentru abonamentul tău. Verifică semnătura Stripe-Signature înainte să procesezi payload-ul.
Trimisă când utilizatorul finalizează checkout-ul Stripe pentru un plan plătit. Activează abonamentul în dashboard.
{
"type": "checkout.session.completed",
"data": { "object": {
"id": "cs_test_abc",
"customer": "cus_test_123",
"subscription": "sub_test_456",
"metadata": { "org_id": "org_01HXYZ" }
} }
}Abonament nou creat (după checkout sau via API). Folosește pentru a încărca planul în context.
{
"type": "customer.subscription.created",
"data": { "object": {
"id": "sub_test_456",
"status": "active",
"items": { "data": [{ "price": { "id": "price_pro_monthly" } }] }
} }
}Schimbare de plan, upgrade, downgrade sau modificare a perioadei. Sincronizează cu starea internă.
{
"type": "customer.subscription.updated",
"data": { "object": {
"id": "sub_test_456",
"status": "active",
"cancel_at_period_end": true
} }
}Abonament încheiat la sfârșitul perioadei. Cheile API încă funcționează până la final, apoi cad pe Free.
{
"type": "customer.subscription.deleted",
"data": { "object": { "id": "sub_test_456", "status": "canceled" } }
}Plată reușită pentru o factură. Trimite confirmarea de plată către client.
{
"type": "invoice.paid",
"data": { "object": {
"id": "in_test_789",
"amount_paid": 4900,
"currency": "eur",
"hosted_invoice_url": "https://invoice.stripe.com/..."
} }
}Plata nu a reușit. Începe fluxul de dunning și notifică clientul.
{
"type": "invoice.payment_failed",
"data": { "object": {
"id": "in_test_789",
"attempt_count": 1,
"next_payment_attempt": 1717804800
} }
}Schimbare la adresa de facturare, email sau TVA. Sincronizează cu profilul organizației.
{
"type": "customer.updated",
"data": { "object": {
"id": "cus_test_123",
"email": "billing@example.ro",
"address": { "country": "RO" }
} }
}