@yuno-payments/yuno-sdk-react-native 1.0.16 → 1.0.17-rc.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.
- package/README.md +795 -262
- package/YunoSdk.podspec +48 -0
- package/android/src/main/java/com/yunosdkreactnative/YunoSdkModule.kt +47 -0
- package/ios/YunoPaymentMethodsViewManager.m +10 -0
- package/ios/YunoPaymentMethodsViewManager.swift +324 -0
- package/ios/YunoSdk.m +26 -5
- package/ios/YunoSdk.swift +191 -72
- package/lib/commonjs/YunoPaymentMethods.js +9 -9
- package/lib/commonjs/YunoPaymentMethods.js.map +1 -1
- package/lib/commonjs/YunoSdk.js +53 -21
- package/lib/commonjs/YunoSdk.js.map +1 -1
- package/lib/module/YunoPaymentMethods.js +9 -9
- package/lib/module/YunoPaymentMethods.js.map +1 -1
- package/lib/module/YunoSdk.js +53 -21
- package/lib/module/YunoSdk.js.map +1 -1
- package/package.json +1 -1
- package/src/YunoPaymentMethods.tsx +12 -10
- package/src/YunoSdk.ts +54 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_enums","LINKING_ERROR","Platform","select","ios","default","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_enums","LINKING_ERROR","Platform","select","ios","default","getYunoNative","native","NativeModules","YunoSdk","Error","getYunoEventEmitter","NativeEventEmitter","countryCode","language","isInitialized","markAsInitialized","YunoLanguage","EN","initialize","params","apiKey","yunoConfig","iosConfig","androidConfig","config","lang","cardFlow","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","exports"],"sourceRoot":"../../src","sources":["YunoSdk.ts"],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,eAAeA,CAACC,GAAW,EAAiB;IACvD,IAAI/C,qBAAQ,CAACgD,EAAE,KAAK,KAAK,EAAE;MACzBC,OAAO,CAACC,IAAI,CAAC,0CAA0C,CAAC;MACxD;IACF;IAEA,IAAI,CAACjB,gBAAgB,CAAC,CAAC;IACvB,OAAO7B,aAAa,CAAC,CAAC,CAAC0C,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,OAAO/C,aAAa,CAAC,CAAC,CAAC+C,mBAAmB,CAAC,CAAC;EAC9C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,uBAAuBA,CAAA,EAAqC;IACvE,OAAOhD,aAAa,CAAC,CAAC,CAACgD,uBAAuB,CAAC,CAAC;EAClD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,qBAAqBA,CAAA,EAAkB;IAClD,OAAOjD,aAAa,CAAC,CAAC,CAACiD,qBAAqB,CAAC,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,sBAAsBA,CAAA,EAAkB;IACnD,OAAOlD,aAAa,CAAC,CAAC,CAACkD,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,GAAGhD,mBAAmB,CAAC,CAAC;IACrC,MAAMiD,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,mBAAmB,EAAEH,QAAQ,CAAC;IACvE,OAAO;MAAEI,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,CAACL,QAA8C,EAEtE;IACA,MAAMC,OAAO,GAAGhD,mBAAmB,CAAC,CAAC;IACrC,MAAMiD,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,sBAAsB,EAAEH,QAAQ,CAAC;IAC1E,OAAO;MAAEI,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,CAACN,QAAiC,EAErD;IACA,MAAMC,OAAO,GAAGhD,mBAAmB,CAAC,CAAC;IACrC,MAAMiD,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,kBAAkB,EAAEH,QAAQ,CAAC;IACtE,OAAO;MAAEI,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,CAACP,QAA+C,EAEvE;IACA,MAAMC,OAAO,GAAGhD,mBAAmB,CAAC,CAAC;IACrC,MAAMiD,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,sBAAsB,EAAEH,QAAQ,CAAC;IAC1E,OAAO;MAAEI,MAAM,EAAEA,CAAA,KAAMF,YAAY,CAACE,MAAM,CAAC;IAAE,CAAC;EAChD;EAEA,OAAe3B,gBAAgBA,CAAA,EAAS;IACtC,IAAI,CAAC,IAAI,CAACpB,aAAa,EAAE;MACvB,MAAM,IAAIL,KAAK,CACb,8DACF,CAAC;IACH;EACF;EAEA,OAAe2B,cAAcA,CAAA,EAAW;IACtC,IAAI,CAAC,IAAI,CAACxB,WAAW,EAAE;MACrB,MAAM,IAAIH,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAO,IAAI,CAACG,WAAW;EACzB;EAEA,OAAeiC,WAAWA,CAAA,EAAiB;IACzC,IAAI,CAAC,IAAI,CAAChC,QAAQ,EAAE;MAClB,MAAM,IAAIJ,KAAK,CAAC,oDAAoD,CAAC;IACvE;IACA,OAAO,IAAI,CAACI,QAAQ;EACtB;AACF;AAACoD,OAAA,CAAAzD,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -36,11 +36,11 @@ const NativeYunoPaymentMethodsView = requireNativeComponent('YunoPaymentMethodsV
|
|
|
36
36
|
* YunoPaymentMethods Component
|
|
37
37
|
*
|
|
38
38
|
* A React Native component that displays available payment methods using the native Yuno SDK.
|
|
39
|
-
* This component embeds the native
|
|
39
|
+
* This component embeds the native payment methods list view from the Yuno SDK.
|
|
40
40
|
*
|
|
41
41
|
* **Platform Support:**
|
|
42
42
|
* - ✅ Android (using Jetpack Compose)
|
|
43
|
-
* -
|
|
43
|
+
* - ✅ iOS (using SwiftUI with UIHostingController)
|
|
44
44
|
*
|
|
45
45
|
* **Important:**
|
|
46
46
|
* - The Yuno SDK must be initialized before using this component
|
|
@@ -81,6 +81,10 @@ const NativeYunoPaymentMethodsView = requireNativeComponent('YunoPaymentMethodsV
|
|
|
81
81
|
* - User interactions and selections
|
|
82
82
|
* - Error states and loading indicators
|
|
83
83
|
*
|
|
84
|
+
* **Technical Note:** On iOS, uses `UIHostingController` to wrap the SwiftUI view from
|
|
85
|
+
* Yuno SDK's `getPaymentMethodViewAsync`, providing seamless integration with React Native.
|
|
86
|
+
* Android uses Jetpack Compose with native `PaymentMethodListViewComponent`.
|
|
87
|
+
*
|
|
84
88
|
* @public
|
|
85
89
|
*/
|
|
86
90
|
export const YunoPaymentMethods = ({
|
|
@@ -88,7 +92,8 @@ export const YunoPaymentMethods = ({
|
|
|
88
92
|
countryCode,
|
|
89
93
|
onPaymentMethodSelected,
|
|
90
94
|
onPaymentMethodError,
|
|
91
|
-
style
|
|
95
|
+
style,
|
|
96
|
+
testID
|
|
92
97
|
}) => {
|
|
93
98
|
// Set up event listeners
|
|
94
99
|
useEffect(() => {
|
|
@@ -123,13 +128,8 @@ export const YunoPaymentMethods = ({
|
|
|
123
128
|
});
|
|
124
129
|
};
|
|
125
130
|
}, [onPaymentMethodSelected, onPaymentMethodError]);
|
|
126
|
-
|
|
127
|
-
// Platform check
|
|
128
|
-
if (Platform.OS !== 'android') {
|
|
129
|
-
console.warn('YunoPaymentMethods: This component is currently only supported on Android. iOS support coming soon.');
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
131
|
return /*#__PURE__*/React.createElement(NativeYunoPaymentMethodsView, {
|
|
132
|
+
testID: testID,
|
|
133
133
|
checkoutSession: checkoutSession,
|
|
134
134
|
countryCode: countryCode,
|
|
135
135
|
style: style
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","requireNativeComponent","NativeModules","NativeEventEmitter","Platform","LINKING_ERROR","select","ios","default","YunoSdkNative","YunoSdk","eventEmitter","NativeYunoPaymentMethodsView","YunoPaymentMethods","checkoutSession","countryCode","onPaymentMethodSelected","onPaymentMethodError","style","console","warn","subscriptions","selectionListener","addListener","event","push","errorListener","forEach","sub","remove","
|
|
1
|
+
{"version":3,"names":["React","useEffect","requireNativeComponent","NativeModules","NativeEventEmitter","Platform","LINKING_ERROR","select","ios","default","YunoSdkNative","YunoSdk","eventEmitter","NativeYunoPaymentMethodsView","YunoPaymentMethods","checkoutSession","countryCode","onPaymentMethodSelected","onPaymentMethodError","style","testID","console","warn","subscriptions","selectionListener","addListener","event","push","errorListener","forEach","sub","remove","createElement"],"sourceRoot":"../../src","sources":["YunoPaymentMethods.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAqB,OAAO;AACrD,SACEC,sBAAsB,EACtBC,aAAa,EACbC,kBAAkB,EAGlBC,QAAQ,QACH,cAAc;;AAErB;AACA;AACA;;AAMA;AACA;AACA;;AAMA;AACA;AACA;;AA2BA;;AAQA,MAAMC,aAAa,GACjB,gHAAgH,GAChHD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,uBAAuB;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GAC9D,sDAAsD,GACtD,+BAA+B,GAC/B,0CAA0C;;AAE5C;AACA,MAAMC,aAAa,GAAGP,aAAa,CAACQ,OAAO;;AAE3C;AACA,IAAIC,YAAuC,GAAG,IAAI;AAClD,IAAIF,aAAa,EAAE;EACjBE,YAAY,GAAG,IAAIR,kBAAkB,CAACM,aAAa,CAAC;AACtD;;AAEA;AACA,MAAMG,4BAA4B,GAAGX,sBAAsB,CACzD,wBACF,CAAC;;AAED;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;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;AACA,OAAO,MAAMY,kBAAqD,GAAGA,CAAC;EACpEC,eAAe;EACfC,WAAW;EACXC,uBAAuB;EACvBC,oBAAoB;EACpBC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ;EACAnB,SAAS,CAAC,MAAM;IACd,IAAI,CAACW,YAAY,EAAE;MACjBS,OAAO,CAACC,IAAI,CAAChB,aAAa,CAAC;MAC3B;IACF;IAEA,MAAMiB,aAAoB,GAAG,EAAE;;IAE/B;IACA,IAAIN,uBAAuB,EAAE;MAC3B,MAAMO,iBAAiB,GAAGZ,YAAY,CAACa,WAAW,CAChD,yBAAyB,EACxBC,KAAiC,IAAK;QACrCT,uBAAuB,CAACS,KAAK,CAAC;MAChC,CACF,CAAC;MACDH,aAAa,CAACI,IAAI,CAACH,iBAAiB,CAAC;IACvC;;IAEA;IACA,IAAIN,oBAAoB,EAAE;MACxB,MAAMU,aAAa,GAAGhB,YAAY,CAACa,WAAW,CAC5C,sBAAsB,EACrBC,KAA8B,IAAK;QAClCR,oBAAoB,CAACQ,KAAK,CAAC;MAC7B,CACF,CAAC;MACDH,aAAa,CAACI,IAAI,CAACC,aAAa,CAAC;IACnC;;IAEA;IACA,OAAO,MAAM;MACXL,aAAa,CAACM,OAAO,CAAEC,GAAG,IAAK;QAC7B,IAAIA,GAAG,IAAIA,GAAG,CAACC,MAAM,EAAE;UACrBD,GAAG,CAACC,MAAM,CAAC,CAAC;QACd;MACF,CAAC,CAAC;IACJ,CAAC;EACH,CAAC,EAAE,CAACd,uBAAuB,EAAEC,oBAAoB,CAAC,CAAC;EAEnD,oBACElB,KAAA,CAAAgC,aAAA,CAACnB,4BAA4B;IAC3BO,MAAM,EAAEA,MAAO;IACfL,eAAe,EAAEA,eAAgB;IACjCC,WAAW,EAAEA,WAAY;IACzBG,KAAK,EAAEA;EAAM,CACd,CAAC;AAEN,CAAC","ignoreList":[]}
|
package/lib/module/YunoSdk.js
CHANGED
|
@@ -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 '@
|
|
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
|
-
|
|
8
|
-
|
|
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
|
-
*
|
|
20
|
+
* Devuelve un NativeEventEmitter para el módulo YunoSdk
|
|
21
|
+
* Se crea sólo cuando hace falta (no en top-level).
|
|
15
22
|
*/
|
|
16
|
-
|
|
23
|
+
function getYunoEventEmitter() {
|
|
24
|
+
const native = getYunoNative();
|
|
25
|
+
return new NativeEventEmitter(native);
|
|
26
|
+
}
|
|
17
27
|
|
|
18
28
|
/**
|
|
19
29
|
* Payment state event data.
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
299
|
+
return getYunoNative().getLastOneTimeToken();
|
|
290
300
|
}
|
|
291
301
|
|
|
292
302
|
/**
|
|
@@ -303,7 +313,7 @@ export class YunoSdk {
|
|
|
303
313
|
* ```
|
|
304
314
|
*/
|
|
305
315
|
static async getLastOneTimeTokenInfo() {
|
|
306
|
-
return
|
|
316
|
+
return getYunoNative().getLastOneTimeTokenInfo();
|
|
307
317
|
}
|
|
308
318
|
|
|
309
319
|
/**
|
|
@@ -320,7 +330,25 @@ export class YunoSdk {
|
|
|
320
330
|
* ```
|
|
321
331
|
*/
|
|
322
332
|
static async clearLastOneTimeToken() {
|
|
323
|
-
return
|
|
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
|
|
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
|
|
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
|
|
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
|
|
456
|
+
const emitter = getYunoEventEmitter();
|
|
457
|
+
const subscription = emitter.addListener('YunoOneTimeTokenInfo', listener);
|
|
426
458
|
return {
|
|
427
459
|
remove: () => subscription.remove()
|
|
428
460
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","NativeEventEmitter","Platform","YunoLanguage","CardFlow","LINKING_ERROR","select","ios","default","
|
|
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"],"sourceRoot":"../../src","sources":["YunoSdk.ts"],"mappings":"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ACrC;;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,OAAO;MAAEI,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,CAACL,QAA8C,EAEtE;IACA,MAAMC,OAAO,GAAG7C,mBAAmB,CAAC,CAAC;IACrC,MAAM8C,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,sBAAsB,EAAEH,QAAQ,CAAC;IAC1E,OAAO;MAAEI,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,CAACN,QAAiC,EAErD;IACA,MAAMC,OAAO,GAAG7C,mBAAmB,CAAC,CAAC;IACrC,MAAM8C,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,kBAAkB,EAAEH,QAAQ,CAAC;IACtE,OAAO;MAAEI,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,CAACP,QAA+C,EAEvE;IACA,MAAMC,OAAO,GAAG7C,mBAAmB,CAAC,CAAC;IACrC,MAAM8C,YAAY,GAAGD,OAAO,CAACE,WAAW,CAAC,sBAAsB,EAAEH,QAAQ,CAAC;IAC1E,OAAO;MAAEI,MAAM,EAAEA,CAAA,KAAMF,YAAY,CAACE,MAAM,CAAC;IAAE,CAAC;EAChD;EAEA,OAAe3B,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":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuno-payments/yuno-sdk-react-native",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.17-rc.1",
|
|
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",
|
|
@@ -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 =
|
|
@@ -82,11 +86,11 @@ const NativeYunoPaymentMethodsView = requireNativeComponent<NativeYunoPaymentMet
|
|
|
82
86
|
* YunoPaymentMethods Component
|
|
83
87
|
*
|
|
84
88
|
* A React Native component that displays available payment methods using the native Yuno SDK.
|
|
85
|
-
* This component embeds the native
|
|
89
|
+
* This component embeds the native payment methods list view from the Yuno SDK.
|
|
86
90
|
*
|
|
87
91
|
* **Platform Support:**
|
|
88
92
|
* - ✅ Android (using Jetpack Compose)
|
|
89
|
-
* -
|
|
93
|
+
* - ✅ iOS (using SwiftUI with UIHostingController)
|
|
90
94
|
*
|
|
91
95
|
* **Important:**
|
|
92
96
|
* - The Yuno SDK must be initialized before using this component
|
|
@@ -127,6 +131,10 @@ const NativeYunoPaymentMethodsView = requireNativeComponent<NativeYunoPaymentMet
|
|
|
127
131
|
* - User interactions and selections
|
|
128
132
|
* - Error states and loading indicators
|
|
129
133
|
*
|
|
134
|
+
* **Technical Note:** On iOS, uses `UIHostingController` to wrap the SwiftUI view from
|
|
135
|
+
* Yuno SDK's `getPaymentMethodViewAsync`, providing seamless integration with React Native.
|
|
136
|
+
* Android uses Jetpack Compose with native `PaymentMethodListViewComponent`.
|
|
137
|
+
*
|
|
130
138
|
* @public
|
|
131
139
|
*/
|
|
132
140
|
export const YunoPaymentMethods: React.FC<YunoPaymentMethodsProps> = ({
|
|
@@ -135,6 +143,7 @@ export const YunoPaymentMethods: React.FC<YunoPaymentMethodsProps> = ({
|
|
|
135
143
|
onPaymentMethodSelected,
|
|
136
144
|
onPaymentMethodError,
|
|
137
145
|
style,
|
|
146
|
+
testID,
|
|
138
147
|
}) => {
|
|
139
148
|
// Set up event listeners
|
|
140
149
|
useEffect(() => {
|
|
@@ -177,16 +186,9 @@ export const YunoPaymentMethods: React.FC<YunoPaymentMethodsProps> = ({
|
|
|
177
186
|
};
|
|
178
187
|
}, [onPaymentMethodSelected, onPaymentMethodError]);
|
|
179
188
|
|
|
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
189
|
return (
|
|
189
190
|
<NativeYunoPaymentMethodsView
|
|
191
|
+
testID={testID}
|
|
190
192
|
checkoutSession={checkoutSession}
|
|
191
193
|
countryCode={countryCode}
|
|
192
194
|
style={style}
|
package/src/YunoSdk.ts
CHANGED
|
@@ -11,26 +11,30 @@ import type {
|
|
|
11
11
|
import { YunoStatus, YunoLanguage, CardFlow } from './core/enums';
|
|
12
12
|
|
|
13
13
|
const LINKING_ERROR =
|
|
14
|
-
`The package '@
|
|
14
|
+
`The package '@yuno/yuno-sdk-react-native' doesn't seem to be linked. Make sure: \n\n` +
|
|
15
15
|
Platform.select({ ios: "- Run 'pod install'\n", default: '' }) +
|
|
16
16
|
'- You rebuilt the app after installing the package\n' +
|
|
17
17
|
'- You are not using Expo Go\n';
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Devuelve el módulo nativo YunoSdk o lanza un error de linking
|
|
21
|
+
*/
|
|
22
|
+
function getYunoNative(): any {
|
|
23
|
+
const native = NativeModules.YunoSdk;
|
|
24
|
+
if (!native) {
|
|
25
|
+
throw new Error(LINKING_ERROR);
|
|
26
|
+
}
|
|
27
|
+
return native;
|
|
28
|
+
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Devuelve un NativeEventEmitter para el módulo YunoSdk
|
|
32
|
+
* Se crea sólo cuando hace falta (no en top-level).
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
|
+
function getYunoEventEmitter(): NativeEventEmitter {
|
|
35
|
+
const native = getYunoNative();
|
|
36
|
+
return new NativeEventEmitter(native);
|
|
37
|
+
}
|
|
34
38
|
|
|
35
39
|
/**
|
|
36
40
|
* Payment state event data.
|
|
@@ -153,7 +157,7 @@ export class YunoSdk {
|
|
|
153
157
|
this.countryCode = countryCode;
|
|
154
158
|
this.language = config.lang!;
|
|
155
159
|
|
|
156
|
-
await
|
|
160
|
+
await getYunoNative().initialize(
|
|
157
161
|
apiKey,
|
|
158
162
|
countryCode,
|
|
159
163
|
config,
|
|
@@ -186,7 +190,7 @@ export class YunoSdk {
|
|
|
186
190
|
countryCode: params.countryCode ?? this.getCountryCode(),
|
|
187
191
|
};
|
|
188
192
|
|
|
189
|
-
return
|
|
193
|
+
return getYunoNative().enrollmentPayment(args);
|
|
190
194
|
}
|
|
191
195
|
|
|
192
196
|
/**
|
|
@@ -214,7 +218,7 @@ export class YunoSdk {
|
|
|
214
218
|
this.checkInitialized();
|
|
215
219
|
|
|
216
220
|
const code = countryCode ?? this.getCountryCode();
|
|
217
|
-
return
|
|
221
|
+
return getYunoNative().startPaymentLite(params, code);
|
|
218
222
|
}
|
|
219
223
|
|
|
220
224
|
/**
|
|
@@ -229,7 +233,7 @@ export class YunoSdk {
|
|
|
229
233
|
*/
|
|
230
234
|
static async startPayment(showPaymentStatus: boolean = true): Promise<void> {
|
|
231
235
|
this.checkInitialized();
|
|
232
|
-
return
|
|
236
|
+
return getYunoNative().startPayment(showPaymentStatus);
|
|
233
237
|
}
|
|
234
238
|
|
|
235
239
|
/**
|
|
@@ -251,7 +255,7 @@ export class YunoSdk {
|
|
|
251
255
|
): Promise<void> {
|
|
252
256
|
this.checkInitialized();
|
|
253
257
|
const code = countryCode ?? this.getCountryCode();
|
|
254
|
-
return
|
|
258
|
+
return getYunoNative().continuePayment(checkoutSession, code, showPaymentStatus);
|
|
255
259
|
}
|
|
256
260
|
|
|
257
261
|
/**
|
|
@@ -284,7 +288,7 @@ export class YunoSdk {
|
|
|
284
288
|
countryCode: params.countryCode ?? this.getCountryCode(),
|
|
285
289
|
};
|
|
286
290
|
|
|
287
|
-
const statusString = await
|
|
291
|
+
const statusString = await getYunoNative().startPaymentSeamlessLite(
|
|
288
292
|
args,
|
|
289
293
|
this.getLanguage()
|
|
290
294
|
);
|
|
@@ -302,7 +306,7 @@ export class YunoSdk {
|
|
|
302
306
|
*/
|
|
303
307
|
static async hideLoader(): Promise<void> {
|
|
304
308
|
this.checkInitialized();
|
|
305
|
-
return
|
|
309
|
+
return getYunoNative().hideLoader();
|
|
306
310
|
}
|
|
307
311
|
|
|
308
312
|
/**
|
|
@@ -326,7 +330,7 @@ export class YunoSdk {
|
|
|
326
330
|
}
|
|
327
331
|
|
|
328
332
|
this.checkInitialized();
|
|
329
|
-
return
|
|
333
|
+
return getYunoNative().receiveDeeplink(url);
|
|
330
334
|
}
|
|
331
335
|
|
|
332
336
|
/**
|
|
@@ -346,7 +350,7 @@ export class YunoSdk {
|
|
|
346
350
|
* ```
|
|
347
351
|
*/
|
|
348
352
|
static async getLastOneTimeToken(): Promise<string | null> {
|
|
349
|
-
return
|
|
353
|
+
return getYunoNative().getLastOneTimeToken();
|
|
350
354
|
}
|
|
351
355
|
|
|
352
356
|
/**
|
|
@@ -363,7 +367,7 @@ export class YunoSdk {
|
|
|
363
367
|
* ```
|
|
364
368
|
*/
|
|
365
369
|
static async getLastOneTimeTokenInfo(): Promise<OneTimeTokenInfo | null> {
|
|
366
|
-
return
|
|
370
|
+
return getYunoNative().getLastOneTimeTokenInfo();
|
|
367
371
|
}
|
|
368
372
|
|
|
369
373
|
/**
|
|
@@ -380,7 +384,25 @@ export class YunoSdk {
|
|
|
380
384
|
* ```
|
|
381
385
|
*/
|
|
382
386
|
static async clearLastOneTimeToken(): Promise<void> {
|
|
383
|
-
return
|
|
387
|
+
return getYunoNative().clearLastOneTimeToken();
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Clears the last stored payment status.
|
|
392
|
+
* This should be called at the start of each new payment flow
|
|
393
|
+
* to prevent stale status from previous flows affecting new transactions.
|
|
394
|
+
*
|
|
395
|
+
* @returns Promise that resolves when the status is cleared
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* ```typescript
|
|
399
|
+
* // Clear payment status before starting a new flow
|
|
400
|
+
* await YunoSdk.clearLastPaymentStatus();
|
|
401
|
+
* await YunoSdk.startPayment({ checkoutSession, countryCode });
|
|
402
|
+
* ```
|
|
403
|
+
*/
|
|
404
|
+
static async clearLastPaymentStatus(): Promise<void> {
|
|
405
|
+
return getYunoNative().clearLastPaymentStatus();
|
|
384
406
|
}
|
|
385
407
|
|
|
386
408
|
/**
|
|
@@ -408,10 +430,8 @@ export class YunoSdk {
|
|
|
408
430
|
static onPaymentStatus(listener: (state: YunoPaymentState) => void): {
|
|
409
431
|
remove: () => void;
|
|
410
432
|
} {
|
|
411
|
-
const
|
|
412
|
-
|
|
413
|
-
listener
|
|
414
|
-
);
|
|
433
|
+
const emitter = getYunoEventEmitter();
|
|
434
|
+
const subscription = emitter.addListener('YunoPaymentStatus', listener);
|
|
415
435
|
return { remove: () => subscription.remove() };
|
|
416
436
|
}
|
|
417
437
|
|
|
@@ -440,10 +460,8 @@ export class YunoSdk {
|
|
|
440
460
|
static onEnrollmentStatus(listener: (state: YunoEnrollmentState) => void): {
|
|
441
461
|
remove: () => void;
|
|
442
462
|
} {
|
|
443
|
-
const
|
|
444
|
-
|
|
445
|
-
listener
|
|
446
|
-
);
|
|
463
|
+
const emitter = getYunoEventEmitter();
|
|
464
|
+
const subscription = emitter.addListener('YunoEnrollmentStatus', listener);
|
|
447
465
|
return { remove: () => subscription.remove() };
|
|
448
466
|
}
|
|
449
467
|
|
|
@@ -466,7 +484,8 @@ export class YunoSdk {
|
|
|
466
484
|
static onOneTimeToken(listener: (token: string) => void): {
|
|
467
485
|
remove: () => void;
|
|
468
486
|
} {
|
|
469
|
-
const
|
|
487
|
+
const emitter = getYunoEventEmitter();
|
|
488
|
+
const subscription = emitter.addListener('YunoOneTimeToken', listener);
|
|
470
489
|
return { remove: () => subscription.remove() };
|
|
471
490
|
}
|
|
472
491
|
|
|
@@ -490,7 +509,8 @@ export class YunoSdk {
|
|
|
490
509
|
static onOneTimeTokenInfo(listener: (tokenInfo: OneTimeTokenInfo) => void): {
|
|
491
510
|
remove: () => void;
|
|
492
511
|
} {
|
|
493
|
-
const
|
|
512
|
+
const emitter = getYunoEventEmitter();
|
|
513
|
+
const subscription = emitter.addListener('YunoOneTimeTokenInfo', listener);
|
|
494
514
|
return { remove: () => subscription.remove() };
|
|
495
515
|
}
|
|
496
516
|
|