pay() promise only tells your UI what happened; it doesn’t prove anything to your server.
The flow
1
Your page asks
Your page calls
pay, request or createLink with a reference, such as your order ID.2
Zend records it
Zend records the payment from its own records. For
pay, it checks the payer, recipient and amount against what your app asked for.3
Zend tells your server
Zend sends a signed
payment.completed (or link.claimed) webhook with your reference.4
Your server credits
Your server verifies the signature, dedupes on the event
id, and credits the order.Look up a payment
If you need to check a reference directly, for example when a user says they paid:Catching up after downtime
Deliveries retry for about a day. If your server was down longer,GET /apps/server/events returns the last 100 events with delivered_at. See Webhooks.