@mohasinac/appkit 4.41.16 → 4.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +1 -1
  2. package/dist/_internal/server/features/checkout/actions.d.ts +16 -14
  3. package/dist/_internal/server/features/checkout/actions.js +145 -97
  4. package/dist/_internal/server/features/checkout/bundle-expansion.d.ts +1 -1
  5. package/dist/_internal/server/features/checkout/index.d.ts +1 -1
  6. package/dist/_internal/server/features/checkout/index.js +1 -1
  7. package/dist/_internal/server/features/checkout/locked-lines.js +1 -1
  8. package/dist/_internal/server/features/checkout/source-context.js +2 -2
  9. package/dist/_internal/server/features/maintenance/analyze.js +1 -1
  10. package/dist/_internal/server/features/refunds/actions.d.ts +4 -4
  11. package/dist/_internal/server/features/refunds/actions.js +9 -8
  12. package/dist/_internal/server/functions/scheduled.d.ts +1 -2
  13. package/dist/_internal/server/functions/scheduled.js +1 -9
  14. package/dist/_internal/server/jobs/core/index.d.ts +0 -1
  15. package/dist/_internal/server/jobs/core/index.js +0 -1
  16. package/dist/_internal/server/jobs/handlers/index.d.ts +0 -1
  17. package/dist/_internal/server/jobs/handlers/index.js +0 -1
  18. package/dist/_internal/shared/actions/action-registry.js +2 -2
  19. package/dist/_internal/shared/checkout/order-math.d.ts +1 -1
  20. package/dist/_internal/shared/checkout/order-math.js +1 -1
  21. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +2 -2
  22. package/dist/_internal/shared/features/blog/schema.d.ts +4 -4
  23. package/dist/_internal/shared/features/cart/schema.d.ts +6 -6
  24. package/dist/_internal/shared/features/orders/refund-copy.d.ts +1 -1
  25. package/dist/_internal/shared/features/orders/refund-copy.js +1 -1
  26. package/dist/_internal/shared/features/orders/schema.d.ts +5 -5
  27. package/dist/_internal/shared/features/orders/schema.js +1 -1
  28. package/dist/_internal/shared/features/products/schema.d.ts +2 -2
  29. package/dist/_internal/shared/features/promotions/schema.d.ts +4 -4
  30. package/dist/_internal/shared/features/reviews/schema.d.ts +1 -1
  31. package/dist/client.d.ts +1 -1
  32. package/dist/client.js +1 -1
  33. package/dist/configs/next.js +2 -2
  34. package/dist/constants/field-names.d.ts +1 -1
  35. package/dist/constants/field-names.js +1 -1
  36. package/dist/contracts/index.d.ts +0 -2
  37. package/dist/contracts/index.js +0 -1
  38. package/dist/contracts/payment.d.ts +13 -2
  39. package/dist/contracts/payment.js +2 -2
  40. package/dist/core/integration-keys.d.ts +7 -3
  41. package/dist/core/integration-keys.js +13 -7
  42. package/dist/core/money.d.ts +11 -0
  43. package/dist/core/money.js +15 -0
  44. package/dist/errors/index.d.ts +1 -1
  45. package/dist/errors/index.js +1 -1
  46. package/dist/errors/messages.d.ts +1 -0
  47. package/dist/errors/messages.js +1 -0
  48. package/dist/errors/{razorpay-unreachable.d.ts → payment-provider-unreachable.d.ts} +1 -1
  49. package/dist/errors/{razorpay-unreachable.js → payment-provider-unreachable.js} +1 -1
  50. package/dist/features/addresses/schemas/address-form.d.ts +20 -20
  51. package/dist/features/addresses/schemas/index.d.ts +2 -2
  52. package/dist/features/admin/components/AdminSiteSettingsView.js +32 -16
  53. package/dist/features/admin/constants/site-settings-tabs.d.ts +1 -1
  54. package/dist/features/admin/schemas/admin-ops-forms.d.ts +10 -10
  55. package/dist/features/admin/schemas/admin-user-form.d.ts +2 -2
  56. package/dist/features/admin/schemas/firestore.d.ts +17 -8
  57. package/dist/features/admin/schemas/firestore.js +1 -1
  58. package/dist/features/admin/schemas/nav-item-form.d.ts +2 -2
  59. package/dist/features/auctions/schemas/index.d.ts +2 -2
  60. package/dist/features/auth/schemas/index.d.ts +2 -2
  61. package/dist/features/before-after/schemas/index.d.ts +2 -2
  62. package/dist/features/blog/actions/blog-actions.d.ts +4 -4
  63. package/dist/features/blog/schemas/blog-form.d.ts +2 -2
  64. package/dist/features/blog/schemas/index.d.ts +4 -4
  65. package/dist/features/cart/schemas/index.d.ts +3 -3
  66. package/dist/features/catalogue/schemas/validation.d.ts +4 -4
  67. package/dist/features/categories/schemas/index.d.ts +2 -2
  68. package/dist/features/checkout/index.d.ts +0 -4
  69. package/dist/features/checkout/index.js +0 -3
  70. package/dist/features/checkout/types/index.d.ts +0 -25
  71. package/dist/features/checkout/types/index.js +1 -2
  72. package/dist/features/collections/schemas/index.d.ts +2 -2
  73. package/dist/features/consultation/schemas/index.d.ts +4 -4
  74. package/dist/features/corporate/schemas/index.d.ts +2 -2
  75. package/dist/features/events/schemas/index.d.ts +4 -4
  76. package/dist/features/grouped/schemas/index.d.ts +2 -2
  77. package/dist/features/homepage/schemas/index.d.ts +2 -2
  78. package/dist/features/lottery/schemas/zod.d.ts +4 -4
  79. package/dist/features/loyalty/schemas/index.d.ts +6 -6
  80. package/dist/features/orders/components/OrderPaymentSummary.d.ts +1 -1
  81. package/dist/features/orders/components/OrderPaymentSummary.js +5 -5
  82. package/dist/features/orders/components/RefundHistoryTable.js +1 -1
  83. package/dist/features/orders/repository/orders.repository.d.ts +10 -1
  84. package/dist/features/orders/repository/orders.repository.js +17 -1
  85. package/dist/features/orders/schemas/firestore.d.ts +11 -12
  86. package/dist/features/orders/schemas/firestore.js +0 -1
  87. package/dist/features/orders/schemas/index.d.ts +48 -48
  88. package/dist/features/orders/schemas/index.js +1 -1
  89. package/dist/features/orders/types/index.d.ts +1 -3
  90. package/dist/features/orders/types/index.js +1 -2
  91. package/dist/features/payments/manifest.js +1 -1
  92. package/dist/features/payments/repository/payout.repository.d.ts +1 -4
  93. package/dist/features/payments/repository/payout.repository.js +0 -29
  94. package/dist/features/payments/schemas/firestore.d.ts +8 -15
  95. package/dist/features/payments/schemas/firestore.js +7 -5
  96. package/dist/features/payments/schemas/index.d.ts +52 -125
  97. package/dist/features/payments/schemas/index.js +0 -58
  98. package/dist/features/payments/types/index.d.ts +2 -4
  99. package/dist/features/payments/types/index.js +1 -2
  100. package/dist/features/products/schemas/index.d.ts +14 -14
  101. package/dist/features/products/schemas/product-features.validators.d.ts +10 -10
  102. package/dist/features/promotions/schemas/index.d.ts +20 -20
  103. package/dist/features/reviews/schemas/index.d.ts +8 -8
  104. package/dist/features/scams/schemas/index.d.ts +10 -10
  105. package/dist/features/search/action-index/settings-entries.js +4 -4
  106. package/dist/features/seller/schemas/index.d.ts +12 -12
  107. package/dist/features/seller/schemas/order-forms.d.ts +4 -4
  108. package/dist/features/shipments/schemas/validation.d.ts +28 -28
  109. package/dist/features/store-extensions/schemas/payout-method-form.d.ts +50 -50
  110. package/dist/features/store-extensions/schemas/report-create-form.d.ts +2 -2
  111. package/dist/features/store-extensions/schemas/shipping-config-form.d.ts +10 -10
  112. package/dist/features/support/schemas/index.d.ts +14 -14
  113. package/dist/features/tester/actions/checklist-item-actions.d.ts +4 -4
  114. package/dist/features/tester/schemas/checklist-item-form.d.ts +2 -2
  115. package/dist/features/tester/seed-data/_money-flows.js +145 -0
  116. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +21 -2
  117. package/dist/features/tester/seed-data/authored/admin__site-system.js +38 -0
  118. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +10 -10
  119. package/dist/features/tester/seed-data/authored/buying__offers.js +11 -10
  120. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +1 -1
  121. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +24 -12
  122. package/dist/features/wishlist/schemas/index.d.ts +2 -2
  123. package/dist/index.d.ts +6 -28
  124. package/dist/index.js +8 -51
  125. package/dist/jobs.d.ts +1 -1
  126. package/dist/jobs.js +1 -1
  127. package/dist/providers/payment-phonepe/index.d.ts +117 -0
  128. package/dist/providers/payment-phonepe/index.js +221 -0
  129. package/dist/providers.d.ts +3 -2
  130. package/dist/providers.js +3 -2
  131. package/dist/schemas/registry.d.ts +163 -2623
  132. package/dist/schemas/registry.js +1 -6
  133. package/dist/seed/faq-seed-data.js +5 -5
  134. package/dist/seed/payouts-seed-data.js +3 -3
  135. package/dist/seed/site-settings-seed-data.js +7 -4
  136. package/dist/server-entry.d.ts +1 -2
  137. package/dist/server-entry.js +1 -3
  138. package/dist/server.d.ts +3 -9
  139. package/dist/server.js +5 -23
  140. package/dist/validation/schemas.d.ts +2 -2
  141. package/package.json +5 -4
  142. package/dist/_internal/server/features/payments/actions.d.ts +0 -30
  143. package/dist/_internal/server/features/payments/actions.js +0 -45
  144. package/dist/_internal/server/features/payments/data.d.ts +0 -13
  145. package/dist/_internal/server/features/payments/data.js +0 -20
  146. package/dist/_internal/server/features/payments/index.d.ts +0 -3
  147. package/dist/_internal/server/features/payments/index.js +0 -3
  148. package/dist/_internal/server/jobs/core/payoutBatch.d.ts +0 -2
  149. package/dist/_internal/server/jobs/core/payoutBatch.js +0 -120
  150. package/dist/_internal/server/jobs/handlers/payoutBatch.d.ts +0 -2
  151. package/dist/_internal/server/jobs/handlers/payoutBatch.js +0 -2
  152. package/dist/_internal/shared/features/payments/config.d.ts +0 -3
  153. package/dist/_internal/shared/features/payments/config.js +0 -3
  154. package/dist/contracts/client-payment-gateway.d.ts +0 -64
  155. package/dist/contracts/client-payment-gateway.js +0 -25
  156. package/dist/features/checkout/hooks/useCheckout.d.ts +0 -9
  157. package/dist/features/checkout/hooks/useCheckout.js +0 -24
  158. package/dist/features/checkout/hooks/useCheckoutApi.d.ts +0 -72
  159. package/dist/features/checkout/hooks/useCheckoutApi.js +0 -47
  160. package/dist/features/checkout/hooks/usePaymentCheckout.d.ts +0 -77
  161. package/dist/features/checkout/hooks/usePaymentCheckout.js +0 -192
  162. package/dist/providers/payment-razorpay/index.d.ts +0 -115
  163. package/dist/providers/payment-razorpay/index.js +0 -208
  164. package/dist/schemas/webhooks/razorpay.d.ts +0 -2634
  165. package/dist/schemas/webhooks/razorpay.js +0 -104
@@ -152,7 +152,7 @@ export async function analyzeLogs(opts) {
152
152
  recommendations.push(`VALIDATION_FAILED concentrated on ${validationFailures[0].route} — fix client request shape or extend the route's Zod schema.`);
153
153
  }
154
154
  if (topCodes.find((c) => c.code.startsWith("PAYMENT_ROLLBACK"))) {
155
- recommendations.push("PAYMENT_ROLLBACK_* observed — verify Razorpay webhook health and check the refund-rollback path.");
155
+ recommendations.push("PAYMENT_ROLLBACK_* observed — verify PhonePe webhook health and check the refund-rollback path.");
156
156
  }
157
157
  if (topRoutes.find((r) => r.route === CLIENT_ERROR_ENDPOINTS.REPORT &&
158
158
  topCodes[0]?.code === "NETWORK_ERROR")) {
@@ -21,15 +21,15 @@ export type ProcessRefundInput = {
21
21
  /** uid of the user processing the refund (admin / seller). */
22
22
  refundedBy: string;
23
23
  } & ({
24
- method: "razorpay";
25
- /** Razorpay paymentId from the order (order.paymentId). */
26
- razorpayPaymentId: string;
24
+ method: "phonepe";
25
+ /** The order's PhonePe merchantOrderId (order.paymentId) — PhonePe refunds are order-keyed, never payment-keyed. */
26
+ phonepeOrderId: string;
27
27
  manualTransactionId?: never;
28
28
  proofDocumentUrl?: never;
29
29
  proofDocumentMimeType?: never;
30
30
  } | {
31
31
  method: "manual";
32
- razorpayPaymentId?: never;
32
+ phonepeOrderId?: never;
33
33
  manualTransactionId?: string;
34
34
  proofDocumentUrl?: string;
35
35
  proofDocumentMimeType?: string;
@@ -4,8 +4,9 @@ import { wrapAction } from "@mohasinac/appkit/server";
4
4
  * processRefundAction — append a refund event to an order.
5
5
  *
6
6
  * Supports two paths:
7
- * - Razorpay: calls the payment provider's `refund()` method, then records
8
- * the razorpayRefundId on the event.
7
+ * - PhonePe: calls the payment provider's `refund()` method — order-keyed
8
+ * via `order.paymentId` (PhonePe's `merchantOrderId`), never a payment
9
+ * id — then records the phonepeRefundId on the event.
9
10
  * - Manual: no payment-provider call; records manualTransactionId + optional
10
11
  * proof document URL.
11
12
  *
@@ -17,7 +18,7 @@ import { wrapAction } from "@mohasinac/appkit/server";
17
18
  import { randomUUID } from "crypto";
18
19
  import { getProviders } from "../../../../contracts/registry";
19
20
  import { normalizeError } from "../../../../errors/normalize";
20
- import { rupeesToPaise } from "../../../../providers/payment-razorpay/index";
21
+ import { rupeesToPaise } from "../../../../core/money";
21
22
  import { orderRepository } from "../../../..";
22
23
  import { ORDER_FIELDS } from "../../../../constants/field-names";
23
24
  import { NotFoundError, ValidationError } from "../../../../errors";
@@ -119,13 +120,13 @@ export async function processRefundAction(input) {
119
120
  await assertDigitalCodesNotClaimed(input.orderId, digitalCodeItems);
120
121
  const refundId = randomUUID();
121
122
  const now = new Date();
122
- let razorpayRefundId;
123
- if (input.method === "razorpay") {
123
+ let phonepeRefundId;
124
+ if (input.method === "phonepe") {
124
125
  const payment = getProviders().payment;
125
126
  if (!payment)
126
127
  throw new ValidationError("Payment provider not configured");
127
- const result = await payment.refund(input.razorpayPaymentId, rupeesToPaise(input.amount));
128
- razorpayRefundId = result.id;
128
+ const result = await payment.refund(input.phonepeOrderId, rupeesToPaise(input.amount));
129
+ phonepeRefundId = result.id;
129
130
  }
130
131
  const isFull = input.amount >= order.totalPrice;
131
132
  const event = {
@@ -143,7 +144,7 @@ export async function processRefundAction(input) {
143
144
  : RETURN_REASON_LABEL[input.reasonCode],
144
145
  refundedAt: now,
145
146
  refundedBy: input.refundedBy,
146
- ...(razorpayRefundId ? { razorpayRefundId } : {}),
147
+ ...(phonepeRefundId ? { phonepeRefundId } : {}),
147
148
  ...(input.method === "manual" && input.manualTransactionId
148
149
  ? { manualTransactionId: input.manualTransactionId }
149
150
  : {}),
@@ -13,7 +13,6 @@ export declare const dailyStatusDigest: import("./types").ScheduledFunctionDefin
13
13
  export declare const dailyDataCleanup: import("./types").ScheduledFunctionDefinition;
14
14
  export declare const countersReconcile: import("./types").ScheduledFunctionDefinition;
15
15
  export declare const positionsReconcile: import("./types").ScheduledFunctionDefinition;
16
- export declare const payoutBatch: import("./types").ScheduledFunctionDefinition;
17
16
  export declare const cartPrune: import("./types").ScheduledFunctionDefinition;
18
17
  export declare const notificationPrune: import("./types").ScheduledFunctionDefinition;
19
18
  export declare const weeklyPayoutEligibility: import("./types").ScheduledFunctionDefinition;
@@ -26,4 +25,4 @@ export declare const prizeDrawExpiryReveal: import("./types").ScheduledFunctionD
26
25
  export declare const bundleStockSync: import("./types").ScheduledFunctionDefinition;
27
26
  export declare const emiInstallmentReminder: import("./types").ScheduledFunctionDefinition;
28
27
  export declare const catalogueImageStalenessReminder: import("./types").ScheduledFunctionDefinition;
29
- export declare const SCHEDULED_FUNCTIONS: readonly [import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition];
28
+ export declare const SCHEDULED_FUNCTIONS: readonly [import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition, import("./types").ScheduledFunctionDefinition];
@@ -1,6 +1,6 @@
1
1
  // Scheduled function definitions (Cloud Scheduler triggers).
2
2
  // Cron syntax accepts both Firebase shorthand and standard cron expressions.
3
- import { auctionSettlementHandler, autoPayoutEligibilityHandler, bundleStockSyncHandler, cartPruneHandler, cleanupRtdbEventsHandler, countersReconcileHandler, couponExpiryHandler, dailyDataCleanupHandler, draftPruneHandler, emiInstallmentReminderHandler, catalogueImageStalenessReminderHandler, mediaTmpCleanupHandler, notificationPruneHandler, offerExpiryHandler, payoutBatchHandler, paymentWindowTimeoutHandler, hardBanReinstatementHandler, paymentReviewAutoApproveHandler, pendingOrderTimeoutHandler, positionsReconcileHandler, prizeDrawExpiryRevealHandler, productStatsSyncHandler, revenueRollupHandler, pageViewRollupHandler, pageViewPruneHandler, dailyStatusDigestHandler, weeklyPayoutEligibilityHandler, testerSandboxCleanupHandler, } from "../jobs/handlers";
3
+ import { auctionSettlementHandler, autoPayoutEligibilityHandler, bundleStockSyncHandler, cartPruneHandler, cleanupRtdbEventsHandler, countersReconcileHandler, couponExpiryHandler, dailyDataCleanupHandler, draftPruneHandler, emiInstallmentReminderHandler, catalogueImageStalenessReminderHandler, mediaTmpCleanupHandler, notificationPruneHandler, offerExpiryHandler, paymentWindowTimeoutHandler, hardBanReinstatementHandler, paymentReviewAutoApproveHandler, pendingOrderTimeoutHandler, positionsReconcileHandler, prizeDrawExpiryRevealHandler, productStatsSyncHandler, revenueRollupHandler, pageViewRollupHandler, pageViewPruneHandler, dailyStatusDigestHandler, weeklyPayoutEligibilityHandler, testerSandboxCleanupHandler, } from "../jobs/handlers";
4
4
  import { defineFunction } from "./define";
5
5
  const REGION = "asia-south1";
6
6
  const EVERY_5_MIN = "every 5 minutes";
@@ -119,13 +119,6 @@ export const positionsReconcile = defineFunction({
119
119
  handler: positionsReconcileHandler,
120
120
  options: { region: REGION, timeoutSeconds: 120, memory: "256MiB", maxInstances: 1 },
121
121
  });
122
- export const payoutBatch = defineFunction({
123
- name: "payoutBatch",
124
- description: "Dispatch the day's payout batch (daily 06:00 UTC).",
125
- trigger: { kind: "schedule", cron: "0 6 * * *", timeZone: "UTC" },
126
- handler: payoutBatchHandler,
127
- options: { region: REGION, timeoutSeconds: 540, memory: "256MiB", maxInstances: 1 },
128
- });
129
122
  export const cartPrune = defineFunction({
130
123
  name: "cartPrune",
131
124
  description: "Prune abandoned carts (weekly Sunday 04:00 UTC).",
@@ -233,7 +226,6 @@ export const SCHEDULED_FUNCTIONS = [
233
226
  dailyDataCleanup,
234
227
  countersReconcile,
235
228
  positionsReconcile,
236
- payoutBatch,
237
229
  cartPrune,
238
230
  notificationPrune,
239
231
  weeklyPayoutEligibility,
@@ -20,7 +20,6 @@ export { runMediaTmpCleanup } from "./mediaTmpCleanup";
20
20
  export { runPendingOrderTimeout } from "./pendingOrderTimeout";
21
21
  export { runCountersReconcile } from "./countersReconcile";
22
22
  export { runBundleStockSync } from "./bundleStockSync";
23
- export { runPayoutBatch } from "./payoutBatch";
24
23
  export { runAutoPayoutEligibility } from "./autoPayoutEligibility";
25
24
  export { runProductStatsSync } from "./productStatsSync";
26
25
  export { runPositionsReconcile } from "./positionsReconcile";
@@ -21,7 +21,6 @@ export { runMediaTmpCleanup } from "./mediaTmpCleanup";
21
21
  export { runPendingOrderTimeout } from "./pendingOrderTimeout";
22
22
  export { runCountersReconcile } from "./countersReconcile";
23
23
  export { runBundleStockSync } from "./bundleStockSync";
24
- export { runPayoutBatch } from "./payoutBatch";
25
24
  export { runAutoPayoutEligibility } from "./autoPayoutEligibility";
26
25
  export { runProductStatsSync } from "./productStatsSync";
27
26
  export { runPositionsReconcile } from "./positionsReconcile";
@@ -32,7 +32,6 @@ export { pageViewRollupHandler } from "./pageViewRollup";
32
32
  export { pageViewPruneHandler } from "./pageViewPrune";
33
33
  export { dailyStatusDigestHandler } from "./dailyStatusDigest";
34
34
  export { positionsReconcileHandler } from "./positionsReconcile";
35
- export { payoutBatchHandler } from "./payoutBatch";
36
35
  export { weeklyPayoutEligibilityHandler } from "./weeklyPayoutEligibility";
37
36
  export { onCategoryWriteHandler } from "./onCategoryWrite";
38
37
  export { onProductWriteHandler } from "./onProductWrite";
@@ -32,7 +32,6 @@ export { pageViewRollupHandler } from "./pageViewRollup";
32
32
  export { pageViewPruneHandler } from "./pageViewPrune";
33
33
  export { dailyStatusDigestHandler } from "./dailyStatusDigest";
34
34
  export { positionsReconcileHandler } from "./positionsReconcile";
35
- export { payoutBatchHandler } from "./payoutBatch";
36
35
  export { weeklyPayoutEligibilityHandler } from "./weeklyPayoutEligibility";
37
36
  export { onCategoryWriteHandler } from "./onCategoryWrite";
38
37
  export { onProductWriteHandler } from "./onProductWrite";
@@ -2558,8 +2558,8 @@ export const ACTIONS = {
2558
2558
  "pay-online": {
2559
2559
  iconKey: "cart",
2560
2560
  id: "checkout.pay-online",
2561
- label: "Pay Online (Razorpay)",
2562
- description: "Initiate an online payment via Razorpay UPI/Card/NetBanking.",
2561
+ label: "Pay Online (PhonePe)",
2562
+ description: "Initiate an online payment via PhonePe UPI/Card/NetBanking.",
2563
2563
  kind: "primary",
2564
2564
  },
2565
2565
  "pay-cod": {
@@ -56,7 +56,7 @@ export interface PricedCartLine {
56
56
  * 🛑 Do not hand-roll this rule at a call site. It has been re-derived by hand
57
57
  * six times, and the two copies that lived in the consumer repo
58
58
  * (`src/app/api/payment/create-order/route.ts`) each reproduced the bundle
59
- * branch while silently omitting case 1 — so Razorpay captured the LIST price
59
+ * branch while silently omitting case 1 — so the gateway captured the LIST price
60
60
  * for an accepted offer while the cart displayed the negotiated one. Call
61
61
  * `lineTotalFor` and let this function stay the only definition.
62
62
  */
@@ -28,7 +28,7 @@ import { calculateGst } from "../fees/calculator";
28
28
  * 🛑 Do not hand-roll this rule at a call site. It has been re-derived by hand
29
29
  * six times, and the two copies that lived in the consumer repo
30
30
  * (`src/app/api/payment/create-order/route.ts`) each reproduced the bundle
31
- * branch while silently omitting case 1 — so Razorpay captured the LIST price
31
+ * branch while silently omitting case 1 — so the gateway captured the LIST price
32
32
  * for an accepted offer while the cart displayed the negotiated one. Call
33
33
  * `lineTotalFor` and let this function stay the only definition.
34
34
  */
@@ -6,7 +6,7 @@ import { PRIZE_DRAW_MAX_REVEALS_PER_ORDER } from "./_limits";
6
6
  * checkout — instant-mode winner assignment triggers on the order's payment
7
7
  * actually being confirmed, which cod/cash/emi don't guarantee happens (or
8
8
  * happens promptly). Only "upi_manual" (bank/UPI transfer, confirmed later by
9
- * seller/admin) and "online" (Razorpay, confirms near-instantly) are allowed;
9
+ * seller/admin) and "online" (PhonePe, confirms near-instantly) are allowed;
10
10
  * "admin_bypass" stays usable for QA regardless.
11
11
  */
12
12
  const PRIZE_DRAW_BLOCKED_PAYMENT_METHODS = ["cod", "cash", "emi"];
@@ -47,7 +47,7 @@ export const prizeDrawRule = {
47
47
  if (paymentMethod && PRIZE_DRAW_BLOCKED_PAYMENT_METHODS.includes(paymentMethod)) {
48
48
  const hasPrizeDraw = pairs.some((p) => p.product.listingType === "prize-draw");
49
49
  if (hasPrizeDraw) {
50
- throw Object.assign(new ValidationError("Prize-draw entries can only be paid by manual bank/UPI transfer or Razorpay — cash on delivery and EMI are not available for this listing type."), { code: "PRIZE_DRAW_PAYMENT_METHOD_BLOCKED" });
50
+ throw Object.assign(new ValidationError("Prize-draw entries can only be paid by manual bank/UPI transfer or PhonePe — cash on delivery and EMI are not available for this listing type."), { code: "PRIZE_DRAW_PAYMENT_METHOD_BLOCKED" });
51
51
  }
52
52
  }
53
53
  for (const { item, product } of pairs) {
@@ -13,7 +13,7 @@ export declare const blogPostInputSchema: z.ZodObject<{
13
13
  metaTitle: z.ZodOptional<z.ZodString>;
14
14
  metaDescription: z.ZodOptional<z.ZodString>;
15
15
  }, "strip", z.ZodTypeAny, {
16
- status: "draft" | "published";
16
+ status: "published" | "draft";
17
17
  title: string;
18
18
  content: string;
19
19
  category: string;
@@ -30,7 +30,7 @@ export declare const blogPostInputSchema: z.ZodObject<{
30
30
  content: string;
31
31
  category: string;
32
32
  slug: string;
33
- status?: "draft" | "published" | undefined;
33
+ status?: "published" | "draft" | undefined;
34
34
  youtubeId?: string | undefined;
35
35
  tags?: string[] | undefined;
36
36
  isFeatured?: boolean | undefined;
@@ -53,7 +53,7 @@ export declare const blogPostUpdateSchema: z.ZodObject<Omit<{
53
53
  metaTitle: z.ZodOptional<z.ZodOptional<z.ZodString>>;
54
54
  metaDescription: z.ZodOptional<z.ZodOptional<z.ZodString>>;
55
55
  }, "slug">, "strip", z.ZodTypeAny, {
56
- status?: "draft" | "published" | undefined;
56
+ status?: "published" | "draft" | undefined;
57
57
  title?: string | undefined;
58
58
  content?: string | undefined;
59
59
  category?: string | undefined;
@@ -65,7 +65,7 @@ export declare const blogPostUpdateSchema: z.ZodObject<Omit<{
65
65
  metaTitle?: string | undefined;
66
66
  metaDescription?: string | undefined;
67
67
  }, {
68
- status?: "draft" | "published" | undefined;
68
+ status?: "published" | "draft" | undefined;
69
69
  title?: string | undefined;
70
70
  content?: string | undefined;
71
71
  category?: string | undefined;
@@ -14,10 +14,10 @@ export declare const addToCartSchema: z.ZodObject<{
14
14
  lockedPrice: z.ZodOptional<z.ZodNumber>;
15
15
  }, "strip", z.ZodTypeAny, {
16
16
  currency: string;
17
- storeId: string;
18
17
  price: number;
19
18
  listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
20
19
  storeName: string;
20
+ storeId: string;
21
21
  quantity: number;
22
22
  productId: string;
23
23
  productTitle: string;
@@ -26,9 +26,9 @@ export declare const addToCartSchema: z.ZodObject<{
26
26
  offerId?: string | undefined;
27
27
  lockedPrice?: number | undefined;
28
28
  }, {
29
- storeId: string;
30
29
  price: number;
31
30
  listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
31
+ storeId: string;
32
32
  productId: string;
33
33
  productTitle: string;
34
34
  currency?: string | undefined;
@@ -72,10 +72,10 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
72
72
  lockedPrice: z.ZodOptional<z.ZodNumber>;
73
73
  }, "strip", z.ZodTypeAny, {
74
74
  currency: string;
75
- storeId: string;
76
75
  price: number;
77
76
  listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
78
77
  storeName: string;
78
+ storeId: string;
79
79
  quantity: number;
80
80
  productId: string;
81
81
  productTitle: string;
@@ -84,9 +84,9 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
84
84
  offerId?: string | undefined;
85
85
  lockedPrice?: number | undefined;
86
86
  }, {
87
- storeId: string;
88
87
  price: number;
89
88
  listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
89
+ storeId: string;
90
90
  productId: string;
91
91
  productTitle: string;
92
92
  currency?: string | undefined;
@@ -100,10 +100,10 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
100
100
  }, "strip", z.ZodTypeAny, {
101
101
  guestItems: {
102
102
  currency: string;
103
- storeId: string;
104
103
  price: number;
105
104
  listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
106
105
  storeName: string;
106
+ storeId: string;
107
107
  quantity: number;
108
108
  productId: string;
109
109
  productTitle: string;
@@ -114,9 +114,9 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
114
114
  }[];
115
115
  }, {
116
116
  guestItems: {
117
- storeId: string;
118
117
  price: number;
119
118
  listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
119
+ storeId: string;
120
120
  productId: string;
121
121
  productTitle: string;
122
122
  currency?: string | undefined;
@@ -10,7 +10,7 @@ export declare const REFUND_COPY: {
10
10
  readonly badgeFull: "Full refund";
11
11
  readonly badgePartial: "Partial refund";
12
12
  readonly labelTxn: "Txn:";
13
- readonly labelRazorpay: "Razorpay:";
13
+ readonly labelPhonePe: "PhonePe:";
14
14
  readonly nonContestableBanner: "Disputes, RMA requests, and \"Item Not Received\" claims are no longer available for this order.";
15
15
  };
16
16
  readonly request: {
@@ -10,7 +10,7 @@ export const REFUND_COPY = {
10
10
  badgeFull: "Full refund",
11
11
  badgePartial: "Partial refund",
12
12
  labelTxn: "Txn:",
13
- labelRazorpay: "Razorpay:",
13
+ labelPhonePe: "PhonePe:",
14
14
  nonContestableBanner: 'Disputes, RMA requests, and "Item Not Received" claims are no longer available for this order.',
15
15
  },
16
16
  request: {
@@ -59,10 +59,10 @@ export declare const createOrderSchema: z.ZodObject<{
59
59
  country?: string | undefined;
60
60
  addressLine2?: string | undefined;
61
61
  }>;
62
- paymentMethod: z.ZodEnum<["razorpay", "cod", "upi"]>;
62
+ paymentMethod: z.ZodEnum<["phonepe", "cod", "upi"]>;
63
63
  couponCode: z.ZodOptional<z.ZodString>;
64
64
  }, "strip", z.ZodTypeAny, {
65
- paymentMethod: "upi" | "razorpay" | "cod";
65
+ paymentMethod: "cod" | "phonepe" | "upi";
66
66
  shippingAddress: {
67
67
  country: string;
68
68
  fullName: string;
@@ -80,7 +80,7 @@ export declare const createOrderSchema: z.ZodObject<{
80
80
  }[];
81
81
  couponCode?: string | undefined;
82
82
  }, {
83
- paymentMethod: "upi" | "razorpay" | "cod";
83
+ paymentMethod: "cod" | "phonepe" | "upi";
84
84
  shippingAddress: {
85
85
  fullName: string;
86
86
  phone: string;
@@ -105,13 +105,13 @@ export declare const updateOrderStatusSchema: z.ZodObject<{
105
105
  carrier: z.ZodOptional<z.ZodString>;
106
106
  note: z.ZodOptional<z.ZodString>;
107
107
  }, "strip", z.ZodTypeAny, {
108
- status: "cancelled" | "processing" | "refunded" | "delivered" | "shipped" | "return_requested";
108
+ status: "delivered" | "shipped" | "processing" | "return_requested" | "cancelled" | "refunded";
109
109
  orderId: string;
110
110
  note?: string | undefined;
111
111
  trackingNumber?: string | undefined;
112
112
  carrier?: string | undefined;
113
113
  }, {
114
- status: "cancelled" | "processing" | "refunded" | "delivered" | "shipped" | "return_requested";
114
+ status: "delivered" | "shipped" | "processing" | "return_requested" | "cancelled" | "refunded";
115
115
  orderId: string;
116
116
  note?: string | undefined;
117
117
  trackingNumber?: string | undefined;
@@ -38,7 +38,7 @@ export const createOrderSchema = z.object({
38
38
  price: z.number().min(0),
39
39
  })).min(1, "Order must have at least one item"),
40
40
  shippingAddress: addressSchema,
41
- paymentMethod: z.enum(["razorpay", "cod", "upi"]),
41
+ paymentMethod: z.enum(["phonepe", "cod", "upi"]),
42
42
  couponCode: z.string().optional(),
43
43
  });
44
44
  export const updateOrderStatusSchema = z.object({
@@ -88,10 +88,10 @@ export declare const setStatusSchema: z.ZodObject<{
88
88
  productId: z.ZodString;
89
89
  status: z.ZodEnum<["draft", "published", "archived"]>;
90
90
  }, "strip", z.ZodTypeAny, {
91
- status: "draft" | "published" | "archived";
91
+ status: "published" | "draft" | "archived";
92
92
  productId: string;
93
93
  }, {
94
- status: "draft" | "published" | "archived";
94
+ status: "published" | "draft" | "archived";
95
95
  productId: string;
96
96
  }>;
97
97
  export type ProductInput = z.infer<typeof productInputSchema>;
@@ -75,7 +75,7 @@ export declare const createCouponSchema: z.ZodObject<{
75
75
  }, "strip", z.ZodTypeAny, {
76
76
  code: string;
77
77
  type: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y";
78
- scope: "seller" | "admin";
78
+ scope: "admin" | "seller";
79
79
  name: string;
80
80
  discount: {
81
81
  value: number;
@@ -99,7 +99,7 @@ export declare const createCouponSchema: z.ZodObject<{
99
99
  }, {
100
100
  code: string;
101
101
  type: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y";
102
- scope: "seller" | "admin";
102
+ scope: "admin" | "seller";
103
103
  name: string;
104
104
  discount: {
105
105
  value: number;
@@ -177,7 +177,7 @@ export declare const updateCouponSchema: z.ZodObject<Omit<{
177
177
  }>>>;
178
178
  }, "code">, "strip", z.ZodTypeAny, {
179
179
  type?: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y" | undefined;
180
- scope?: "seller" | "admin" | undefined;
180
+ scope?: "admin" | "seller" | undefined;
181
181
  name?: string | undefined;
182
182
  discount?: {
183
183
  value: number;
@@ -200,7 +200,7 @@ export declare const updateCouponSchema: z.ZodObject<Omit<{
200
200
  } | undefined;
201
201
  }, {
202
202
  type?: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y" | undefined;
203
- scope?: "seller" | "admin" | undefined;
203
+ scope?: "admin" | "seller" | undefined;
204
204
  name?: string | undefined;
205
205
  discount?: {
206
206
  value: number;
@@ -21,8 +21,8 @@ export declare const createReviewSchema: z.ZodObject<{
21
21
  rating: number;
22
22
  productId: string;
23
23
  comment: string;
24
- orderId?: string | undefined;
25
24
  images?: string[] | undefined;
25
+ orderId?: string | undefined;
26
26
  }>;
27
27
  export declare const replyToReviewSchema: z.ZodObject<{
28
28
  reviewId: z.ZodString;
package/dist/client.d.ts CHANGED
@@ -3,7 +3,7 @@ export type { HttpErrorCode, MappedError } from "./errors/error-mapping";
3
3
  export { ERROR_DISPLAY_MAP, getErrorDisplay } from "./errors/error-display-map";
4
4
  export { toUserMessage, GENERIC_USER_MESSAGE } from "./errors/error-display-map";
5
5
  export type { ErrorDisplayEntry } from "./errors/error-display-map";
6
- export { RazorpayUnreachableError } from "./errors/razorpay-unreachable";
6
+ export { PaymentProviderUnreachableError } from "./errors/payment-provider-unreachable";
7
7
  export type { ActionResult } from "./utils/action-result";
8
8
  export { isOk, unwrap } from "./utils/action-result";
9
9
  export { ApiError, isApiError } from "./client/api/ApiError";
package/dist/client.js CHANGED
@@ -7,7 +7,7 @@ export { ERROR_DISPLAY_MAP, getErrorDisplay } from "./errors/error-display-map";
7
7
  // toUserMessage — the only sanctioned path from a failure to user-facing copy.
8
8
  // It terminates in a constant, so a thrown value's own .message never surfaces.
9
9
  export { toUserMessage, GENERIC_USER_MESSAGE } from "./errors/error-display-map";
10
- export { RazorpayUnreachableError } from "./errors/razorpay-unreachable";
10
+ export { PaymentProviderUnreachableError } from "./errors/payment-provider-unreachable";
11
11
  export { isOk, unwrap } from "./utils/action-result";
12
12
  // [CLIENT-SAFE] Client error class + surface-error router + reporter primitives.
13
13
  // Used by useApiMutation / useApiQuery and Button's async-onclick catch.
@@ -233,7 +233,7 @@ export function defineNextConfig(override = {}) {
233
233
  // sideEffects:false should tree-shake unused server-only exports, but
234
234
  // webpack must first PARSE the full module graph to enumerate all exports.
235
235
  // That parse phase hits Node.js-only requires deep in firebase-admin,
236
- // resend, razorpay, etc. and throws "Module not found" errors.
236
+ // resend, phonepe-pg-sdk-node, etc. and throws "Module not found" errors.
237
237
  //
238
238
  // Fix: alias every server-only package to `false` so webpack replaces them
239
239
  // with empty stubs during the parse phase. Tree-shaking then eliminates the
@@ -250,7 +250,7 @@ export function defineNextConfig(override = {}) {
250
250
  ...FIREBASE_EXTERNAL_PACKAGES,
251
251
  "resend",
252
252
  "@react-email/render",
253
- "razorpay",
253
+ "phonepe-pg-sdk-node",
254
254
  "firebase-functions",
255
255
  ];
256
256
  const clientStubAliases = Object.fromEntries(CLIENT_STUB_PACKAGES.flatMap((pkg) => [
@@ -877,7 +877,7 @@ export declare const SITE_SETTINGS_FIELDS: {
877
877
  };
878
878
  readonly PAYMENT: "payment";
879
879
  readonly PAYMENT_FIELDS: {
880
- readonly RAZORPAY_ENABLED: "payment.razorpayEnabled";
880
+ readonly PHONEPE_ENABLED: "payment.phonepeEnabled";
881
881
  readonly UPI_MANUAL_ENABLED: "payment.upiManualEnabled";
882
882
  readonly COD_ENABLED: "payment.codEnabled";
883
883
  };
@@ -1017,7 +1017,7 @@ export const SITE_SETTINGS_FIELDS = {
1017
1017
  },
1018
1018
  PAYMENT: "payment",
1019
1019
  PAYMENT_FIELDS: {
1020
- RAZORPAY_ENABLED: "payment.razorpayEnabled",
1020
+ PHONEPE_ENABLED: "payment.phonepeEnabled",
1021
1021
  UPI_MANUAL_ENABLED: "payment.upiManualEnabled",
1022
1022
  COD_ENABLED: "payment.codEnabled",
1023
1023
  },
@@ -31,5 +31,3 @@ export type { AdapterAuthUser, AuthUnsubscribe, IClientSessionAdapter, } from ".
31
31
  export { registerClientSessionAdapter, getClientSessionAdapter, } from "./client-session";
32
32
  export type { FilterOption, FilterType, FilterDefinition, SortDefinition, } from "./extend";
33
33
  export { mergeFilterDefinitions, mergeSortDefinitions } from "./extend";
34
- export type { GatewayPaymentResponse, OpenGatewayOptions, IClientPaymentGateway, } from "./client-payment-gateway";
35
- export { registerClientPaymentGateway, getClientPaymentGateway, getRegisteredPaymentGateways, } from "./client-payment-gateway";
@@ -18,4 +18,3 @@ export { registerClientRealtimeProvider, getClientRealtimeProvider, } from "./cl
18
18
  export { registerClientAuthProvider, getClientAuthProvider, } from "./client-auth";
19
19
  export { registerClientSessionAdapter, getClientSessionAdapter, } from "./client-session";
20
20
  export { mergeFilterDefinitions, mergeSortDefinitions } from "./extend";
21
- export { registerClientPaymentGateway, getClientPaymentGateway, getRegisteredPaymentGateways, } from "./client-payment-gateway";
@@ -1,5 +1,6 @@
1
1
  import type { JsonValue } from "../schemas/types";
2
2
  export interface PaymentOrder {
3
+ /** Our own order id — a merchant-order id for gateways that are order-keyed rather than payment-keyed (e.g. PhonePe). */
3
4
  id: string;
4
5
  amount: number;
5
6
  currency: string;
@@ -7,6 +8,14 @@ export interface PaymentOrder {
7
8
  receipt?: string;
8
9
  metadata?: Record<string, JsonValue>;
9
10
  createdAt: string;
11
+ /** The gateway's OWN order id, when distinct from `id` (PhonePe returns both its own `orderId` and echoes back our `merchantOrderId`). Optional — Razorpay's own id WAS `id`, so this stays unset for gateways where the two coincide. */
12
+ gatewayOrderId?: string;
13
+ /** URL the buyer's browser opens/embeds to complete payment (PhonePe's `redirectUrl`). Optional — gateways using a client-side modal with no hosted page (Razorpay) never set this. */
14
+ checkoutUrl?: string;
15
+ /** The gateway's own transaction id for the underlying payment attempt, when it has one distinct from `id`/`gatewayOrderId` (PhonePe's `paymentDetails[].transactionId`). */
16
+ transactionId?: string;
17
+ /** When this order/attempt expires, if the gateway reports one (PhonePe's `expireAt`). ISO-8601. */
18
+ expiresAt?: string;
10
19
  }
11
20
  export interface PaymentCapture {
12
21
  id: string;
@@ -15,6 +24,8 @@ export interface PaymentCapture {
15
24
  currency: string;
16
25
  status: "captured" | "failed";
17
26
  capturedAt: string;
27
+ /** The gateway's own transaction id for this capture attempt, when it has one distinct from `id`/`orderId` (PhonePe's `paymentDetails[].transactionId`). */
28
+ transactionId?: string;
18
29
  }
19
30
  export interface Refund {
20
31
  id: string;
@@ -27,11 +38,11 @@ export interface Refund {
27
38
  }
28
39
  /**
29
40
  * Payment gateway adapter contract. An abstract base class rather than a
30
- * plain interface so every provider (manual, Razorpay, and any future
41
+ * plain interface so every provider (manual, PhonePe, and any future
31
42
  * gateway) extends one shared type — adding a new provider is a subclass,
32
43
  * not a fresh reimplementation of the shape.
33
44
  *
34
- * Implemented by the manual provider (default), Razorpay, and their mocks.
45
+ * Implemented by the manual provider (default) and PhonePe.
35
46
  */
36
47
  export declare abstract class IPaymentProvider {
37
48
  /** Short discriminator used by admin dev tooling to confirm which provider is registered. */
@@ -2,11 +2,11 @@
2
2
  // --- Payment Contract -----------------------------------------------------
3
3
  /**
4
4
  * Payment gateway adapter contract. An abstract base class rather than a
5
- * plain interface so every provider (manual, Razorpay, and any future
5
+ * plain interface so every provider (manual, PhonePe, and any future
6
6
  * gateway) extends one shared type — adding a new provider is a subclass,
7
7
  * not a fresh reimplementation of the shape.
8
8
  *
9
- * Implemented by the manual provider (default), Razorpay, and their mocks.
9
+ * Implemented by the manual provider (default) and PhonePe.
10
10
  */
11
11
  export class IPaymentProvider {
12
12
  }
@@ -1,7 +1,11 @@
1
1
  export interface ResolvedKeys {
2
- razorpayKeyId: string;
3
- razorpayKeySecret: string;
4
- razorpayWebhookSecret: string;
2
+ phonepeClientId: string;
3
+ phonepeClientSecret: string;
4
+ phonepeClientVersion: string;
5
+ /** "sandbox" | "production" */
6
+ phonepeEnvironment: string;
7
+ phonepeWebhookUsername: string;
8
+ phonepeWebhookPassword: string;
5
9
  resendApiKey: string;
6
10
  whatsappApiKey: string;
7
11
  whatsappPhoneNumberId: string;