@jimrising/easymerchantsdk-react-native 2.3.9 → 2.4.1

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 (74) hide show
  1. package/.idea/caches/deviceStreaming.xml +340 -0
  2. package/.idea/em-MobileCheckoutSDK-ReactNative.iml +9 -0
  3. package/.idea/misc.xml +5 -0
  4. package/.idea/modules.xml +8 -0
  5. package/.idea/vcs.xml +6 -0
  6. package/README.md +113 -42
  7. package/android/build/generated/source/buildConfig/debug/com/reactlibrary/BuildConfig.java +10 -0
  8. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +7 -0
  9. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  10. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  11. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  12. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  13. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  14. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  15. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  16. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  17. package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
  18. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  19. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  20. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/BuildConfig.class +0 -0
  21. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$1$1.class +0 -0
  22. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$1.class +0 -0
  23. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
  24. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
  25. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
  26. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkPackage.class +0 -0
  27. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
  28. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +7 -0
  29. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +7 -0
  30. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  31. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  32. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/BuildConfig.class +0 -0
  33. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$1$1.class +0 -0
  34. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$1.class +0 -0
  35. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
  36. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
  37. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
  38. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkPackage.class +0 -0
  39. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  40. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
  41. package/android/build/outputs/logs/manifest-merger-debug-report.txt +16 -0
  42. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  43. package/android/build.gradle +3 -2
  44. package/ios/Classes/EasyMerchantSdk.h +4 -0
  45. package/ios/Classes/EasyMerchantSdk.m +8 -2
  46. package/ios/Classes/EasyMerchantSdk.swift +14 -0
  47. package/ios/Helper/GrailPayHelper.swift +166 -5
  48. package/ios/Pods/UserDefaults/UserStoreSingleton.swift +425 -0
  49. package/ios/Pods/ViewControllers/AdditionalInfoVC.swift +2996 -0
  50. package/ios/Pods/ViewControllers/BaseVC.swift +142 -0
  51. package/ios/Pods/ViewControllers/BillingInfoVC/BillingInfoVC.swift +3807 -0
  52. package/ios/Pods/ViewControllers/BillingInfoVC/Cells/CityListTVC.swift +46 -0
  53. package/ios/Pods/ViewControllers/BillingInfoVC/Cells/CountryListTVC.swift +47 -0
  54. package/ios/Pods/ViewControllers/BillingInfoVC/Cells/StateListTVC.swift +46 -0
  55. package/ios/Pods/ViewControllers/Clean Runner_2025-07-23T14-58-05.txt +13 -0
  56. package/ios/Pods/ViewControllers/CountryListVC.swift +435 -0
  57. package/ios/Pods/ViewControllers/EmailVerificationVC.swift +300 -0
  58. package/ios/Pods/ViewControllers/GrailPayVC.swift +492 -0
  59. package/ios/Pods/ViewControllers/OTPVerificationVC.swift +2278 -0
  60. package/ios/Pods/ViewControllers/PaymentDoneVC.swift +287 -0
  61. package/ios/Pods/ViewControllers/PaymentErrorVC.swift +85 -0
  62. package/ios/Pods/ViewControllers/PaymentInformation/AccountTypeTVC.swift +41 -0
  63. package/ios/Pods/ViewControllers/PaymentInformation/PaymentInfoVC.swift +13115 -0
  64. package/ios/Pods/ViewControllers/PaymentInformation/PaymentInformationCVC.swift +35 -0
  65. package/ios/Pods/ViewControllers/PaymentInformation/RecurringTVC.swift +40 -0
  66. package/ios/Pods/ViewControllers/PaymentInformation/SavedAccountsTVC/SavedAccountTVC.swift +80 -0
  67. package/ios/Pods/ViewControllers/PaymentInformation/SavedAccountsTVC/SavedAccountTVC.xib +163 -0
  68. package/ios/Pods/ViewControllers/PaymentInformation/SavedCardsTVC/SavedCardsTVC.swift +81 -0
  69. package/ios/Pods/ViewControllers/PaymentInformation/SavedCardsTVC/SavedCardsTVC.xib +188 -0
  70. package/ios/Pods/ViewControllers/PaymentStatusWebViewVC.swift +167 -0
  71. package/ios/Pods/ViewControllers/TermAndConditionsVC.swift +63 -0
  72. package/ios/Pods/ViewControllers/ThreeDSecurePaymentDoneVC.swift +1254 -0
  73. package/ios/easymerchantsdk.podspec +1 -1
  74. package/package.json +1 -1
@@ -0,0 +1,340 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="DeviceStreaming">
4
+ <option name="deviceSelectionList">
5
+ <list>
6
+ <PersistentDeviceSelectionData>
7
+ <option name="api" value="27" />
8
+ <option name="brand" value="DOCOMO" />
9
+ <option name="codename" value="F01L" />
10
+ <option name="id" value="F01L" />
11
+ <option name="manufacturer" value="FUJITSU" />
12
+ <option name="name" value="F-01L" />
13
+ <option name="screenDensity" value="360" />
14
+ <option name="screenX" value="720" />
15
+ <option name="screenY" value="1280" />
16
+ </PersistentDeviceSelectionData>
17
+ <PersistentDeviceSelectionData>
18
+ <option name="api" value="34" />
19
+ <option name="brand" value="OPPO" />
20
+ <option name="codename" value="OP573DL1" />
21
+ <option name="id" value="OP573DL1" />
22
+ <option name="manufacturer" value="OPPO" />
23
+ <option name="name" value="CPH2557" />
24
+ <option name="screenDensity" value="480" />
25
+ <option name="screenX" value="1080" />
26
+ <option name="screenY" value="2400" />
27
+ </PersistentDeviceSelectionData>
28
+ <PersistentDeviceSelectionData>
29
+ <option name="api" value="28" />
30
+ <option name="brand" value="DOCOMO" />
31
+ <option name="codename" value="SH-01L" />
32
+ <option name="id" value="SH-01L" />
33
+ <option name="manufacturer" value="SHARP" />
34
+ <option name="name" value="AQUOS sense2 SH-01L" />
35
+ <option name="screenDensity" value="480" />
36
+ <option name="screenX" value="1080" />
37
+ <option name="screenY" value="2160" />
38
+ </PersistentDeviceSelectionData>
39
+ <PersistentDeviceSelectionData>
40
+ <option name="api" value="34" />
41
+ <option name="brand" value="Lenovo" />
42
+ <option name="codename" value="TB370FU" />
43
+ <option name="id" value="TB370FU" />
44
+ <option name="manufacturer" value="Lenovo" />
45
+ <option name="name" value="Tab P12" />
46
+ <option name="screenDensity" value="340" />
47
+ <option name="screenX" value="1840" />
48
+ <option name="screenY" value="2944" />
49
+ </PersistentDeviceSelectionData>
50
+ <PersistentDeviceSelectionData>
51
+ <option name="api" value="31" />
52
+ <option name="brand" value="samsung" />
53
+ <option name="codename" value="a51" />
54
+ <option name="id" value="a51" />
55
+ <option name="manufacturer" value="Samsung" />
56
+ <option name="name" value="Galaxy A51" />
57
+ <option name="screenDensity" value="420" />
58
+ <option name="screenX" value="1080" />
59
+ <option name="screenY" value="2400" />
60
+ </PersistentDeviceSelectionData>
61
+ <PersistentDeviceSelectionData>
62
+ <option name="api" value="34" />
63
+ <option name="brand" value="google" />
64
+ <option name="codename" value="akita" />
65
+ <option name="id" value="akita" />
66
+ <option name="manufacturer" value="Google" />
67
+ <option name="name" value="Pixel 8a" />
68
+ <option name="screenDensity" value="420" />
69
+ <option name="screenX" value="1080" />
70
+ <option name="screenY" value="2400" />
71
+ </PersistentDeviceSelectionData>
72
+ <PersistentDeviceSelectionData>
73
+ <option name="api" value="33" />
74
+ <option name="brand" value="samsung" />
75
+ <option name="codename" value="b0q" />
76
+ <option name="id" value="b0q" />
77
+ <option name="manufacturer" value="Samsung" />
78
+ <option name="name" value="Galaxy S22 Ultra" />
79
+ <option name="screenDensity" value="600" />
80
+ <option name="screenX" value="1440" />
81
+ <option name="screenY" value="3088" />
82
+ </PersistentDeviceSelectionData>
83
+ <PersistentDeviceSelectionData>
84
+ <option name="api" value="32" />
85
+ <option name="brand" value="google" />
86
+ <option name="codename" value="bluejay" />
87
+ <option name="id" value="bluejay" />
88
+ <option name="manufacturer" value="Google" />
89
+ <option name="name" value="Pixel 6a" />
90
+ <option name="screenDensity" value="420" />
91
+ <option name="screenX" value="1080" />
92
+ <option name="screenY" value="2400" />
93
+ </PersistentDeviceSelectionData>
94
+ <PersistentDeviceSelectionData>
95
+ <option name="api" value="34" />
96
+ <option name="brand" value="google" />
97
+ <option name="codename" value="caiman" />
98
+ <option name="id" value="caiman" />
99
+ <option name="manufacturer" value="Google" />
100
+ <option name="name" value="Pixel 9 Pro" />
101
+ <option name="screenDensity" value="360" />
102
+ <option name="screenX" value="960" />
103
+ <option name="screenY" value="2142" />
104
+ </PersistentDeviceSelectionData>
105
+ <PersistentDeviceSelectionData>
106
+ <option name="api" value="34" />
107
+ <option name="brand" value="google" />
108
+ <option name="codename" value="comet" />
109
+ <option name="id" value="comet" />
110
+ <option name="manufacturer" value="Google" />
111
+ <option name="name" value="Pixel 9 Pro Fold" />
112
+ <option name="screenDensity" value="390" />
113
+ <option name="screenX" value="2076" />
114
+ <option name="screenY" value="2152" />
115
+ </PersistentDeviceSelectionData>
116
+ <PersistentDeviceSelectionData>
117
+ <option name="api" value="29" />
118
+ <option name="brand" value="samsung" />
119
+ <option name="codename" value="crownqlteue" />
120
+ <option name="id" value="crownqlteue" />
121
+ <option name="manufacturer" value="Samsung" />
122
+ <option name="name" value="Galaxy Note9" />
123
+ <option name="screenDensity" value="420" />
124
+ <option name="screenX" value="2220" />
125
+ <option name="screenY" value="1080" />
126
+ </PersistentDeviceSelectionData>
127
+ <PersistentDeviceSelectionData>
128
+ <option name="api" value="34" />
129
+ <option name="brand" value="samsung" />
130
+ <option name="codename" value="dm3q" />
131
+ <option name="id" value="dm3q" />
132
+ <option name="manufacturer" value="Samsung" />
133
+ <option name="name" value="Galaxy S23 Ultra" />
134
+ <option name="screenDensity" value="600" />
135
+ <option name="screenX" value="1440" />
136
+ <option name="screenY" value="3088" />
137
+ </PersistentDeviceSelectionData>
138
+ <PersistentDeviceSelectionData>
139
+ <option name="api" value="34" />
140
+ <option name="brand" value="samsung" />
141
+ <option name="codename" value="e1q" />
142
+ <option name="id" value="e1q" />
143
+ <option name="manufacturer" value="Samsung" />
144
+ <option name="name" value="Galaxy S24" />
145
+ <option name="screenDensity" value="480" />
146
+ <option name="screenX" value="1080" />
147
+ <option name="screenY" value="2340" />
148
+ </PersistentDeviceSelectionData>
149
+ <PersistentDeviceSelectionData>
150
+ <option name="api" value="33" />
151
+ <option name="brand" value="google" />
152
+ <option name="codename" value="felix" />
153
+ <option name="id" value="felix" />
154
+ <option name="manufacturer" value="Google" />
155
+ <option name="name" value="Pixel Fold" />
156
+ <option name="screenDensity" value="420" />
157
+ <option name="screenX" value="2208" />
158
+ <option name="screenY" value="1840" />
159
+ </PersistentDeviceSelectionData>
160
+ <PersistentDeviceSelectionData>
161
+ <option name="api" value="34" />
162
+ <option name="brand" value="google" />
163
+ <option name="codename" value="felix" />
164
+ <option name="id" value="felix" />
165
+ <option name="manufacturer" value="Google" />
166
+ <option name="name" value="Pixel Fold" />
167
+ <option name="screenDensity" value="420" />
168
+ <option name="screenX" value="2208" />
169
+ <option name="screenY" value="1840" />
170
+ </PersistentDeviceSelectionData>
171
+ <PersistentDeviceSelectionData>
172
+ <option name="api" value="33" />
173
+ <option name="brand" value="google" />
174
+ <option name="codename" value="felix_camera" />
175
+ <option name="id" value="felix_camera" />
176
+ <option name="manufacturer" value="Google" />
177
+ <option name="name" value="Pixel Fold (Camera-enabled)" />
178
+ <option name="screenDensity" value="420" />
179
+ <option name="screenX" value="2208" />
180
+ <option name="screenY" value="1840" />
181
+ </PersistentDeviceSelectionData>
182
+ <PersistentDeviceSelectionData>
183
+ <option name="api" value="33" />
184
+ <option name="brand" value="samsung" />
185
+ <option name="codename" value="gts8uwifi" />
186
+ <option name="id" value="gts8uwifi" />
187
+ <option name="manufacturer" value="Samsung" />
188
+ <option name="name" value="Galaxy Tab S8 Ultra" />
189
+ <option name="screenDensity" value="320" />
190
+ <option name="screenX" value="1848" />
191
+ <option name="screenY" value="2960" />
192
+ </PersistentDeviceSelectionData>
193
+ <PersistentDeviceSelectionData>
194
+ <option name="api" value="34" />
195
+ <option name="brand" value="google" />
196
+ <option name="codename" value="husky" />
197
+ <option name="id" value="husky" />
198
+ <option name="manufacturer" value="Google" />
199
+ <option name="name" value="Pixel 8 Pro" />
200
+ <option name="screenDensity" value="390" />
201
+ <option name="screenX" value="1008" />
202
+ <option name="screenY" value="2244" />
203
+ </PersistentDeviceSelectionData>
204
+ <PersistentDeviceSelectionData>
205
+ <option name="api" value="30" />
206
+ <option name="brand" value="motorola" />
207
+ <option name="codename" value="java" />
208
+ <option name="id" value="java" />
209
+ <option name="manufacturer" value="Motorola" />
210
+ <option name="name" value="G20" />
211
+ <option name="screenDensity" value="280" />
212
+ <option name="screenX" value="720" />
213
+ <option name="screenY" value="1600" />
214
+ </PersistentDeviceSelectionData>
215
+ <PersistentDeviceSelectionData>
216
+ <option name="api" value="34" />
217
+ <option name="brand" value="google" />
218
+ <option name="codename" value="komodo" />
219
+ <option name="id" value="komodo" />
220
+ <option name="manufacturer" value="Google" />
221
+ <option name="name" value="Pixel 9 Pro XL" />
222
+ <option name="screenDensity" value="360" />
223
+ <option name="screenX" value="1008" />
224
+ <option name="screenY" value="2244" />
225
+ </PersistentDeviceSelectionData>
226
+ <PersistentDeviceSelectionData>
227
+ <option name="api" value="33" />
228
+ <option name="brand" value="google" />
229
+ <option name="codename" value="lynx" />
230
+ <option name="id" value="lynx" />
231
+ <option name="manufacturer" value="Google" />
232
+ <option name="name" value="Pixel 7a" />
233
+ <option name="screenDensity" value="420" />
234
+ <option name="screenX" value="1080" />
235
+ <option name="screenY" value="2400" />
236
+ </PersistentDeviceSelectionData>
237
+ <PersistentDeviceSelectionData>
238
+ <option name="api" value="31" />
239
+ <option name="brand" value="google" />
240
+ <option name="codename" value="oriole" />
241
+ <option name="id" value="oriole" />
242
+ <option name="manufacturer" value="Google" />
243
+ <option name="name" value="Pixel 6" />
244
+ <option name="screenDensity" value="420" />
245
+ <option name="screenX" value="1080" />
246
+ <option name="screenY" value="2400" />
247
+ </PersistentDeviceSelectionData>
248
+ <PersistentDeviceSelectionData>
249
+ <option name="api" value="33" />
250
+ <option name="brand" value="google" />
251
+ <option name="codename" value="panther" />
252
+ <option name="id" value="panther" />
253
+ <option name="manufacturer" value="Google" />
254
+ <option name="name" value="Pixel 7" />
255
+ <option name="screenDensity" value="420" />
256
+ <option name="screenX" value="1080" />
257
+ <option name="screenY" value="2400" />
258
+ </PersistentDeviceSelectionData>
259
+ <PersistentDeviceSelectionData>
260
+ <option name="api" value="34" />
261
+ <option name="brand" value="samsung" />
262
+ <option name="codename" value="q5q" />
263
+ <option name="id" value="q5q" />
264
+ <option name="manufacturer" value="Samsung" />
265
+ <option name="name" value="Galaxy Z Fold5" />
266
+ <option name="screenDensity" value="420" />
267
+ <option name="screenX" value="1812" />
268
+ <option name="screenY" value="2176" />
269
+ </PersistentDeviceSelectionData>
270
+ <PersistentDeviceSelectionData>
271
+ <option name="api" value="34" />
272
+ <option name="brand" value="samsung" />
273
+ <option name="codename" value="q6q" />
274
+ <option name="id" value="q6q" />
275
+ <option name="manufacturer" value="Samsung" />
276
+ <option name="name" value="Galaxy Z Fold6" />
277
+ <option name="screenDensity" value="420" />
278
+ <option name="screenX" value="1856" />
279
+ <option name="screenY" value="2160" />
280
+ </PersistentDeviceSelectionData>
281
+ <PersistentDeviceSelectionData>
282
+ <option name="api" value="30" />
283
+ <option name="brand" value="google" />
284
+ <option name="codename" value="r11" />
285
+ <option name="id" value="r11" />
286
+ <option name="manufacturer" value="Google" />
287
+ <option name="name" value="Pixel Watch" />
288
+ <option name="screenDensity" value="320" />
289
+ <option name="screenX" value="384" />
290
+ <option name="screenY" value="384" />
291
+ <option name="type" value="WEAR_OS" />
292
+ </PersistentDeviceSelectionData>
293
+ <PersistentDeviceSelectionData>
294
+ <option name="api" value="30" />
295
+ <option name="brand" value="google" />
296
+ <option name="codename" value="redfin" />
297
+ <option name="id" value="redfin" />
298
+ <option name="manufacturer" value="Google" />
299
+ <option name="name" value="Pixel 5" />
300
+ <option name="screenDensity" value="440" />
301
+ <option name="screenX" value="1080" />
302
+ <option name="screenY" value="2340" />
303
+ </PersistentDeviceSelectionData>
304
+ <PersistentDeviceSelectionData>
305
+ <option name="api" value="34" />
306
+ <option name="brand" value="google" />
307
+ <option name="codename" value="shiba" />
308
+ <option name="id" value="shiba" />
309
+ <option name="manufacturer" value="Google" />
310
+ <option name="name" value="Pixel 8" />
311
+ <option name="screenDensity" value="420" />
312
+ <option name="screenX" value="1080" />
313
+ <option name="screenY" value="2400" />
314
+ </PersistentDeviceSelectionData>
315
+ <PersistentDeviceSelectionData>
316
+ <option name="api" value="33" />
317
+ <option name="brand" value="google" />
318
+ <option name="codename" value="tangorpro" />
319
+ <option name="id" value="tangorpro" />
320
+ <option name="manufacturer" value="Google" />
321
+ <option name="name" value="Pixel Tablet" />
322
+ <option name="screenDensity" value="320" />
323
+ <option name="screenX" value="1600" />
324
+ <option name="screenY" value="2560" />
325
+ </PersistentDeviceSelectionData>
326
+ <PersistentDeviceSelectionData>
327
+ <option name="api" value="34" />
328
+ <option name="brand" value="google" />
329
+ <option name="codename" value="tokay" />
330
+ <option name="id" value="tokay" />
331
+ <option name="manufacturer" value="Google" />
332
+ <option name="name" value="Pixel 9" />
333
+ <option name="screenDensity" value="420" />
334
+ <option name="screenX" value="1080" />
335
+ <option name="screenY" value="2424" />
336
+ </PersistentDeviceSelectionData>
337
+ </list>
338
+ </option>
339
+ </component>
340
+ </project>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="JAVA_MODULE" version="4">
3
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
4
+ <exclude-output />
5
+ <content url="file://$MODULE_DIR$" />
6
+ <orderEntry type="inheritedJdk" />
7
+ <orderEntry type="sourceFolder" forTests="false" />
8
+ </component>
9
+ </module>
package/.idea/misc.xml ADDED
@@ -0,0 +1,5 @@
1
+ <project version="4">
2
+ <component name="ProjectRootManager">
3
+ <output url="file://$PROJECT_DIR$/out" />
4
+ </component>
5
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/em-MobileCheckoutSDK-ReactNative.iml" filepath="$PROJECT_DIR$/.idea/em-MobileCheckoutSDK-ReactNative.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
package/README.md CHANGED
@@ -19,7 +19,7 @@ Add the EasyMerchant SDK to your `package.json` under `dependencies`:
19
19
 
20
20
  ```json
21
21
  "dependencies": {
22
- "@jimrising/easymerchantsdk-react-native": "^2.3.9"
22
+ "@jimrising/easymerchantsdk-react-native": "^2.4.1"
23
23
  }
24
24
  ```
25
25
 
@@ -61,7 +61,11 @@ GITHUB_PASSWORD=your-github-token
61
61
 
62
62
  ### 3. iOS Configuration
63
63
 
64
- 1. **Update AppDelegate.swift**
64
+ 1. **Update AppDelegate**
65
+
66
+ You can configure the `AppDelegate` file in either Swift or Objective-C, depending on your project setup. Below are examples for both.
67
+
68
+ ##### Option 1: Swift (`AppDelegate.swift`)
65
69
 
66
70
  Modify `ios/AppDelegate.swift` to initialize the React Native bridge and set up the EasyMerchant SDK:
67
71
 
@@ -72,50 +76,117 @@ import React
72
76
 
73
77
  @UIApplicationMain
74
78
  class AppDelegate: UIResponder, UIApplicationDelegate {
75
- var window: UIWindow?
76
-
77
- func application(
78
- _ application: UIApplication,
79
- didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
80
- ) -> Bool {
81
- let jsCodeLocation: URL
82
-
83
- #if DEBUG
84
- jsCodeLocation = URL(string: "http://localhost:8081/index.bundle?platform=ios")!
85
- #else
86
- jsCodeLocation = Bundle.main.url(forResource: "main", withExtension: "jsbundle")!
87
- #endif
88
-
89
- let bridge = RCTBridge(
90
- bundleURL: jsCodeLocation,
91
- moduleProvider: nil,
92
- launchOptions: launchOptions
93
- )
94
-
95
- guard let validBridge = bridge else {
96
- fatalError("React Native bridge failed to initialize.")
79
+ var window: UIWindow?
80
+
81
+ func application(
82
+ _ application: UIApplication,
83
+ didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
84
+ ) -> Bool {
85
+ let jsCodeLocation: URL
86
+
87
+ #if DEBUG
88
+ jsCodeLocation = URL(string: "http://localhost:8081/index.bundle?platform=ios")!
89
+ #else
90
+ jsCodeLocation = Bundle.main.url(forResource: "main", withExtension: "jsbundle")!
91
+ #endif
92
+
93
+ let bridge = RCTBridge(
94
+ bundleURL: jsCodeLocation,
95
+ moduleProvider: nil,
96
+ launchOptions: launchOptions
97
+ )
98
+
99
+ guard let validBridge = bridge else {
100
+ fatalError("React Native bridge failed to initialize.")
101
+ }
102
+
103
+ let rootView = RCTRootView(
104
+ bridge: validBridge,
105
+ moduleName: "EasyMerchantTestApp", // Replace with your app name
106
+ initialProperties: nil
107
+ )
108
+
109
+ self.window = UIWindow(frame: UIScreen.main.bounds)
110
+ let rootViewController = UIViewController()
111
+ rootViewController.view = rootView
112
+ self.window?.rootViewController = rootViewController
113
+ self.window?.makeKeyAndVisible()
114
+
115
+ if let easyMerchantSdkPlugin = bridge?.module(for: EasyMerchantSdkPlugin.self) as? EasyMerchantSdkPlugin {
116
+ easyMerchantSdkPlugin.setViewController(rootViewController)
117
+ } else {
118
+ print("Failed to retrieve EasyMerchantSdkPlugin instance from React Native bridge.")
119
+ }
120
+ return true
121
+ }
122
+
123
+ // MARK: - Deep Link Handling for GrailPay
124
+
125
+ func application(
126
+ _ app: UIApplication,
127
+ open url: URL,
128
+ options: [UIApplication.OpenURLOptionsKey : Any] = [:]
129
+ ) -> Bool {
130
+ print("🔗 Deep link received: \(url)")
131
+
132
+ if url.scheme == "grailpay" && url.host == "callback" {
133
+ print("✅ GrailPay callback detected")
134
+ GrailPayHelper.handleDeepLinkCallback(url: url)
135
+ return true
136
+ }
137
+
138
+ return false
97
139
  }
140
+ }
141
+ ```
98
142
 
99
- let rootView = RCTRootView(
100
- bridge: validBridge,
101
- moduleName: "EasyMerchantTestApp", // Replace with your app's module name
102
- initialProperties: nil
103
- )
143
+ ##### Option 2: Objective-C (`AppDelegate.mm`)
104
144
 
105
- self.window = UIWindow(frame: UIScreen.main.bounds)
106
- let rootViewController = UIViewController()
107
- rootViewController.view = rootView
108
- self.window?.rootViewController = rootViewController
109
- self.window?.makeKeyAndVisible()
145
+ For projects using Objective-C, modify `ios/AppDelegate.mm` to initialize the React Native bridge and handle GrailPay deep links:
110
146
 
111
- if let easyMerchantSdkPlugin = validBridge.module(for: EasyMerchantSdkPlugin.self) as? EasyMerchantSdkPlugin {
112
- easyMerchantSdkPlugin.setViewController(rootViewController)
113
- } else {
114
- print("Failed to retrieve EasyMerchantSdkPlugin instance from React Native bridge.")
115
- }
116
- return true
117
- }
147
+ ```objc
148
+ #import "AppDelegate.h"
149
+ #import <React/RCTBundleURLProvider.h>
150
+ #import <easymerchantsdk/EasyMerchantSdk.h>
151
+
152
+ @implementation AppDelegate
153
+
154
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
155
+ {
156
+ self.moduleName = @"SampleApp"; // Replace with your app name
157
+ // You can add your custom initial props in the dictionary below.
158
+ // They will be passed down to the ViewController used by React Native.
159
+ self.initialProps = @{};
160
+
161
+ return [super application:application didFinishLaunchingWithOptions:launchOptions];
162
+ }
163
+
164
+ - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
165
+ {
166
+ return [self bundleURL];
167
+ }
168
+
169
+ - (NSURL *)bundleURL
170
+ {
171
+ #if DEBUG
172
+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
173
+ #else
174
+ return [[NSBundle mainBundle] URLForResource:@"main" withExtension:"jsbundle"];
175
+ #endif
118
176
  }
177
+
178
+ // MARK: - Deep Link Handling for GrailPay
179
+ // Forward deep links to the SDK for handling
180
+
181
+ - (BOOL)application:(UIApplication *)app
182
+ openURL:(NSURL *)url
183
+ options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
184
+ {
185
+ // Let the SDK handle GrailPay deep links
186
+ return [EasyMerchantSdk handleDeepLink:url];
187
+ }
188
+
189
+ @end
119
190
  ```
120
191
 
121
192
  2. **Update Podfile**
@@ -518,4 +589,4 @@ const checkPaymentReference = async (refToken) => {
518
589
  - Android uses a direct object for `makePayment` and `makePaymentV2`; iOS requires a JSON string.
519
590
  - `makePayment` on iOS requires environment initialization; `makePaymentV2` does not.
520
591
  - Android supports event listeners; iOS uses direct method responses.
521
- - **Client Token**: Required for `makePaymentV2`. Obtain via the payment intent API (`/api/v1/paymentintent`).
592
+ - **Client Token**: Required for `makePaymentV2`. Obtain via the payment intent API (`/api/v1/paymentintent`).
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Automatically generated file. DO NOT MODIFY
3
+ */
4
+ package com.reactlibrary;
5
+
6
+ public final class BuildConfig {
7
+ public static final boolean DEBUG = Boolean.parseBoolean("true");
8
+ public static final String LIBRARY_PACKAGE_NAME = "com.reactlibrary";
9
+ public static final String BUILD_TYPE = "debug";
10
+ }
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
+ package="com.reactlibrary" >
4
+
5
+ <uses-sdk android:minSdkVersion="16" />
6
+
7
+ </manifest>
@@ -0,0 +1,18 @@
1
+ {
2
+ "version": 3,
3
+ "artifactType": {
4
+ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
5
+ "kind": "Directory"
6
+ },
7
+ "applicationId": "com.reactlibrary",
8
+ "variantName": "debug",
9
+ "elements": [
10
+ {
11
+ "type": "SINGLE",
12
+ "filters": [],
13
+ "attributes": [],
14
+ "outputFile": "AndroidManifest.xml"
15
+ }
16
+ ],
17
+ "elementType": "File"
18
+ }
@@ -0,0 +1,6 @@
1
+ aarFormatVersion=1.0
2
+ aarMetadataVersion=1.0
3
+ minCompileSdk=1
4
+ minCompileSdkExtension=0
5
+ minAndroidGradlePluginVersion=1.0.0
6
+ coreLibraryDesugaringEnabled=false
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~:!&lt;dir>navigation"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~:!&lt;dir>navigation"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~:!&lt;dir>navigation"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/main/assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet></merger>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/piavan/Workspace/lyfecycle/lyfecycle-sample-RN-sdk/node_modules/@jimrising/easymerchantsdk-react-native/android/src/debug/jniLibs"/></dataSet></merger>