$id], a redirect-based provider: its * query params or POST body) — passed explicitly by the caller rather * than the driver reaching into the global request(), so this works * the same whether it's called from a synchronous HTTP request or an * async webhook job with no active request at all. * * $context is opaque to the driver, carried through untouched into * whichever Payment event this callback produces — see SupportsPay:: * pay()'s own $context param for the full reasoning. A driver that * needs the ORIGINAL context from the pay()/authorize() call (a * webhook's own payload carries none of its own) must have persisted * it itself when that call returned Pending — Payment provides no * storage for this. * * @param array $data * @param array $context */ public function handleCallback(string $reference, array $data, array $context = []): PaymentResult; }