@zezosoft/react-native-zezopay 1.0.3 → 1.0.4

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 (238) hide show
  1. package/README.md +11 -3
  2. package/lib/module/index.js +1 -1
  3. package/lib/module/zezopay/ZezoPay.js +248 -0
  4. package/lib/module/zezopay/ZezoPay.js.map +1 -0
  5. package/lib/module/{ZezoPay → zezopay}/components/Header.js +28 -10
  6. package/lib/module/zezopay/components/Header.js.map +1 -0
  7. package/lib/module/zezopay/components/PayButton.js +192 -0
  8. package/lib/module/zezopay/components/PayButton.js.map +1 -0
  9. package/lib/module/{ZezoPay → zezopay}/components/PaymentMethod.js +96 -70
  10. package/lib/module/zezopay/components/PaymentMethod.js.map +1 -0
  11. package/lib/module/{ZezoPay → zezopay}/components/Summary.js +54 -43
  12. package/lib/module/zezopay/components/Summary.js.map +1 -0
  13. package/lib/module/{ZezoPay → zezopay}/components/VoucherBox.js +81 -48
  14. package/lib/module/zezopay/components/VoucherBox.js.map +1 -0
  15. package/lib/module/zezopay/components/index.js +8 -0
  16. package/lib/module/zezopay/components/index.js.map +1 -0
  17. package/lib/module/zezopay/context/ZezoPayContext.js +24 -0
  18. package/lib/module/zezopay/context/ZezoPayContext.js.map +1 -0
  19. package/lib/module/zezopay/context/index.js +4 -0
  20. package/lib/module/zezopay/context/index.js.map +1 -0
  21. package/lib/module/zezopay/hooks/index.js +5 -0
  22. package/lib/module/zezopay/hooks/index.js.map +1 -0
  23. package/lib/module/zezopay/hooks/useAsync.js +44 -0
  24. package/lib/module/zezopay/hooks/useAsync.js.map +1 -0
  25. package/lib/module/zezopay/hooks/useZezoPay.helpers.js +217 -0
  26. package/lib/module/zezopay/hooks/useZezoPay.helpers.js.map +1 -0
  27. package/lib/module/zezopay/hooks/useZezoPay.js +219 -0
  28. package/lib/module/zezopay/hooks/useZezoPay.js.map +1 -0
  29. package/lib/module/zezopay/index.js +10 -0
  30. package/lib/module/zezopay/index.js.map +1 -0
  31. package/lib/module/zezopay/payments/providers/iap/IAP.js +201 -0
  32. package/lib/module/zezopay/payments/providers/iap/IAP.js.map +1 -0
  33. package/lib/module/zezopay/payments/providers/index.js +12 -0
  34. package/lib/module/zezopay/payments/providers/index.js.map +1 -0
  35. package/lib/module/zezopay/payments/providers/payment-gateways.types.d.js +2 -0
  36. package/lib/module/zezopay/payments/providers/payment-gateways.types.d.js.map +1 -0
  37. package/lib/module/zezopay/payments/providers/razorpay/Razorpay.js +40 -0
  38. package/lib/module/zezopay/payments/providers/razorpay/Razorpay.js.map +1 -0
  39. package/lib/module/zezopay/payments/providers/stripe/Stripe.js +58 -0
  40. package/lib/module/zezopay/payments/providers/stripe/Stripe.js.map +1 -0
  41. package/lib/module/zezopay/services/api-sdk.js +24 -0
  42. package/lib/module/zezopay/services/api-sdk.js.map +1 -0
  43. package/lib/module/zezopay/services/baseService.js +55 -0
  44. package/lib/module/zezopay/services/baseService.js.map +1 -0
  45. package/lib/module/zezopay/services/common.types.js +2 -0
  46. package/lib/module/zezopay/services/common.types.js.map +1 -0
  47. package/lib/module/zezopay/services/digitalProducts/digitalProducts.js +72 -0
  48. package/lib/module/zezopay/services/digitalProducts/digitalProducts.js.map +1 -0
  49. package/lib/module/zezopay/services/digitalProducts/digitalProducts.types.js +4 -0
  50. package/lib/module/zezopay/services/digitalProducts/digitalProducts.types.js.map +1 -0
  51. package/lib/module/zezopay/services/digitalProducts/index.js +5 -0
  52. package/lib/module/zezopay/services/digitalProducts/index.js.map +1 -0
  53. package/lib/module/zezopay/services/iap/iap.js +20 -0
  54. package/lib/module/zezopay/services/iap/iap.js.map +1 -0
  55. package/lib/module/zezopay/services/iap/iap.types.js +2 -0
  56. package/lib/module/zezopay/services/iap/iap.types.js.map +1 -0
  57. package/lib/module/zezopay/services/iap/index.js +5 -0
  58. package/lib/module/zezopay/services/iap/index.js.map +1 -0
  59. package/lib/module/zezopay/services/index.js +10 -0
  60. package/lib/module/zezopay/services/index.js.map +1 -0
  61. package/lib/module/zezopay/services/payments/index.js +5 -0
  62. package/lib/module/zezopay/services/payments/index.js.map +1 -0
  63. package/lib/module/{ZezoPay/http → zezopay}/services/payments/payments.js +2 -1
  64. package/lib/module/zezopay/services/payments/payments.js.map +1 -0
  65. package/lib/module/zezopay/services/payments/payments.types.js +52 -0
  66. package/lib/module/zezopay/services/payments/payments.types.js.map +1 -0
  67. package/lib/module/zezopay/services/subscriptions/index.js +5 -0
  68. package/lib/module/zezopay/services/subscriptions/index.js.map +1 -0
  69. package/lib/module/zezopay/services/subscriptions/plan/index.js +5 -0
  70. package/lib/module/zezopay/services/subscriptions/plan/index.js.map +1 -0
  71. package/lib/module/zezopay/services/subscriptions/plan/plan.js +57 -0
  72. package/lib/module/zezopay/services/subscriptions/plan/plan.js.map +1 -0
  73. package/lib/module/zezopay/services/subscriptions/plan/plan.types.js +4 -0
  74. package/lib/module/zezopay/services/subscriptions/plan/plan.types.js.map +1 -0
  75. package/lib/module/zezopay/services/utils/errorFormatter.js.map +1 -0
  76. package/lib/module/zezopay/services/utils/index.js +4 -0
  77. package/lib/module/zezopay/services/utils/index.js.map +1 -0
  78. package/lib/module/zezopay/theme.js +40 -0
  79. package/lib/module/zezopay/theme.js.map +1 -0
  80. package/lib/module/{ZezoPay → zezopay}/types/index.js.map +1 -1
  81. package/lib/module/{ZezoPay → zezopay}/utils/index.js +2 -1
  82. package/lib/module/zezopay/utils/index.js.map +1 -0
  83. package/lib/typescript/src/index.d.ts +1 -1
  84. package/lib/typescript/src/zezopay/ZezoPay.d.ts.map +1 -0
  85. package/lib/typescript/src/{ZezoPay → zezopay}/components/Header.d.ts +2 -0
  86. package/lib/typescript/src/zezopay/components/Header.d.ts.map +1 -0
  87. package/lib/typescript/src/{ZezoPay → zezopay}/components/PayButton.d.ts +2 -0
  88. package/lib/typescript/src/zezopay/components/PayButton.d.ts.map +1 -0
  89. package/lib/typescript/src/zezopay/components/PaymentMethod.d.ts +15 -0
  90. package/lib/typescript/src/zezopay/components/PaymentMethod.d.ts.map +1 -0
  91. package/lib/typescript/src/zezopay/components/Summary.d.ts +11 -0
  92. package/lib/typescript/src/zezopay/components/Summary.d.ts.map +1 -0
  93. package/lib/typescript/src/{ZezoPay → zezopay}/components/VoucherBox.d.ts +2 -0
  94. package/lib/typescript/src/zezopay/components/VoucherBox.d.ts.map +1 -0
  95. package/lib/typescript/src/zezopay/components/index.d.ts +6 -0
  96. package/lib/typescript/src/zezopay/components/index.d.ts.map +1 -0
  97. package/lib/typescript/src/zezopay/context/ZezoPayContext.d.ts +10 -0
  98. package/lib/typescript/src/zezopay/context/ZezoPayContext.d.ts.map +1 -0
  99. package/lib/typescript/src/zezopay/context/index.d.ts +2 -0
  100. package/lib/typescript/src/zezopay/context/index.d.ts.map +1 -0
  101. package/lib/typescript/src/zezopay/hooks/index.d.ts +4 -0
  102. package/lib/typescript/src/zezopay/hooks/index.d.ts.map +1 -0
  103. package/lib/typescript/src/zezopay/hooks/useAsync.d.ts +8 -0
  104. package/lib/typescript/src/zezopay/hooks/useAsync.d.ts.map +1 -0
  105. package/lib/typescript/src/{ZezoPay/utils → zezopay}/hooks/useZezoPay.d.ts +13 -12
  106. package/lib/typescript/src/zezopay/hooks/useZezoPay.d.ts.map +1 -0
  107. package/lib/typescript/src/zezopay/hooks/useZezoPay.helpers.d.ts +23 -0
  108. package/lib/typescript/src/zezopay/hooks/useZezoPay.helpers.d.ts.map +1 -0
  109. package/lib/typescript/src/zezopay/index.d.ts +8 -0
  110. package/lib/typescript/src/zezopay/index.d.ts.map +1 -0
  111. package/lib/typescript/src/zezopay/payments/providers/iap/IAP.d.ts +17 -0
  112. package/lib/typescript/src/zezopay/payments/providers/iap/IAP.d.ts.map +1 -0
  113. package/lib/typescript/src/zezopay/payments/providers/index.d.ts +9 -0
  114. package/lib/typescript/src/zezopay/payments/providers/index.d.ts.map +1 -0
  115. package/lib/typescript/src/zezopay/payments/providers/razorpay/Razorpay.d.ts.map +1 -0
  116. package/lib/typescript/src/zezopay/payments/providers/stripe/Stripe.d.ts +7 -0
  117. package/lib/typescript/src/zezopay/payments/providers/stripe/Stripe.d.ts.map +1 -0
  118. package/lib/typescript/src/zezopay/services/api-sdk.d.ts +31 -0
  119. package/lib/typescript/src/zezopay/services/api-sdk.d.ts.map +1 -0
  120. package/lib/typescript/src/{ZezoPay/http → zezopay}/services/baseService.d.ts +1 -1
  121. package/lib/typescript/src/zezopay/services/baseService.d.ts.map +1 -0
  122. package/lib/typescript/src/zezopay/services/common.types.d.ts +25 -0
  123. package/lib/typescript/src/zezopay/services/common.types.d.ts.map +1 -0
  124. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.d.ts +15 -0
  125. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.d.ts.map +1 -0
  126. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.types.d.ts +79 -0
  127. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.types.d.ts.map +1 -0
  128. package/lib/typescript/src/zezopay/services/digitalProducts/index.d.ts +3 -0
  129. package/lib/typescript/src/zezopay/services/digitalProducts/index.d.ts.map +1 -0
  130. package/lib/typescript/src/zezopay/services/iap/iap.d.ts +13 -0
  131. package/lib/typescript/src/zezopay/services/iap/iap.d.ts.map +1 -0
  132. package/lib/typescript/src/zezopay/services/iap/iap.types.d.ts +47 -0
  133. package/lib/typescript/src/zezopay/services/iap/iap.types.d.ts.map +1 -0
  134. package/lib/typescript/src/zezopay/services/iap/index.d.ts +3 -0
  135. package/lib/typescript/src/zezopay/services/iap/index.d.ts.map +1 -0
  136. package/lib/typescript/src/zezopay/services/index.d.ts +9 -0
  137. package/lib/typescript/src/zezopay/services/index.d.ts.map +1 -0
  138. package/lib/typescript/src/zezopay/services/payments/index.d.ts +3 -0
  139. package/lib/typescript/src/zezopay/services/payments/index.d.ts.map +1 -0
  140. package/lib/typescript/src/{ZezoPay/http → zezopay}/services/payments/payments.d.ts +3 -2
  141. package/lib/typescript/src/zezopay/services/payments/payments.d.ts.map +1 -0
  142. package/lib/typescript/src/{ZezoPay/http → zezopay}/services/payments/payments.types.d.ts +22 -1
  143. package/lib/typescript/src/zezopay/services/payments/payments.types.d.ts.map +1 -0
  144. package/lib/typescript/src/zezopay/services/subscriptions/index.d.ts +3 -0
  145. package/lib/typescript/src/zezopay/services/subscriptions/index.d.ts.map +1 -0
  146. package/lib/typescript/src/zezopay/services/subscriptions/plan/index.d.ts +3 -0
  147. package/lib/typescript/src/zezopay/services/subscriptions/plan/index.d.ts.map +1 -0
  148. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.d.ts +19 -0
  149. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.d.ts.map +1 -0
  150. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.types.d.ts +64 -0
  151. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.types.d.ts.map +1 -0
  152. package/lib/typescript/src/zezopay/services/utils/errorFormatter.d.ts.map +1 -0
  153. package/lib/typescript/src/zezopay/services/utils/index.d.ts +2 -0
  154. package/lib/typescript/src/zezopay/services/utils/index.d.ts.map +1 -0
  155. package/lib/typescript/src/zezopay/theme.d.ts +38 -0
  156. package/lib/typescript/src/zezopay/theme.d.ts.map +1 -0
  157. package/lib/typescript/src/{ZezoPay → zezopay}/types/index.d.ts +19 -21
  158. package/lib/typescript/src/zezopay/types/index.d.ts.map +1 -0
  159. package/lib/typescript/src/{ZezoPay → zezopay}/utils/index.d.ts.map +1 -1
  160. package/package.json +13 -5
  161. package/lib/module/ZezoPay/Payments/Providers/PaymentGateways.types.d.js +0 -2
  162. package/lib/module/ZezoPay/Payments/Providers/PaymentGateways.types.d.js.map +0 -1
  163. package/lib/module/ZezoPay/Payments/Providers/Razorpay/Razorpay.js +0 -39
  164. package/lib/module/ZezoPay/Payments/Providers/Razorpay/Razorpay.js.map +0 -1
  165. package/lib/module/ZezoPay/Payments/Providers/index.js +0 -10
  166. package/lib/module/ZezoPay/Payments/Providers/index.js.map +0 -1
  167. package/lib/module/ZezoPay/ZezoPay.js +0 -192
  168. package/lib/module/ZezoPay/ZezoPay.js.map +0 -1
  169. package/lib/module/ZezoPay/components/Header.js.map +0 -1
  170. package/lib/module/ZezoPay/components/PayButton.js +0 -143
  171. package/lib/module/ZezoPay/components/PayButton.js.map +0 -1
  172. package/lib/module/ZezoPay/components/PaymentMethod.js.map +0 -1
  173. package/lib/module/ZezoPay/components/Summary.js.map +0 -1
  174. package/lib/module/ZezoPay/components/VoucherBox.js.map +0 -1
  175. package/lib/module/ZezoPay/http/api-sdk.js +0 -14
  176. package/lib/module/ZezoPay/http/api-sdk.js.map +0 -1
  177. package/lib/module/ZezoPay/http/services/baseService.js +0 -28
  178. package/lib/module/ZezoPay/http/services/baseService.js.map +0 -1
  179. package/lib/module/ZezoPay/http/services/payments/payments.js.map +0 -1
  180. package/lib/module/ZezoPay/http/services/payments/payments.types.js +0 -2
  181. package/lib/module/ZezoPay/http/services/payments/payments.types.js.map +0 -1
  182. package/lib/module/ZezoPay/http/utils/errorFormatter.js.map +0 -1
  183. package/lib/module/ZezoPay/index.js +0 -5
  184. package/lib/module/ZezoPay/index.js.map +0 -1
  185. package/lib/module/ZezoPay/utils/hooks/useAsync.js +0 -32
  186. package/lib/module/ZezoPay/utils/hooks/useAsync.js.map +0 -1
  187. package/lib/module/ZezoPay/utils/hooks/useZezoPay.js +0 -249
  188. package/lib/module/ZezoPay/utils/hooks/useZezoPay.js.map +0 -1
  189. package/lib/module/ZezoPay/utils/index.js.map +0 -1
  190. package/lib/typescript/src/ZezoPay/Payments/Providers/Razorpay/Razorpay.d.ts.map +0 -1
  191. package/lib/typescript/src/ZezoPay/Payments/Providers/index.d.ts +0 -7
  192. package/lib/typescript/src/ZezoPay/Payments/Providers/index.d.ts.map +0 -1
  193. package/lib/typescript/src/ZezoPay/ZezoPay.d.ts.map +0 -1
  194. package/lib/typescript/src/ZezoPay/components/Header.d.ts.map +0 -1
  195. package/lib/typescript/src/ZezoPay/components/PayButton.d.ts.map +0 -1
  196. package/lib/typescript/src/ZezoPay/components/PaymentMethod.d.ts +0 -12
  197. package/lib/typescript/src/ZezoPay/components/PaymentMethod.d.ts.map +0 -1
  198. package/lib/typescript/src/ZezoPay/components/Summary.d.ts +0 -7
  199. package/lib/typescript/src/ZezoPay/components/Summary.d.ts.map +0 -1
  200. package/lib/typescript/src/ZezoPay/components/VoucherBox.d.ts.map +0 -1
  201. package/lib/typescript/src/ZezoPay/http/api-sdk.d.ts +0 -21
  202. package/lib/typescript/src/ZezoPay/http/api-sdk.d.ts.map +0 -1
  203. package/lib/typescript/src/ZezoPay/http/services/baseService.d.ts.map +0 -1
  204. package/lib/typescript/src/ZezoPay/http/services/payments/payments.d.ts.map +0 -1
  205. package/lib/typescript/src/ZezoPay/http/services/payments/payments.types.d.ts.map +0 -1
  206. package/lib/typescript/src/ZezoPay/http/utils/errorFormatter.d.ts.map +0 -1
  207. package/lib/typescript/src/ZezoPay/index.d.ts +0 -3
  208. package/lib/typescript/src/ZezoPay/index.d.ts.map +0 -1
  209. package/lib/typescript/src/ZezoPay/types/index.d.ts.map +0 -1
  210. package/lib/typescript/src/ZezoPay/utils/hooks/useAsync.d.ts +0 -6
  211. package/lib/typescript/src/ZezoPay/utils/hooks/useAsync.d.ts.map +0 -1
  212. package/lib/typescript/src/ZezoPay/utils/hooks/useZezoPay.d.ts.map +0 -1
  213. package/src/ZezoPay/Payments/Providers/PaymentGateways.types.d.ts +0 -48
  214. package/src/ZezoPay/Payments/Providers/Razorpay/Razorpay.ts +0 -46
  215. package/src/ZezoPay/Payments/Providers/index.ts +0 -8
  216. package/src/ZezoPay/ZezoPay.tsx +0 -197
  217. package/src/ZezoPay/components/Header.tsx +0 -107
  218. package/src/ZezoPay/components/PayButton.tsx +0 -132
  219. package/src/ZezoPay/components/PaymentMethod.tsx +0 -263
  220. package/src/ZezoPay/components/Summary.tsx +0 -188
  221. package/src/ZezoPay/components/VoucherBox.tsx +0 -182
  222. package/src/ZezoPay/http/api-sdk.ts +0 -27
  223. package/src/ZezoPay/http/services/baseService.ts +0 -37
  224. package/src/ZezoPay/http/services/payments/payments.ts +0 -66
  225. package/src/ZezoPay/http/services/payments/payments.types.ts +0 -120
  226. package/src/ZezoPay/http/utils/errorFormatter.ts +0 -88
  227. package/src/ZezoPay/index.ts +0 -2
  228. package/src/ZezoPay/types/index.ts +0 -104
  229. package/src/ZezoPay/utils/hooks/useAsync.ts +0 -38
  230. package/src/ZezoPay/utils/hooks/useZezoPay.ts +0 -323
  231. package/src/ZezoPay/utils/index.ts +0 -16
  232. package/src/index.tsx +0 -1
  233. /package/lib/module/{ZezoPay/http → zezopay/services}/utils/errorFormatter.js +0 -0
  234. /package/lib/module/{ZezoPay → zezopay}/types/index.js +0 -0
  235. /package/lib/typescript/src/{ZezoPay → zezopay}/ZezoPay.d.ts +0 -0
  236. /package/lib/typescript/src/{ZezoPay/Payments/Providers/Razorpay → zezopay/payments/providers/razorpay}/Razorpay.d.ts +0 -0
  237. /package/lib/typescript/src/{ZezoPay/http → zezopay/services}/utils/errorFormatter.d.ts +0 -0
  238. /package/lib/typescript/src/{ZezoPay → zezopay}/utils/index.d.ts +0 -0
@@ -1,323 +0,0 @@
1
- import { useCallback, useEffect, useMemo, useState } from 'react';
2
- import { useAsync } from './useAsync';
3
- import {
4
- ZezoPayClient,
5
- type ICheckoutResult,
6
- type PaymentProvider,
7
- type IReadyPaymentProvider,
8
- type ICheckoutPayload,
9
- type BaseCheckoutInput,
10
- } from '../../http/api-sdk';
11
- import { Razorpay } from '../../Payments/Providers';
12
- import type {
13
- HandlePayment,
14
- ISummaryItem,
15
- ZezoPayCallbacks,
16
- } from '../../types';
17
- import { Platform } from 'react-native';
18
-
19
- export const SUPPORTED_PROVIDERS: PaymentProvider[] = ['razorpay'];
20
-
21
- interface UseZezoPayParams {
22
- publicKey: string;
23
- user: { _id: string; name: string; email?: string; phone?: string };
24
- subscriptionId?: string;
25
- productId?: string;
26
- cart?: ISummaryItem[];
27
- paymentHandler?: HandlePayment;
28
- callbacks?: ZezoPayCallbacks;
29
- }
30
-
31
- export const useZezoPay = ({
32
- publicKey,
33
- user,
34
- subscriptionId,
35
- productId,
36
- cart: initialCart = [],
37
- paymentHandler: customHandler,
38
- callbacks,
39
- }: UseZezoPayParams) => {
40
- if (!publicKey) throw new Error('publicKey is required');
41
- if (!user?._id || !user?.name) throw new Error('User must have _id and name');
42
-
43
- const client = useMemo(() => new ZezoPayClient({ publicKey }), [publicKey]);
44
-
45
- // States
46
- const [provider, setProvider] = useState<PaymentProvider | null>(null);
47
- const [cartItems, setCartItems] = useState<ISummaryItem[]>(initialCart);
48
- const [coupon, setCoupon] = useState('');
49
- const [loadingPayment, setLoadingPayment] = useState(false);
50
- const [couponLoading, setCouponLoading] = useState(false); // ✅ coupon loading
51
- const [success, setSuccess] = useState(false);
52
- const [error, setError] = useState('');
53
-
54
- // Fetch available providers
55
- const {
56
- result: providers,
57
- loading,
58
- error: providersError,
59
- } = useAsync(async () => {
60
- const data =
61
- (
62
- await client.payments.providers({
63
- platform: Platform.OS as 'ios' | 'android',
64
- })
65
- )?.data || [];
66
- const supported = data.filter((p: IReadyPaymentProvider) =>
67
- SUPPORTED_PROVIDERS.includes(p.provider as PaymentProvider)
68
- );
69
- if (!supported.length)
70
- throw new Error('No supported payment providers available');
71
- return supported;
72
- }, [publicKey]);
73
-
74
- // Auto select first provider
75
- useEffect(() => {
76
- if (providers?.length && !provider)
77
- setProvider(providers?.[0]?.provider as PaymentProvider);
78
- }, [providers, provider]);
79
-
80
- // Cart totals
81
- const totalAmount = useMemo(() => {
82
- return cartItems.reduce((sum, item) => {
83
- let price = item.price || 0;
84
- if (item.discount) {
85
- if (typeof item.discount === 'number')
86
- price *= (100 - item.discount) / 100;
87
- else if (item.discount.type === 'percentage')
88
- price *= (100 - item.discount.amount) / 100;
89
- else if (item.discount.type === 'fixed')
90
- price = Math.max(0, price - item.discount.amount);
91
- }
92
- return sum + price;
93
- }, 0);
94
- }, [cartItems]);
95
-
96
- const rawAmount = useMemo(
97
- () => cartItems.reduce((sum, item) => sum + (item.price || 0), 0),
98
- [cartItems]
99
- );
100
-
101
- const removeItem = useCallback(
102
- (id: string | number) =>
103
- setCartItems((prev) => prev.filter((item) => item.id !== id)),
104
- []
105
- );
106
-
107
- // Default checkout handler
108
- const defaultHandler: HandlePayment = useCallback(
109
- async ({
110
- provider: checkoutProvider,
111
- subscriptionId: subId,
112
- digitalProductId: prodId,
113
- userInfo,
114
- }) => {
115
- if (!checkoutProvider || !SUPPORTED_PROVIDERS.includes(checkoutProvider))
116
- throw new Error(`Invalid provider: ${checkoutProvider}`);
117
-
118
- const basePayload: BaseCheckoutInput = {
119
- provider: checkoutProvider,
120
- userId: userInfo._id,
121
- metadata: { userInfo, ...(cartItems.length && { summary: cartItems }) },
122
- ...(coupon && { coupon_code: coupon }),
123
- };
124
-
125
- let payload: ICheckoutPayload;
126
- if (subId)
127
- payload = {
128
- ...basePayload,
129
- type: 'subscription',
130
- subscriptionId: subId,
131
- };
132
- else if (prodId)
133
- payload = {
134
- ...basePayload,
135
- type: 'digital-product',
136
- digitalProductId: prodId,
137
- };
138
- else {
139
- if (rawAmount <= 0) throw new Error('Amount must be greater than zero');
140
- payload = { ...basePayload, type: 'normal', price: rawAmount };
141
- }
142
-
143
- const result = await client.payments.checkout({
144
- ...payload,
145
- ...(coupon && { coupon_code: coupon }),
146
- });
147
- if (result.status !== 200)
148
- throw new Error(`Checkout failed with status ${result.status}`);
149
- return result.data;
150
- },
151
- [coupon, client.payments, cartItems, rawAmount]
152
- );
153
-
154
- const executePayment = customHandler || defaultHandler;
155
-
156
- // Razorpay payment processor
157
- const processPayment = useCallback(
158
- async (order: ICheckoutResult) => {
159
- if (!provider) throw new Error('No payment provider selected');
160
- if (!order?.orderId || !order?.price || !order?.currency)
161
- throw new Error('Invalid order');
162
-
163
- if (provider === 'razorpay') {
164
- const razorpay = new Razorpay();
165
- await razorpay.open({
166
- amount: order.price * 100,
167
- currency: order.currency,
168
- order_id: order.orderId,
169
- publicKey: order.publicKey || publicKey,
170
- handler(response) {
171
- if (response.razorpay_payment_id) {
172
- callbacks?.onSuccess?.({
173
- status: 'success',
174
- order_id: response.razorpay_order_id,
175
- signature: response.razorpay_signature,
176
- payment_id: response.razorpay_payment_id,
177
- });
178
- setSuccess(true);
179
- setError('');
180
- } else {
181
- const err = new Error('Payment failed: missing payment ID');
182
- setError(err.message);
183
- callbacks?.onFailure?.(err);
184
- }
185
- },
186
- OnError(err) {
187
- const msg =
188
- err?.description ||
189
- err?.message ||
190
- err?.details?.error?.description ||
191
- 'Payment failed';
192
- setError(msg);
193
- callbacks?.onFailure?.(err);
194
- },
195
- prefill: {
196
- user_email: user.email,
197
- user_name: user.name,
198
- user_phone: user.phone,
199
- },
200
- });
201
- } else throw new Error(`Unsupported provider: ${provider}`);
202
- },
203
- [provider, user, callbacks, publicKey]
204
- );
205
-
206
- // Apply coupon
207
- const applyCoupon = useCallback(
208
- async (code: string) => {
209
- if (!code) return;
210
- setCouponLoading(true);
211
- setError('');
212
-
213
- try {
214
- const res = await client.payments.verifyCoupon({
215
- userId: user._id,
216
- code,
217
- });
218
- const data = res?.data?.data;
219
-
220
- if (!data || res.status !== 200)
221
- return setError(res?.data?.message || 'Invalid or expired coupon');
222
-
223
- if (data.type === 'percentage')
224
- setCartItems((prev) =>
225
- prev.map((item) => ({
226
- ...item,
227
- discount: { type: 'percentage', amount: data.discount },
228
- }))
229
- );
230
- else if (data.type === 'amount')
231
- setCartItems((prev) =>
232
- prev.map((item, i) =>
233
- i === 0
234
- ? {
235
- ...item,
236
- discount: { type: 'fixed', amount: data.discount },
237
- }
238
- : item
239
- )
240
- );
241
-
242
- setCoupon(code);
243
- } catch (err: any) {
244
- setError(err?.message || 'Coupon verification failed');
245
- } finally {
246
- setCouponLoading(false);
247
- }
248
- },
249
- [client.payments, user._id]
250
- );
251
-
252
- // Remove coupon
253
- const removeCoupon = useCallback(() => {
254
- setCoupon('');
255
- setCartItems((prev) =>
256
- prev.map((item) => ({ ...item, discount: undefined }))
257
- );
258
- setError('');
259
- }, []);
260
-
261
- // Pay now
262
- const payNow = useCallback(async () => {
263
- if (loadingPayment) return;
264
- if (!provider) return setError('Select a payment provider');
265
- if (!cartItems.length) return setError('Cart is empty');
266
- if (totalAmount <= 0) return setError('Amount must be greater than zero');
267
-
268
- setError('');
269
- setLoadingPayment(true);
270
-
271
- try {
272
- const order = await executePayment({
273
- provider,
274
- subscriptionId,
275
- digitalProductId: productId,
276
- userInfo: user,
277
- metadata: {
278
- userInfo: user,
279
- ...(cartItems.length && { summary: cartItems }),
280
- },
281
- });
282
- if (!order) throw new Error('No order data returned');
283
- await processPayment(order);
284
- } catch (err: any) {
285
- setError(err.message || 'Payment failed');
286
- callbacks?.onError?.(err);
287
- } finally {
288
- setLoadingPayment(false);
289
- }
290
- }, [
291
- loadingPayment,
292
- provider,
293
- cartItems,
294
- totalAmount,
295
- executePayment,
296
- subscriptionId,
297
- productId,
298
- user,
299
- processPayment,
300
- callbacks,
301
- ]);
302
-
303
- return {
304
- provider,
305
- setProvider,
306
- cartItems,
307
- setCartItems,
308
- totalAmount,
309
- coupon,
310
- setCoupon,
311
- couponLoading,
312
- removeCoupon,
313
- loadingPayment,
314
- success,
315
- error,
316
- providers: providers || [],
317
- loading,
318
- providersError,
319
- removeItem,
320
- payNow,
321
- applyCoupon,
322
- };
323
- };
@@ -1,16 +0,0 @@
1
- export function formatCurrency({
2
- amount,
3
- currency = 'INR',
4
- minimumFractionDigits = 2,
5
- }: {
6
- amount: number;
7
- currency?: string;
8
- minimumFractionDigits?: number;
9
- }): string {
10
- return new Intl.NumberFormat('en-IN', {
11
- style: 'currency',
12
- currency,
13
- minimumFractionDigits,
14
- maximumFractionDigits: 2,
15
- }).format(amount);
16
- }
package/src/index.tsx DELETED
@@ -1 +0,0 @@
1
- export * from './ZezoPay';
File without changes