@yuno-payments/yuno-sdk-react-native 1.0.16 → 1.0.17-rc.10

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.
@@ -1,19 +1,29 @@
1
1
  import { NativeModules, NativeEventEmitter, Platform } from 'react-native';
2
2
  import { YunoLanguage, CardFlow } from './core/enums';
3
- const LINKING_ERROR = `The package '@y.uno/yuno-sdk-react-native' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
3
+ const LINKING_ERROR = `The package '@yuno/yuno-sdk-react-native' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
4
4
  ios: "- Run 'pod install'\n",
5
5
  default: ''
6
6
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
7
- const YunoSdkNative = NativeModules.YunoSdk ? NativeModules.YunoSdk : new Proxy({}, {
8
- get() {
7
+
8
+ /**
9
+ * Devuelve el módulo nativo YunoSdk o lanza un error de linking
10
+ */
11
+ function getYunoNative() {
12
+ const native = NativeModules.YunoSdk;
13
+ if (!native) {
9
14
  throw new Error(LINKING_ERROR);
10
15
  }
11
- });
16
+ return native;
17
+ }
12
18
 
13
19
  /**
14
- * Event emitter for Yuno SDK events.
20
+ * Devuelve un NativeEventEmitter para el módulo YunoSdk
21
+ * Se crea sólo cuando hace falta (no en top-level).
15
22
  */
16
- const eventEmitter = new NativeEventEmitter(YunoSdkNative);
23
+ function getYunoEventEmitter() {
24
+ const native = getYunoNative();
25
+ return new NativeEventEmitter(native);
26
+ }
17
27
 
18
28
  /**
19
29
  * Payment state event data.
@@ -58,10 +68,10 @@ export class YunoSdk {
58
68
  /**
59
69
  * Marks the SDK as initialized without calling the native initialize method.
60
70
  * This is useful when the SDK has been initialized from the native side (e.g., in MainActivity/YunoActivity).
61
- *
71
+ *
62
72
  * @param countryCode - ISO country code (e.g., 'US', 'BR', 'CO')
63
73
  * @param language - Optional language setting (defaults to EN)
64
- *
74
+ *
65
75
  * @internal
66
76
  */
67
77
  static markAsInitialized(countryCode = 'CO', language = YunoLanguage.EN) {
@@ -119,7 +129,7 @@ export class YunoSdk {
119
129
  // Store country code and language
120
130
  this.countryCode = countryCode;
121
131
  this.language = config.lang;
122
- await YunoSdkNative.initialize(apiKey, countryCode, config, iosConfig, androidConfig);
132
+ await getYunoNative().initialize(apiKey, countryCode, config, iosConfig, androidConfig);
123
133
  this.isInitialized = true;
124
134
  }
125
135
 
@@ -143,7 +153,7 @@ export class YunoSdk {
143
153
  ...params,
144
154
  countryCode: params.countryCode ?? this.getCountryCode()
145
155
  };
146
- return YunoSdkNative.enrollmentPayment(args);
156
+ return getYunoNative().enrollmentPayment(args);
147
157
  }
148
158
 
149
159
  /**
@@ -167,7 +177,7 @@ export class YunoSdk {
167
177
  static async startPaymentLite(params, countryCode) {
168
178
  this.checkInitialized();
169
179
  const code = countryCode ?? this.getCountryCode();
170
- return YunoSdkNative.startPaymentLite(params, code);
180
+ return getYunoNative().startPaymentLite(params, code);
171
181
  }
172
182
 
173
183
  /**
@@ -182,7 +192,7 @@ export class YunoSdk {
182
192
  */
183
193
  static async startPayment(showPaymentStatus = true) {
184
194
  this.checkInitialized();
185
- return YunoSdkNative.startPayment(showPaymentStatus);
195
+ return getYunoNative().startPayment(showPaymentStatus);
186
196
  }
187
197
 
188
198
  /**
@@ -200,7 +210,7 @@ export class YunoSdk {
200
210
  static async continuePayment(checkoutSession, countryCode, showPaymentStatus = true) {
201
211
  this.checkInitialized();
202
212
  const code = countryCode ?? this.getCountryCode();
203
- return YunoSdkNative.continuePayment(checkoutSession, code, showPaymentStatus);
213
+ return getYunoNative().continuePayment(checkoutSession, code, showPaymentStatus);
204
214
  }
205
215
 
206
216
  /**
@@ -229,7 +239,7 @@ export class YunoSdk {
229
239
  ...params,
230
240
  countryCode: params.countryCode ?? this.getCountryCode()
231
241
  };
232
- const statusString = await YunoSdkNative.startPaymentSeamlessLite(args, this.getLanguage());
242
+ const statusString = await getYunoNative().startPaymentSeamlessLite(args, this.getLanguage());
233
243
  return statusString;
234
244
  }
235
245
 
@@ -243,7 +253,7 @@ export class YunoSdk {
243
253
  */
244
254
  static async hideLoader() {
245
255
  this.checkInitialized();
246
- return YunoSdkNative.hideLoader();
256
+ return getYunoNative().hideLoader();
247
257
  }
248
258
 
249
259
  /**
@@ -266,7 +276,7 @@ export class YunoSdk {
266
276
  return;
267
277
  }
268
278
  this.checkInitialized();
269
- return YunoSdkNative.receiveDeeplink(url);
279
+ return getYunoNative().receiveDeeplink(url);
270
280
  }
271
281
 
272
282
  /**
@@ -286,7 +296,7 @@ export class YunoSdk {
286
296
  * ```
287
297
  */
288
298
  static async getLastOneTimeToken() {
289
- return YunoSdkNative.getLastOneTimeToken();
299
+ return getYunoNative().getLastOneTimeToken();
290
300
  }
291
301
 
292
302
  /**
@@ -303,16 +313,16 @@ export class YunoSdk {
303
313
  * ```
304
314
  */
305
315
  static async getLastOneTimeTokenInfo() {
306
- return YunoSdkNative.getLastOneTimeTokenInfo();
316
+ return getYunoNative().getLastOneTimeTokenInfo();
307
317
  }
308
318
 
309
319
  /**
310
320
  * Clears the last OTT tokens stored by the SDK.
311
321
  * This is useful to ensure clean state before starting a new payment flow.
312
- *
322
+ *
313
323
  * Note: This is automatically called at the start of each payment/enrollment flow,
314
324
  * but you can call it manually if needed.
315
- *
325
+ *
316
326
  * @example
317
327
  * ```typescript
318
328
  * // Clear OTT before starting a new payment
@@ -320,7 +330,25 @@ export class YunoSdk {
320
330
  * ```
321
331
  */
322
332
  static async clearLastOneTimeToken() {
323
- return YunoSdkNative.clearLastOneTimeToken();
333
+ return getYunoNative().clearLastOneTimeToken();
334
+ }
335
+
336
+ /**
337
+ * Clears the last stored payment status.
338
+ * This should be called at the start of each new payment flow
339
+ * to prevent stale status from previous flows affecting new transactions.
340
+ *
341
+ * @returns Promise that resolves when the status is cleared
342
+ *
343
+ * @example
344
+ * ```typescript
345
+ * // Clear payment status before starting a new flow
346
+ * await YunoSdk.clearLastPaymentStatus();
347
+ * await YunoSdk.startPayment({ checkoutSession, countryCode });
348
+ * ```
349
+ */
350
+ static async clearLastPaymentStatus() {
351
+ return getYunoNative().clearLastPaymentStatus();
324
352
  }
325
353
 
326
354
  /**
@@ -346,7 +374,8 @@ export class YunoSdk {
346
374
  * ```
347
375
  */
348
376
  static onPaymentStatus(listener) {
349
- const subscription = eventEmitter.addListener('YunoPaymentStatus', listener);
377
+ const emitter = getYunoEventEmitter();
378
+ const subscription = emitter.addListener('YunoPaymentStatus', listener);
350
379
  return {
351
380
  remove: () => subscription.remove()
352
381
  };
@@ -375,7 +404,8 @@ export class YunoSdk {
375
404
  * ```
376
405
  */
377
406
  static onEnrollmentStatus(listener) {
378
- const subscription = eventEmitter.addListener('YunoEnrollmentStatus', listener);
407
+ const emitter = getYunoEventEmitter();
408
+ const subscription = emitter.addListener('YunoEnrollmentStatus', listener);
379
409
  return {
380
410
  remove: () => subscription.remove()
381
411
  };
@@ -398,7 +428,8 @@ export class YunoSdk {
398
428
  * ```
399
429
  */
400
430
  static onOneTimeToken(listener) {
401
- const subscription = eventEmitter.addListener('YunoOneTimeToken', listener);
431
+ const emitter = getYunoEventEmitter();
432
+ const subscription = emitter.addListener('YunoOneTimeToken', listener);
402
433
  return {
403
434
  remove: () => subscription.remove()
404
435
  };
@@ -422,7 +453,8 @@ export class YunoSdk {
422
453
  * ```
423
454
  */
424
455
  static onOneTimeTokenInfo(listener) {
425
- const subscription = eventEmitter.addListener('YunoOneTimeTokenInfo', listener);
456
+ const emitter = getYunoEventEmitter();
457
+ const subscription = emitter.addListener('YunoOneTimeTokenInfo', listener);
426
458
  return {
427
459
  remove: () => subscription.remove()
428
460
  };
@@ -444,5 +476,132 @@ export class YunoSdk {
444
476
  }
445
477
  return this.language;
446
478
  }
479
+
480
+ // ==================== HEADLESS PAYMENT FLOW ====================
481
+
482
+ /**
483
+ * Generate a one-time token (OTT) from collected payment data using the headless flow.
484
+ * This method allows you to tokenize payment information without using the UI components.
485
+ *
486
+ * @param tokenCollectedData The payment data to tokenize
487
+ * @param checkoutSession The checkout session ID
488
+ * @param countryCode The country code for the payment (optional, uses initialized value if not provided)
489
+ * @returns Promise resolving to the generated token or rejecting with an error
490
+ *
491
+ * @example
492
+ * ```typescript
493
+ * import { YunoSdk, CardType } from '@yuno-payments/yuno-sdk-react-native';
494
+ *
495
+ * try {
496
+ * const result = await YunoSdk.generateToken({
497
+ * checkoutSession: '73ed16c5-4481-4dce-af42-404b68e21027',
498
+ * paymentMethod: {
499
+ * type: 'CARD',
500
+ * vaultedToken: null,
501
+ * card: {
502
+ * save: false,
503
+ * detail: {
504
+ * expirationMonth: 11,
505
+ * expirationYear: 25,
506
+ * number: '4000000000001091',
507
+ * securityCode: '123',
508
+ * holderName: 'John Doe',
509
+ * type: CardType.CREDIT,
510
+ * },
511
+ * },
512
+ * },
513
+ * }, 'checkoutSessionId', 'BR');
514
+ *
515
+ * console.log('Token:', result.token);
516
+ * } catch (error) {
517
+ * console.error('Token generation failed:', error);
518
+ * }
519
+ * ```
520
+ */
521
+ static async generateToken(tokenCollectedData, checkoutSession, countryCode) {
522
+ const native = getYunoNative();
523
+ const country = countryCode || this.getCountryCode();
524
+ return native.generateToken(tokenCollectedData, checkoutSession, country);
525
+ }
526
+
527
+ /**
528
+ * Get the 3D Secure challenge URL for a checkout session using the headless flow.
529
+ * This is typically called after successfully generating a token to handle 3DS verification.
530
+ *
531
+ * @param checkoutSession The checkout session ID
532
+ * @param countryCode The country code for the payment (optional, uses initialized value if not provided)
533
+ * @returns Promise resolving to the 3DS challenge response
534
+ *
535
+ * @example
536
+ * ```typescript
537
+ * import { YunoSdk } from '@yuno-payments/yuno-sdk-react-native';
538
+ *
539
+ * try {
540
+ * // First generate token
541
+ * const tokenResult = await YunoSdk.generateToken(paymentData, checkoutSession, 'BR');
542
+ *
543
+ * // Then get 3DS challenge URL if needed
544
+ * const challengeResult = await YunoSdk.getThreeDSecureChallenge(checkoutSession, 'BR');
545
+ *
546
+ * if (challengeResult.type === 'URL') {
547
+ * console.log('3DS URL:', challengeResult.data);
548
+ * // Open this URL in a WebView for the user to complete 3DS verification
549
+ * }
550
+ * } catch (error) {
551
+ * console.error('3DS challenge failed:', error);
552
+ * }
553
+ * ```
554
+ */
555
+ static async getThreeDSecureChallenge(checkoutSession, countryCode) {
556
+ const native = getYunoNative();
557
+ const country = countryCode || this.getCountryCode();
558
+ return native.getThreeDSecureChallenge(checkoutSession, country);
559
+ }
560
+
561
+ // ==================== HEADLESS ENROLLMENT FLOW ====================
562
+
563
+ /**
564
+ * Continue enrollment to create a vaulted token from collected payment data using the headless flow.
565
+ * This method allows you to save payment information without using the UI components.
566
+ *
567
+ * @param enrollmentCollectedData The enrollment data to process
568
+ * @param customerSession The customer session ID
569
+ * @param countryCode The country code for the enrollment (optional, uses initialized value if not provided)
570
+ * @returns Promise resolving to the vaulted token or rejecting with an error
571
+ *
572
+ * @example
573
+ * ```typescript
574
+ * import { YunoSdk, CardType } from '@yuno-payments/yuno-sdk-react-native';
575
+ *
576
+ * try {
577
+ * const result = await YunoSdk.continueEnrollment({
578
+ * customerSession: '73ed16c5-4481-4dce-af42-404b68e21027',
579
+ * paymentMethod: {
580
+ * type: 'CARD',
581
+ * card: {
582
+ * save: true,
583
+ * detail: {
584
+ * expirationMonth: 11,
585
+ * expirationYear: 25,
586
+ * number: '4000000000001091',
587
+ * securityCode: '123',
588
+ * holderName: 'John Doe',
589
+ * type: CardType.CREDIT,
590
+ * },
591
+ * },
592
+ * },
593
+ * }, 'customerSessionId', 'BR');
594
+ *
595
+ * console.log('Vaulted Token:', result.vaultedToken);
596
+ * } catch (error) {
597
+ * console.error('Enrollment failed:', error);
598
+ * }
599
+ * ```
600
+ */
601
+ static async continueEnrollment(enrollmentCollectedData, customerSession, countryCode) {
602
+ const native = getYunoNative();
603
+ const country = countryCode || this.getCountryCode();
604
+ return native.continueEnrollment(enrollmentCollectedData, customerSession, country);
605
+ }
447
606
  }
448
607
  //# sourceMappingURL=YunoSdk.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","NativeEventEmitter","Platform","YunoLanguage","CardFlow","LINKING_ERROR","select","ios","default","YunoSdkNative","YunoSdk","Proxy","get","Error","eventEmitter","countryCode","language","isInitialized","markAsInitialized","EN","initialize","params","apiKey","yunoConfig","iosConfig","androidConfig","config","lang","cardFlow","ONE_STEP","saveCardEnabled","keepLoader","isDynamicViewEnabled","cardFormDeployed","enrollmentPayment","checkInitialized","args","getCountryCode","startPaymentLite","code","startPayment","showPaymentStatus","continuePayment","checkoutSession","startPaymentSeamlessLite","statusString","getLanguage","hideLoader","receiveDeeplink","url","OS","console","warn","getLastOneTimeToken","getLastOneTimeTokenInfo","clearLastOneTimeToken","onPaymentStatus","listener","subscription","addListener","remove","onEnrollmentStatus","onOneTimeToken","onOneTimeTokenInfo"],"sourceRoot":"../../src","sources":["YunoSdk.ts"],"mappings":"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CgD,EAAE,KAAK,KAAK,EAAE;MACzBC,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;MACxD;IACF;IAEA,IAAI,CAACjB,gBAAgB,CAAC,CAAC;IACvB,OAAO1B,aAAa,CAACuC,eAAe,CAACC,GAAG,CAAC;EAC3C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaI,mBAAmBA,CAAA,EAA2B;IACzD,OAAO5C,aAAa,CAAC4C,mBAAmB,CAAC,CAAC;EAC5C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,uBAAuBA,CAAA,EAAqC;IACvE,OAAO7C,aAAa,CAAC6C,uBAAuB,CAAC,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,qBAAqBA,CAAA,EAAkB;IAClD,OAAO9C,aAAa,CAAC8C,qBAAqB,CAAC,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,eAAeA,CAACC,QAA2C,EAEhE;IACA,MAAMC,YAAY,GAAG5C,YAAY,CAAC6C,WAAW,CAC3C,mBAAmB,EACnBF,QACF,CAAC;IACD,OAAO;MAAEG,MAAM,EAAEA,CAAA,KAAMF,YAAY,CAACE,MAAM,CAAC;IAAE,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,kBAAkBA,CAACJ,QAA8C,EAEtE;IACA,MAAMC,YAAY,GAAG5C,YAAY,CAAC6C,WAAW,CAC3C,sBAAsB,EACtBF,QACF,CAAC;IACD,OAAO;MAAEG,MAAM,EAAEA,CAAA,KAAMF,YAAY,CAACE,MAAM,CAAC;IAAE,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOE,cAAcA,CAACL,QAAiC,EAErD;IACA,MAAMC,YAAY,GAAG5C,YAAY,CAAC6C,WAAW,CAAC,kBAAkB,EAAEF,QAAQ,CAAC;IAC3E,OAAO;MAAEG,MAAM,EAAEA,CAAA,KAAMF,YAAY,CAACE,MAAM,CAAC;IAAE,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOG,kBAAkBA,CAACN,QAA+C,EAEvE;IACA,MAAMC,YAAY,GAAG5C,YAAY,CAAC6C,WAAW,CAAC,sBAAsB,EAAEF,QAAQ,CAAC;IAC/E,OAAO;MAAEG,MAAM,EAAEA,CAAA,KAAMF,YAAY,CAACE,MAAM,CAAC;IAAE,CAAC;EAChD;EAEA,OAAezB,gBAAgBA,CAAA,EAAS;IACtC,IAAI,CAAC,IAAI,CAAClB,aAAa,EAAE;MACvB,MAAM,IAAIJ,KAAK,CACb,8DACF,CAAC;IACH;EACF;EAEA,OAAewB,cAAcA,CAAA,EAAW;IACtC,IAAI,CAAC,IAAI,CAACtB,WAAW,EAAE;MACrB,MAAM,IAAIF,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAO,IAAI,CAACE,WAAW;EACzB;EAEA,OAAe+B,WAAWA,CAAA,EAAiB;IACzC,IAAI,CAAC,IAAI,CAAC9B,QAAQ,EAAE;MAClB,MAAM,IAAIH,KAAK,CAAC,oDAAoD,CAAC;IACvE;IACA,OAAO,IAAI,CAACG,QAAQ;EACtB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","NativeEventEmitter","Platform","YunoLanguage","CardFlow","LINKING_ERROR","select","ios","default","getYunoNative","native","YunoSdk","Error","getYunoEventEmitter","countryCode","language","isInitialized","markAsInitialized","EN","initialize","params","apiKey","yunoConfig","iosConfig","androidConfig","config","lang","cardFlow","ONE_STEP","saveCardEnabled","keepLoader","isDynamicViewEnabled","cardFormDeployed","enrollmentPayment","checkInitialized","args","getCountryCode","startPaymentLite","code","startPayment","showPaymentStatus","continuePayment","checkoutSession","startPaymentSeamlessLite","statusString","getLanguage","hideLoader","receiveDeeplink","url","OS","console","warn","getLastOneTimeToken","getLastOneTimeTokenInfo","clearLastOneTimeToken","clearLastPaymentStatus","onPaymentStatus","listener","emitter","subscription","addListener","remove","onEnrollmentStatus","onOneTimeToken","onOneTimeTokenInfo","generateToken","tokenCollectedData","country","getThreeDSecureChallenge","continueEnrollment","enrollmentCollectedData","customerSession"],"sourceRoot":"../../src","sources":["YunoSdk.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;AAe1E,SAAqBC,YAAY,EAAEC,QAAQ,QAAQ,cAAc;AAEjE,MAAMC,aAAa,GACjB,sFAAsF,GACtFH,QAAQ,CAACI,MAAM,CAAC;EAAEC,GAAG,EAAE,uBAAuB;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GAC9D,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA;AACA;AACA,SAASC,aAAaA,CAAA,EAAQ;EAC5B,MAAMC,MAAM,GAAGV,aAAa,CAACW,OAAO;EACpC,IAAI,CAACD,MAAM,EAAE;IACX,MAAM,IAAIE,KAAK,CAACP,aAAa,CAAC;EAChC;EACA,OAAOK,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA,SAASG,mBAAmBA,CAAA,EAAuB;EACjD,MAAMH,MAAM,GAAGD,aAAa,CAAC,CAAC;EAC9B,OAAO,IAAIR,kBAAkB,CAACS,MAAM,CAAC;AACvC;;AAEA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,OAAO,CAAC;EACnB,OAAeG,WAAW,GAAkB,IAAI;EAChD,OAAeC,QAAQ,GAAwB,IAAI;EACnD,OAAeC,aAAa,GAAY,KAAK;;EAE7C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,iBAAiBA,CACtBH,WAAmB,GAAG,IAAI,EAC1BC,QAAsB,GAAGZ,YAAY,CAACe,EAAE,EAClC;IACN,IAAI,CAACJ,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,aAAa,GAAG,IAAI;EAC3B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaG,UAAUA,CAACC,MAMvB,EAAiB;IAChB,MAAM;MACJC,MAAM;MACNP,WAAW;MACXQ,UAAU,GAAG,CAAC,CAAC;MACfC,SAAS,GAAG,CAAC,CAAC;MACdC,aAAa,GAAG,CAAC;IACnB,CAAC,GAAGJ,MAAM;;IAEV;IACA,MAAMK,MAAkB,GAAG;MACzBC,IAAI,EAAEJ,UAAU,CAACI,IAAI,IAAIvB,YAAY,CAACe,EAAE;MACxCS,QAAQ,EAAEL,UAAU,CAACK,QAAQ,IAAIvB,QAAQ,CAACwB,QAAQ;MAClDC,eAAe,EAAEP,UAAU,CAACO,eAAe,IAAI,KAAK;MACpDC,UAAU,EAAER,UAAU,CAACQ,UAAU,IAAI,KAAK;MAC1CC,oBAAoB,EAAET,UAAU,CAACS,oBAAoB,IAAI,KAAK;MAC9DC,gBAAgB,EAAEV,UAAU,CAACU,gBAAgB,IAAI;IACnD,CAAC;;IAED;IACA,IAAI,CAAClB,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,QAAQ,GAAGU,MAAM,CAACC,IAAK;IAE5B,MAAMjB,aAAa,CAAC,CAAC,CAACU,UAAU,CAC9BE,MAAM,EACNP,WAAW,EACXW,MAAM,EACNF,SAAS,EACTC,aACF,CAAC;IAED,IAAI,CAACR,aAAa,GAAG,IAAI;EAC3B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaiB,iBAAiBA,CAACb,MAA2B,EAAiB;IACzE,IAAI,CAACc,gBAAgB,CAAC,CAAC;IAEvB,MAAMC,IAAI,GAAG;MACX,GAAGf,MAAM;MACTN,WAAW,EAAEM,MAAM,CAACN,WAAW,IAAI,IAAI,CAACsB,cAAc,CAAC;IACzD,CAAC;IAED,OAAO3B,aAAa,CAAC,CAAC,CAACwB,iBAAiB,CAACE,IAAI,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaE,gBAAgBA,CAC3BjB,MAAoB,EACpBN,WAAoB,EACL;IACf,IAAI,CAACoB,gBAAgB,CAAC,CAAC;IAEvB,MAAMI,IAAI,GAAGxB,WAAW,IAAI,IAAI,CAACsB,cAAc,CAAC,CAAC;IACjD,OAAO3B,aAAa,CAAC,CAAC,CAAC4B,gBAAgB,CAACjB,MAAM,EAAEkB,IAAI,CAAC;EACvD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,YAAYA,CAACC,iBAA0B,GAAG,IAAI,EAAiB;IAC1E,IAAI,CAACN,gBAAgB,CAAC,CAAC;IACvB,OAAOzB,aAAa,CAAC,CAAC,CAAC8B,YAAY,CAACC,iBAAiB,CAAC;EACxD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,eAAeA,CAC1BC,eAAuB,EACvB5B,WAAoB,EACpB0B,iBAA0B,GAAG,IAAI,EAClB;IACf,IAAI,CAACN,gBAAgB,CAAC,CAAC;IACvB,MAAMI,IAAI,GAAGxB,WAAW,IAAI,IAAI,CAACsB,cAAc,CAAC,CAAC;IACjD,OAAO3B,aAAa,CAAC,CAAC,CAACgC,eAAe,CACpCC,eAAe,EACfJ,IAAI,EACJE,iBACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaG,wBAAwBA,CACnCvB,MAAyB,EACJ;IACrB,IAAI,CAACc,gBAAgB,CAAC,CAAC;IAEvB,MAAMC,IAAI,GAAG;MACX,GAAGf,MAAM;MACTN,WAAW,EAAEM,MAAM,CAACN,WAAW,IAAI,IAAI,CAACsB,cAAc,CAAC;IACzD,CAAC;IAED,MAAMQ,YAAY,GAAG,MAAMnC,aAAa,CAAC,CAAC,CAACkC,wBAAwB,CACjER,IAAI,EACJ,IAAI,CAACU,WAAW,CAAC,CACnB,CAAC;IAED,OAAOD,YAAY;EACrB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaE,UAAUA,CAAA,EAAkB;IACvC,IAAI,CAACZ,gBAAgB,CAAC,CAAC;IACvB,OAAOzB,aAAa,CAAC,CAAC,CAACqC,UAAU,CAAC,CAAC;EACrC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,eAAeA,CAACC,GAAW,EAAiB;IACvD,IAAI9C,QAAQ,CAAC+C,EAAE,KAAK,KAAK,EAAE;MACzBC,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;MACxD;IACF;IAEA,IAAI,CAACjB,gBAAgB,CAAC,CAAC;IACvB,OAAOzB,aAAa,CAAC,CAAC,CAACsC,eAAe,CAACC,GAAG,CAAC;EAC7C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaI,mBAAmBA,CAAA,EAA2B;IACzD,OAAO3C,aAAa,CAAC,CAAC,CAAC2C,mBAAmB,CAAC,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,uBAAuBA,CAAA,EAAqC;IACvE,OAAO5C,aAAa,CAAC,CAAC,CAAC4C,uBAAuB,CAAC,CAAC;EAClD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,qBAAqBA,CAAA,EAAkB;IAClD,OAAO7C,aAAa,CAAC,CAAC,CAAC6C,qBAAqB,CAAC,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,sBAAsBA,CAAA,EAAkB;IACnD,OAAO9C,aAAa,CAAC,CAAC,CAAC8C,sBAAsB,CAAC,CAAC;EACjD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,eAAeA,CAACC,QAA2C,EAEhE;IACA,MAAMC,OAAO,GAAG7C,mBAAmB,CAAC,CAAC;IACrC,MAAM8C,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,mBAAmB,EAAEH,QAAQ,CAAC;IACvE,O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","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Headless Payment Flow Types
3
+ * These types mirror the native SDK's TokenCollectedData structure
4
+ */
5
+
6
+ export let CardType = /*#__PURE__*/function (CardType) {
7
+ CardType["CREDIT"] = "CREDIT";
8
+ CardType["DEBIT"] = "DEBIT";
9
+ return CardType;
10
+ }({});
11
+
12
+ /**
13
+ * Headless Enrollment Flow Types
14
+ * These types mirror the native SDK's EnrollmentCollectedData structure
15
+ */
16
+ //# sourceMappingURL=HeadlessTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CardType"],"sourceRoot":"../../../../src","sources":["core/types/HeadlessTypes.ts"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA,WAAYA,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;;AAqFpB;AACA;AACA;AACA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuno-payments/yuno-sdk-react-native",
3
- "version": "1.0.16",
3
+ "version": "1.0.17-rc.10",
4
4
  "description": "Yuno React Native SDK empowers you to create seamless payment experiences in your native Android and iOS apps built with React Native.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useCallback } from 'react';
1
+ import React, { useEffect } from 'react';
2
2
  import {
3
3
  requireNativeComponent,
4
4
  NativeModules,
@@ -48,6 +48,9 @@ export interface YunoPaymentMethodsProps {
48
48
 
49
49
  /** Custom styles for the view container */
50
50
  style?: StyleProp<ViewStyle>;
51
+
52
+ /** Test ID for automation tools (Appium, etc.) */
53
+ testID?: string;
51
54
  }
52
55
 
53
56
  // Native component interface
@@ -55,6 +58,7 @@ interface NativeYunoPaymentMethodsProps {
55
58
  checkoutSession: string;
56
59
  countryCode: string;
57
60
  style?: StyleProp<ViewStyle>;
61
+ testID?: string;
58
62
  }
59
63
 
60
64
  const LINKING_ERROR =
@@ -74,19 +78,20 @@ if (YunoSdkNative) {
74
78
  }
75
79
 
76
80
  // Require the native component
77
- const NativeYunoPaymentMethodsView = requireNativeComponent<NativeYunoPaymentMethodsProps>(
78
- 'YunoPaymentMethodsView'
79
- );
81
+ const NativeYunoPaymentMethodsView =
82
+ requireNativeComponent<NativeYunoPaymentMethodsProps>(
83
+ 'YunoPaymentMethodsView'
84
+ );
80
85
 
81
86
  /**
82
87
  * YunoPaymentMethods Component
83
88
  *
84
89
  * A React Native component that displays available payment methods using the native Yuno SDK.
85
- * This component embeds the native `PaymentMethodListViewComponent` from the Yuno Android SDK.
90
+ * This component embeds the native payment methods list view from the Yuno SDK.
86
91
  *
87
92
  * **Platform Support:**
88
93
  * - ✅ Android (using Jetpack Compose)
89
- * - ⚠️ iOS (coming soon)
94
+ * - iOS (using SwiftUI with UIHostingController)
90
95
  *
91
96
  * **Important:**
92
97
  * - The Yuno SDK must be initialized before using this component
@@ -127,6 +132,10 @@ const NativeYunoPaymentMethodsView = requireNativeComponent<NativeYunoPaymentMet
127
132
  * - User interactions and selections
128
133
  * - Error states and loading indicators
129
134
  *
135
+ * **Technical Note:** On iOS, uses `UIHostingController` to wrap the SwiftUI view from
136
+ * Yuno SDK's `getPaymentMethodViewAsync`, providing seamless integration with React Native.
137
+ * Android uses Jetpack Compose with native `PaymentMethodListViewComponent`.
138
+ *
130
139
  * @public
131
140
  */
132
141
  export const YunoPaymentMethods: React.FC<YunoPaymentMethodsProps> = ({
@@ -135,6 +144,7 @@ export const YunoPaymentMethods: React.FC<YunoPaymentMethodsProps> = ({
135
144
  onPaymentMethodSelected,
136
145
  onPaymentMethodError,
137
146
  style,
147
+ testID,
138
148
  }) => {
139
149
  // Set up event listeners
140
150
  useEffect(() => {
@@ -177,20 +187,12 @@ export const YunoPaymentMethods: React.FC<YunoPaymentMethodsProps> = ({
177
187
  };
178
188
  }, [onPaymentMethodSelected, onPaymentMethodError]);
179
189
 
180
- // Platform check
181
- if (Platform.OS !== 'android') {
182
- console.warn(
183
- 'YunoPaymentMethods: This component is currently only supported on Android. iOS support coming soon.'
184
- );
185
- return null;
186
- }
187
-
188
190
  return (
189
191
  <NativeYunoPaymentMethodsView
192
+ testID={testID}
190
193
  checkoutSession={checkoutSession}
191
194
  countryCode={countryCode}
192
195
  style={style}
193
196
  />
194
197
  );
195
198
  };
196
-