Overview
Site Store Pro exposes dedicated webhook endpoints for each payment processor. All routes underwebhooks/* are CSRF-exempt via a wildcard exclusion in bootstrap/app.php — no token is required for incoming webhook requests.
Stripe Webhook
Endpoint:POST /webhooks/stripe
Registration
Go to Stripe Dashboard → Developers → Webhooks → Add endpoint and enter:Signature Verification
Stripe\Webhook::constructEvent() with the Stripe-Signature header and the secret above. Any request with an invalid or missing signature is rejected with a 400 response.
Handled Events
Paddle Webhook
Endpoint:POST /webhooks/paddle
Registration
Go to Paddle Dashboard → Developer Tools → Notifications → New Destination and enter:Signature Verification
- Parses the
Paddle-Signatureheader:ts=<timestamp>;h1=<hex> - Computes
HMAC-SHA256(key=PADDLE_WEBHOOK_SECRET, data="<ts>:<raw_payload>") - Compares the computed hash against the
h1value in the header - Rejects any event with a timestamp older than 5 minutes (replay attack protection)
Handled Events
Gateway Customer ID Columns
Whencustomer.created events are received, Site Store Pro automatically persists the gateway customer identifier to the users table.
These IDs are used for future subscription renewals and to link subsequent webhook events back to a Site Store Pro user.
Inventory Update Webhook
Endpoint:POST /webhooks/inventory-update
Use this endpoint to push inventory changes from an external warehouse management system (WMS) or ERP into Site Store Pro without requiring admin panel access.
Request Body
Responses
Secure this endpoint by restricting access at the network level (firewall/IP allowlist) or by adding a shared-secret header check in the extension override for your integration.
Adding a Custom Gateway
1
Copy the example gateway
2
Implement your processor class
Rename and implement
MyGatewayProcessor.php. Your class must implement PaymentProcessorInterface.3
Add credentials to .env
4
Insert a row into order_processors
Add a record with a
processor_id of 100 or higher. IDs 0–99 are reserved for built-in processors.5
Register in config/payment_processors.php
6
Register your gateway's JS type
Add a case for your processor ID that returns your gateway’s JS type string. This string is used to select the correct client-side SDK at checkout.
7
Set as active in Admin
Go to Admin → Checkout → Processors and set your custom gateway as the Primary processor.
Related
Stripe Configuration
Full Stripe setup including API keys and extension override.
Paddle Configuration
Full Paddle setup including Price IDs and dynamic pricing fallback.
Subscriptions
Subscription lifecycle webhooks and entitlement handling.
Payment Overview
Processor architecture, randomize mode, and the two-step checkout flow.
