@zezosoft/react-native-zezopay 1.0.2 → 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 (223) hide show
  1. package/README.md +15 -7
  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/components/VoucherBox.js +206 -0
  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/services/payments/payments.js +52 -0
  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 +49 -0
  76. package/lib/module/zezopay/services/utils/errorFormatter.js.map +1 -0
  77. package/lib/module/zezopay/services/utils/index.js +4 -0
  78. package/lib/module/zezopay/services/utils/index.js.map +1 -0
  79. package/lib/module/zezopay/theme.js +40 -0
  80. package/lib/module/zezopay/theme.js.map +1 -0
  81. package/lib/module/{ZezoPay → zezopay}/types/index.js.map +1 -1
  82. package/lib/module/{ZezoPay → zezopay}/utils/index.js +2 -1
  83. package/lib/module/zezopay/utils/index.js.map +1 -0
  84. package/lib/typescript/src/index.d.ts +1 -1
  85. package/lib/typescript/src/zezopay/ZezoPay.d.ts.map +1 -0
  86. package/lib/typescript/src/{ZezoPay → zezopay}/components/Header.d.ts +2 -0
  87. package/lib/typescript/src/zezopay/components/Header.d.ts.map +1 -0
  88. package/lib/typescript/src/{ZezoPay → zezopay}/components/PayButton.d.ts +2 -0
  89. package/lib/typescript/src/zezopay/components/PayButton.d.ts.map +1 -0
  90. package/lib/typescript/src/zezopay/components/PaymentMethod.d.ts +15 -0
  91. package/lib/typescript/src/zezopay/components/PaymentMethod.d.ts.map +1 -0
  92. package/lib/typescript/src/zezopay/components/Summary.d.ts +11 -0
  93. package/lib/typescript/src/zezopay/components/Summary.d.ts.map +1 -0
  94. package/lib/typescript/src/zezopay/components/VoucherBox.d.ts +14 -0
  95. package/lib/typescript/src/zezopay/components/VoucherBox.d.ts.map +1 -0
  96. package/lib/typescript/src/zezopay/components/index.d.ts +6 -0
  97. package/lib/typescript/src/zezopay/components/index.d.ts.map +1 -0
  98. package/lib/typescript/src/zezopay/context/ZezoPayContext.d.ts +10 -0
  99. package/lib/typescript/src/zezopay/context/ZezoPayContext.d.ts.map +1 -0
  100. package/lib/typescript/src/zezopay/context/index.d.ts +2 -0
  101. package/lib/typescript/src/zezopay/context/index.d.ts.map +1 -0
  102. package/lib/typescript/src/zezopay/hooks/index.d.ts +4 -0
  103. package/lib/typescript/src/zezopay/hooks/index.d.ts.map +1 -0
  104. package/lib/typescript/src/zezopay/hooks/useAsync.d.ts +8 -0
  105. package/lib/typescript/src/zezopay/hooks/useAsync.d.ts.map +1 -0
  106. package/lib/typescript/src/zezopay/hooks/useZezoPay.d.ts +41 -0
  107. package/lib/typescript/src/zezopay/hooks/useZezoPay.d.ts.map +1 -0
  108. package/lib/typescript/src/zezopay/hooks/useZezoPay.helpers.d.ts +23 -0
  109. package/lib/typescript/src/zezopay/hooks/useZezoPay.helpers.d.ts.map +1 -0
  110. package/lib/typescript/src/zezopay/index.d.ts +8 -0
  111. package/lib/typescript/src/zezopay/index.d.ts.map +1 -0
  112. package/lib/typescript/src/zezopay/payments/providers/iap/IAP.d.ts +17 -0
  113. package/lib/typescript/src/zezopay/payments/providers/iap/IAP.d.ts.map +1 -0
  114. package/lib/typescript/src/zezopay/payments/providers/index.d.ts +9 -0
  115. package/lib/typescript/src/zezopay/payments/providers/index.d.ts.map +1 -0
  116. package/lib/typescript/src/zezopay/payments/providers/razorpay/Razorpay.d.ts.map +1 -0
  117. package/lib/typescript/src/zezopay/payments/providers/stripe/Stripe.d.ts +7 -0
  118. package/lib/typescript/src/zezopay/payments/providers/stripe/Stripe.d.ts.map +1 -0
  119. package/lib/typescript/src/zezopay/services/api-sdk.d.ts +31 -0
  120. package/lib/typescript/src/zezopay/services/api-sdk.d.ts.map +1 -0
  121. package/lib/typescript/src/zezopay/services/baseService.d.ts +9 -0
  122. package/lib/typescript/src/zezopay/services/baseService.d.ts.map +1 -0
  123. package/lib/typescript/src/zezopay/services/common.types.d.ts +25 -0
  124. package/lib/typescript/src/zezopay/services/common.types.d.ts.map +1 -0
  125. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.d.ts +15 -0
  126. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.d.ts.map +1 -0
  127. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.types.d.ts +79 -0
  128. package/lib/typescript/src/zezopay/services/digitalProducts/digitalProducts.types.d.ts.map +1 -0
  129. package/lib/typescript/src/zezopay/services/digitalProducts/index.d.ts +3 -0
  130. package/lib/typescript/src/zezopay/services/digitalProducts/index.d.ts.map +1 -0
  131. package/lib/typescript/src/zezopay/services/iap/iap.d.ts +13 -0
  132. package/lib/typescript/src/zezopay/services/iap/iap.d.ts.map +1 -0
  133. package/lib/typescript/src/zezopay/services/iap/iap.types.d.ts +47 -0
  134. package/lib/typescript/src/zezopay/services/iap/iap.types.d.ts.map +1 -0
  135. package/lib/typescript/src/zezopay/services/iap/index.d.ts +3 -0
  136. package/lib/typescript/src/zezopay/services/iap/index.d.ts.map +1 -0
  137. package/lib/typescript/src/zezopay/services/index.d.ts +9 -0
  138. package/lib/typescript/src/zezopay/services/index.d.ts.map +1 -0
  139. package/lib/typescript/src/zezopay/services/payments/index.d.ts +3 -0
  140. package/lib/typescript/src/zezopay/services/payments/index.d.ts.map +1 -0
  141. package/lib/typescript/src/zezopay/services/payments/payments.d.ts +26 -0
  142. package/lib/typescript/src/zezopay/services/payments/payments.d.ts.map +1 -0
  143. package/lib/typescript/src/zezopay/services/payments/payments.types.d.ts +121 -0
  144. package/lib/typescript/src/zezopay/services/payments/payments.types.d.ts.map +1 -0
  145. package/lib/typescript/src/zezopay/services/subscriptions/index.d.ts +3 -0
  146. package/lib/typescript/src/zezopay/services/subscriptions/index.d.ts.map +1 -0
  147. package/lib/typescript/src/zezopay/services/subscriptions/plan/index.d.ts +3 -0
  148. package/lib/typescript/src/zezopay/services/subscriptions/plan/index.d.ts.map +1 -0
  149. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.d.ts +19 -0
  150. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.d.ts.map +1 -0
  151. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.types.d.ts +64 -0
  152. package/lib/typescript/src/zezopay/services/subscriptions/plan/plan.types.d.ts.map +1 -0
  153. package/lib/typescript/src/zezopay/services/utils/errorFormatter.d.ts +6 -0
  154. package/lib/typescript/src/zezopay/services/utils/errorFormatter.d.ts.map +1 -0
  155. package/lib/typescript/src/zezopay/services/utils/index.d.ts +2 -0
  156. package/lib/typescript/src/zezopay/services/utils/index.d.ts.map +1 -0
  157. package/lib/typescript/src/zezopay/theme.d.ts +38 -0
  158. package/lib/typescript/src/zezopay/theme.d.ts.map +1 -0
  159. package/lib/typescript/src/zezopay/types/index.d.ts +85 -0
  160. package/lib/typescript/src/zezopay/types/index.d.ts.map +1 -0
  161. package/lib/typescript/src/{ZezoPay → zezopay}/utils/index.d.ts.map +1 -1
  162. package/package.json +14 -7
  163. package/lib/module/ZezoPay/Payments/Providers/PaymentGateways.types.d.js +0 -2
  164. package/lib/module/ZezoPay/Payments/Providers/PaymentGateways.types.d.js.map +0 -1
  165. package/lib/module/ZezoPay/Payments/Providers/Razorpay/Razorpay.js +0 -39
  166. package/lib/module/ZezoPay/Payments/Providers/Razorpay/Razorpay.js.map +0 -1
  167. package/lib/module/ZezoPay/Payments/Providers/index.js +0 -10
  168. package/lib/module/ZezoPay/Payments/Providers/index.js.map +0 -1
  169. package/lib/module/ZezoPay/ZezoPay.js +0 -178
  170. package/lib/module/ZezoPay/ZezoPay.js.map +0 -1
  171. package/lib/module/ZezoPay/components/Header.js.map +0 -1
  172. package/lib/module/ZezoPay/components/PayButton.js +0 -143
  173. package/lib/module/ZezoPay/components/PayButton.js.map +0 -1
  174. package/lib/module/ZezoPay/components/PaymentMethod.js.map +0 -1
  175. package/lib/module/ZezoPay/components/Summary.js.map +0 -1
  176. package/lib/module/ZezoPay/components/VoucherBox.js +0 -124
  177. package/lib/module/ZezoPay/components/VoucherBox.js.map +0 -1
  178. package/lib/module/ZezoPay/index.js +0 -5
  179. package/lib/module/ZezoPay/index.js.map +0 -1
  180. package/lib/module/ZezoPay/utils/hooks/useAsync.js +0 -32
  181. package/lib/module/ZezoPay/utils/hooks/useAsync.js.map +0 -1
  182. package/lib/module/ZezoPay/utils/hooks/useZezoPay.js +0 -265
  183. package/lib/module/ZezoPay/utils/hooks/useZezoPay.js.map +0 -1
  184. package/lib/module/ZezoPay/utils/index.js.map +0 -1
  185. package/lib/typescript/src/ZezoPay/Payments/Providers/Razorpay/Razorpay.d.ts.map +0 -1
  186. package/lib/typescript/src/ZezoPay/Payments/Providers/index.d.ts +0 -7
  187. package/lib/typescript/src/ZezoPay/Payments/Providers/index.d.ts.map +0 -1
  188. package/lib/typescript/src/ZezoPay/ZezoPay.d.ts.map +0 -1
  189. package/lib/typescript/src/ZezoPay/components/Header.d.ts.map +0 -1
  190. package/lib/typescript/src/ZezoPay/components/PayButton.d.ts.map +0 -1
  191. package/lib/typescript/src/ZezoPay/components/PaymentMethod.d.ts +0 -12
  192. package/lib/typescript/src/ZezoPay/components/PaymentMethod.d.ts.map +0 -1
  193. package/lib/typescript/src/ZezoPay/components/Summary.d.ts +0 -7
  194. package/lib/typescript/src/ZezoPay/components/Summary.d.ts.map +0 -1
  195. package/lib/typescript/src/ZezoPay/components/VoucherBox.d.ts +0 -9
  196. package/lib/typescript/src/ZezoPay/components/VoucherBox.d.ts.map +0 -1
  197. package/lib/typescript/src/ZezoPay/index.d.ts +0 -3
  198. package/lib/typescript/src/ZezoPay/index.d.ts.map +0 -1
  199. package/lib/typescript/src/ZezoPay/types/index.d.ts +0 -66
  200. package/lib/typescript/src/ZezoPay/types/index.d.ts.map +0 -1
  201. package/lib/typescript/src/ZezoPay/utils/hooks/useAsync.d.ts +0 -6
  202. package/lib/typescript/src/ZezoPay/utils/hooks/useAsync.d.ts.map +0 -1
  203. package/lib/typescript/src/ZezoPay/utils/hooks/useZezoPay.d.ts +0 -46
  204. package/lib/typescript/src/ZezoPay/utils/hooks/useZezoPay.d.ts.map +0 -1
  205. package/src/ZezoPay/Payments/Providers/PaymentGateways.types.d.ts +0 -48
  206. package/src/ZezoPay/Payments/Providers/Razorpay/Razorpay.ts +0 -46
  207. package/src/ZezoPay/Payments/Providers/index.ts +0 -8
  208. package/src/ZezoPay/ZezoPay.tsx +0 -176
  209. package/src/ZezoPay/components/Header.tsx +0 -107
  210. package/src/ZezoPay/components/PayButton.tsx +0 -132
  211. package/src/ZezoPay/components/PaymentMethod.tsx +0 -263
  212. package/src/ZezoPay/components/Summary.tsx +0 -188
  213. package/src/ZezoPay/components/VoucherBox.tsx +0 -133
  214. package/src/ZezoPay/index.ts +0 -2
  215. package/src/ZezoPay/types/index.ts +0 -70
  216. package/src/ZezoPay/utils/hooks/useAsync.ts +0 -38
  217. package/src/ZezoPay/utils/hooks/useZezoPay.ts +0 -320
  218. package/src/ZezoPay/utils/index.ts +0 -16
  219. package/src/index.tsx +0 -1
  220. /package/lib/module/{ZezoPay → zezopay}/types/index.js +0 -0
  221. /package/lib/typescript/src/{ZezoPay → zezopay}/ZezoPay.d.ts +0 -0
  222. /package/lib/typescript/src/{ZezoPay/Payments/Providers/Razorpay → zezopay/payments/providers/razorpay}/Razorpay.d.ts +0 -0
  223. /package/lib/typescript/src/{ZezoPay → zezopay}/utils/index.d.ts +0 -0
@@ -1,320 +0,0 @@
1
- import { useCallback, useEffect, useMemo, useState } from 'react';
2
- import { useAsync } from './useAsync';
3
- import {
4
- ZezoPayClient,
5
- type ICheckoutResult,
6
- type ISummaryItem,
7
- type PaymentProvider,
8
- type ZezoPayCallbacks,
9
- type HandlePayment,
10
- type IReadyPaymentProvider,
11
- type ICheckoutPayload,
12
- type BaseCheckoutInput,
13
- } from '@zezosoft/zezopay-client';
14
- import { Platform } from 'react-native';
15
- import { Razorpay } from '../../Payments/Providers';
16
-
17
- export const allowedProviders: PaymentProvider[] = ['razorpay'];
18
-
19
- /**
20
- * Parameters for the useZezoPay hook
21
- * @interface UseZezoPayParams
22
- */
23
- interface UseZezoPayParams {
24
- publicKey: string;
25
- userInfo: { _id: string; name: string; email?: string; phone?: string };
26
- subscriptionId?: string;
27
- digitalProductId?: string;
28
- summaryItems?: ISummaryItem[];
29
- handlePayment?: HandlePayment;
30
- callback?: ZezoPayCallbacks;
31
- }
32
-
33
- /**
34
- * Custom hook to handle payments with ZezoPay SDK.
35
- * Manages payment providers, summary items, and checkout process.
36
- * @param params - Configuration for the ZezoPay client
37
- * @returns Object with payment state and methods
38
- */
39
- export const useZezoPay = ({
40
- publicKey,
41
- userInfo,
42
- subscriptionId,
43
- digitalProductId,
44
- summaryItems: initialItems = [],
45
- handlePayment,
46
- callback,
47
- }: UseZezoPayParams) => {
48
- // Input validation
49
- if (!publicKey) throw new Error('publicKey is required');
50
- if (!userInfo?._id || !userInfo?.name)
51
- throw new Error('userInfo must include _id and name');
52
-
53
- // SDK client
54
- const zezopay = useMemo(
55
- () =>
56
- new ZezoPayClient({
57
- publicKey,
58
- platform: Platform.OS === 'ios' ? 'ios' : 'android',
59
- }),
60
- [publicKey]
61
- );
62
-
63
- // States
64
- const [selectedPayment, setSelectedPayment] =
65
- useState<PaymentProvider | null>(null);
66
- const [summaryItems, setSummaryItems] =
67
- useState<ISummaryItem[]>(initialItems);
68
- const [voucherCode, setVoucherCode] = useState('');
69
- const [isProcessing, setIsProcessing] = useState(false);
70
- const [isSuccess, setIsSuccess] = useState(false);
71
- const [error, setError] = useState('');
72
-
73
- // Load payment providers
74
- const {
75
- result: providers,
76
- loading,
77
- error: providerError,
78
- } = useAsync(async () => {
79
- try {
80
- const data = (await zezopay.payments.providers())?.data || [];
81
- const filtered = data.filter((p: IReadyPaymentProvider) =>
82
- allowedProviders.includes(p.provider as PaymentProvider)
83
- );
84
- if (!filtered.length) {
85
- throw new Error('No supported payment providers available');
86
- }
87
- return filtered;
88
- } catch (err) {
89
- throw err;
90
- }
91
- }, [publicKey]);
92
-
93
- // Auto-select first provider
94
- useEffect(() => {
95
- if (providers?.length && !selectedPayment) {
96
- setSelectedPayment(providers[0]?.provider as PaymentProvider);
97
- }
98
- }, [providers, selectedPayment]);
99
-
100
- // Total price calculation
101
- const totalPrice = useMemo(() => {
102
- if (!summaryItems.length) return 0;
103
- return Number(
104
- summaryItems
105
- .reduce((sum, item) => {
106
- let price = item.price || 0;
107
- if (item.discount) {
108
- if (typeof item.discount === 'number') {
109
- price = (price * (100 - item.discount)) / 100;
110
- } else if (item.discount.type === 'percentage') {
111
- price = (price * (100 - item.discount.amount)) / 100;
112
- } else if (item.discount.type === 'fixed') {
113
- price = Math.max(0, price - item.discount.amount); // Prevent negative prices
114
- }
115
- }
116
- return sum + price;
117
- }, 0)
118
- .toFixed(2)
119
- );
120
- }, [summaryItems]);
121
-
122
- // Remove item from summary
123
- const removeItem = useCallback((id: string | number) => {
124
- setSummaryItems((prev) => prev.filter((item) => item.id !== id));
125
- }, []);
126
-
127
- // Default checkout handler
128
- const defaultHandlePayment: HandlePayment = useCallback(
129
- async ({
130
- provider,
131
- subscriptionId: subId,
132
- digitalProductId: dpId,
133
- userInfo: paymentUserInfo,
134
- }) => {
135
- if (!provider || !allowedProviders.includes(provider)) {
136
- throw new Error(`Invalid payment provider: ${provider || 'none'}`);
137
- }
138
-
139
- // Common payload properties
140
- const basePayload: BaseCheckoutInput = {
141
- provider,
142
- userId: paymentUserInfo._id,
143
- metadata: { userInfo: paymentUserInfo },
144
- ...(voucherCode && { coupon_code: voucherCode }), // Include coupon_code if provided
145
- };
146
-
147
- // Construct payload based on type
148
- let payload: ICheckoutPayload;
149
-
150
- if (subId) {
151
- payload = {
152
- ...basePayload,
153
- type: 'subscription',
154
- subscriptionId: subId,
155
- };
156
- } else if (dpId) {
157
- payload = {
158
- ...basePayload,
159
- type: 'digital-product',
160
- digitalProductId: dpId,
161
- };
162
- } else {
163
- if (totalPrice <= 0) {
164
- throw new Error(
165
- 'Price must be greater than zero for normal payments'
166
- );
167
- }
168
- payload = { ...basePayload, type: 'normal', price: totalPrice };
169
- }
170
-
171
- try {
172
- const result = await zezopay.payments.checkout(payload);
173
- if (result.status !== 200) {
174
- throw new Error(`Checkout failed with status: ${result.status}`);
175
- }
176
- return result.data;
177
- } catch (err) {
178
- throw err;
179
- }
180
- },
181
- [voucherCode, totalPrice, zezopay.payments]
182
- );
183
-
184
- const paymentFn = handlePayment || defaultHandlePayment;
185
-
186
- // Payment handler
187
- const paymentHandler = useCallback(
188
- async (order: ICheckoutResult) => {
189
- if (!selectedPayment) {
190
- throw new Error('No payment provider selected');
191
- }
192
- if (!order?.orderId || !order?.price || !order?.currency) {
193
- throw new Error(
194
- 'Invalid order details: missing orderId, price, or currency'
195
- );
196
- }
197
-
198
- try {
199
- if (selectedPayment === 'razorpay') {
200
- const razorpay = new Razorpay();
201
- await razorpay.open({
202
- amount: order.price * 100,
203
- currency: order.currency,
204
- order_id: order.orderId,
205
- publicKey: order.publicKey || publicKey, // Fallback to publicKey
206
- handler(response) {
207
- if (response.razorpay_payment_id) {
208
- callback?.onSuccess?.({
209
- status: 'success',
210
- order_id: response.razorpay_order_id,
211
- signature: response.razorpay_signature,
212
- payment_id: response.razorpay_payment_id,
213
- });
214
- setIsSuccess(true);
215
- setError('');
216
- } else {
217
- const err = new Error('Payment failed: No payment ID received');
218
- setError(err.message);
219
- callback?.onFailure?.(err);
220
- }
221
- },
222
- OnError(err) {
223
- const errorMessage =
224
- err?.description ||
225
- err?.message ||
226
- err?.details?.error?.description ||
227
- 'Payment failed unexpectedly';
228
-
229
- setError(errorMessage);
230
- callback?.onFailure?.(err);
231
- },
232
- prefill: {
233
- user_email: userInfo.email,
234
- user_name: userInfo.name,
235
- user_phone: userInfo.phone,
236
- },
237
- });
238
- } else {
239
- throw new Error(`Unsupported payment provider: ${selectedPayment}`);
240
- }
241
- } catch (err) {
242
- throw err;
243
- }
244
- },
245
- [selectedPayment, userInfo, callback, publicKey]
246
- );
247
-
248
- // Handle pay now
249
- const handlePayNow = useCallback(async () => {
250
- if (isProcessing) return; // Prevent multiple submissions
251
- if (!selectedPayment) {
252
- setError('Please select a payment provider');
253
- return;
254
- }
255
- if (!summaryItems.length) {
256
- setError('Cart is empty. Add items to proceed.');
257
- return;
258
- }
259
- if (totalPrice <= 0) {
260
- setError('Total price must be greater than zero');
261
- return;
262
- }
263
-
264
- setError('');
265
- setIsProcessing(true); // ✅ Set processing to true at the start
266
-
267
- try {
268
- const order = await paymentFn({
269
- provider: selectedPayment,
270
- subscriptionId,
271
- digitalProductId,
272
- userInfo,
273
- });
274
-
275
- if (!order) {
276
- const err = new Error('No order data returned from checkout');
277
- setError(err.message);
278
- callback?.onError?.(err);
279
- return;
280
- }
281
-
282
- await paymentHandler(order);
283
- } catch (err: any) {
284
- const errorMessage = err.message || 'Payment failed unexpectedly';
285
- setError(errorMessage);
286
- callback?.onError?.(err);
287
- } finally {
288
- setIsProcessing(false);
289
- }
290
- }, [
291
- isProcessing,
292
- selectedPayment,
293
- summaryItems,
294
- totalPrice,
295
- paymentFn,
296
- subscriptionId,
297
- digitalProductId,
298
- userInfo,
299
- paymentHandler,
300
- callback,
301
- ]);
302
-
303
- return {
304
- selectedPayment,
305
- setSelectedPayment,
306
- summaryItems,
307
- setSummaryItems,
308
- totalPrice,
309
- voucherCode,
310
- setVoucherCode,
311
- isProcessing,
312
- isSuccess,
313
- error,
314
- providers: providers || [],
315
- loading,
316
- providerError,
317
- removeItem,
318
- handlePayNow,
319
- };
320
- };
@@ -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