@yuno-payments/yuno-sdk-react-native 1.0.17-rc.8 → 1.0.17
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/android/src/main/java/com/yunosdkreactnative/YunoSdkModule.kt +77 -0
- package/ios/YunoSdk.m +9 -0
- package/ios/YunoSdk.swift +68 -1
- package/lib/commonjs/YunoSdk.js +46 -0
- package/lib/commonjs/YunoSdk.js.map +1 -1
- package/lib/commonjs/core/types/HeadlessTypes.js +4 -0
- package/lib/commonjs/core/types/HeadlessTypes.js.map +1 -1
- package/lib/module/YunoSdk.js +46 -0
- package/lib/module/YunoSdk.js.map +1 -1
- package/lib/module/core/types/HeadlessTypes.js +5 -0
- package/lib/module/core/types/HeadlessTypes.js.map +1 -1
- package/package.json +1 -1
- package/src/YunoSdk.ts +57 -0
- package/src/core/types/HeadlessTypes.ts +21 -0
- package/src/core/types/index.ts +3 -0
|
@@ -14,7 +14,10 @@ import com.yuno.sdk.payments.*
|
|
|
14
14
|
import com.yuno.sdk.ApiClientPayment
|
|
15
15
|
import com.yuno.sdk.ApiClientPayment.Companion.generateToken
|
|
16
16
|
import com.yuno.sdk.ApiClientPayment.Companion.getThreeDSecureChallenge
|
|
17
|
+
import com.yuno.sdk.ApiClientEnroll
|
|
18
|
+
import com.yuno.sdk.ApiClientEnroll.Companion.continueEnrollment
|
|
17
19
|
import com.yuno.sdk.payments.TokenCollectedData
|
|
20
|
+
import com.yuno.sdk.enrollment.EnrollmentCollectedData
|
|
18
21
|
import com.yuno.sdk.ThreeDSecureChallengeResponse
|
|
19
22
|
import com.yuno.presentation.core.components.PaymentSelected
|
|
20
23
|
import com.yuno.presentation.core.card.CardFormType
|
|
@@ -978,6 +981,80 @@ class YunoSdkModule(private val reactContext: ReactApplicationContext) :
|
|
|
978
981
|
}
|
|
979
982
|
}
|
|
980
983
|
|
|
984
|
+
// ==================== HEADLESS ENROLLMENT FLOW ====================
|
|
985
|
+
|
|
986
|
+
@ReactMethod
|
|
987
|
+
fun continueEnrollment(
|
|
988
|
+
enrollmentCollectedData: ReadableMap,
|
|
989
|
+
customerSession: String,
|
|
990
|
+
countryCode: String,
|
|
991
|
+
promise: Promise
|
|
992
|
+
) {
|
|
993
|
+
try {
|
|
994
|
+
Log.d(TAG, "continueEnrollment called with customerSession: $customerSession")
|
|
995
|
+
|
|
996
|
+
val activity = currentActivity
|
|
997
|
+
if (activity == null) {
|
|
998
|
+
promise.reject("ACTIVITY_UNAVAILABLE", "Current activity is null. Cannot continue enrollment.")
|
|
999
|
+
return
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
// Convert ReadableMap to JSON String
|
|
1003
|
+
val jsonString = convertReadableMapToJson(enrollmentCollectedData)
|
|
1004
|
+
Log.d(TAG, "📦 EnrollmentCollectedData JSON received: $jsonString")
|
|
1005
|
+
|
|
1006
|
+
// Convert JSON String to EnrollmentCollectedData using Gson
|
|
1007
|
+
val gson = Gson()
|
|
1008
|
+
val collectedData = gson.fromJson(jsonString, EnrollmentCollectedData::class.java)
|
|
1009
|
+
|
|
1010
|
+
// Create API client for enrollment
|
|
1011
|
+
val apiClient = Yuno.apiClientEnroll(
|
|
1012
|
+
customerSession = customerSession,
|
|
1013
|
+
countryCode = countryCode,
|
|
1014
|
+
context = activity
|
|
1015
|
+
)
|
|
1016
|
+
|
|
1017
|
+
// Continue enrollment
|
|
1018
|
+
apiClient.continueEnrollment(collectedData, activity)
|
|
1019
|
+
.asFlow()
|
|
1020
|
+
.onEach { result ->
|
|
1021
|
+
try {
|
|
1022
|
+
when {
|
|
1023
|
+
result.containsKey("vaulted_token") && result["vaulted_token"] != null -> {
|
|
1024
|
+
val vaultedToken = result["vaulted_token"] as String
|
|
1025
|
+
Log.d(TAG, "✅ Vaulted token created successfully")
|
|
1026
|
+
|
|
1027
|
+
val response = Arguments.createMap().apply {
|
|
1028
|
+
putString("vaultedToken", vaultedToken)
|
|
1029
|
+
}
|
|
1030
|
+
promise.resolve(response)
|
|
1031
|
+
}
|
|
1032
|
+
result.containsKey("error") && result["error"] != null -> {
|
|
1033
|
+
val error = result["error"] as String
|
|
1034
|
+
Log.e(TAG, "❌ Enrollment failed: $error")
|
|
1035
|
+
promise.reject("ENROLLMENT_ERROR", error)
|
|
1036
|
+
}
|
|
1037
|
+
else -> {
|
|
1038
|
+
Log.e(TAG, "❌ Unknown response from enrollment")
|
|
1039
|
+
promise.reject("ENROLLMENT_ERROR", "Unknown error occurred")
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
} catch (e: Exception) {
|
|
1043
|
+
Log.e(TAG, "❌ Error processing enrollment result: ${e.message}")
|
|
1044
|
+
promise.reject("ENROLLMENT_ERROR", e.message)
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
.catch { e ->
|
|
1048
|
+
Log.e(TAG, "❌ Flow error during enrollment: ${e.message}")
|
|
1049
|
+
promise.reject("ENROLLMENT_FLOW_ERROR", e.message)
|
|
1050
|
+
}
|
|
1051
|
+
.launchIn(CoroutineScope(Dispatchers.Main))
|
|
1052
|
+
} catch (e: Exception) {
|
|
1053
|
+
Log.e(TAG, "❌ Error in continueEnrollment: ${e.message}")
|
|
1054
|
+
promise.reject("ENROLLMENT_ERROR", e.message)
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
|
|
981
1058
|
/**
|
|
982
1059
|
* Helper function to convert ReadableMap to JSON string.
|
|
983
1060
|
*/
|
package/ios/YunoSdk.m
CHANGED
|
@@ -98,5 +98,14 @@ RCT_EXTERN_METHOD(
|
|
|
98
98
|
rejecter:(RCTPromiseRejectBlock)rejecter
|
|
99
99
|
)
|
|
100
100
|
|
|
101
|
+
// Headless Enrollment Flow
|
|
102
|
+
RCT_EXTERN_METHOD(
|
|
103
|
+
continueEnrollment:(NSDictionary *)enrollmentCollectedData
|
|
104
|
+
customerSession:(NSString *)customerSession
|
|
105
|
+
countryCode:(NSString *)countryCode
|
|
106
|
+
resolver:(RCTPromiseResolveBlock)resolver
|
|
107
|
+
rejecter:(RCTPromiseRejectBlock)rejecter
|
|
108
|
+
)
|
|
109
|
+
|
|
101
110
|
@end
|
|
102
111
|
|
package/ios/YunoSdk.swift
CHANGED
|
@@ -591,9 +591,15 @@ extension YunoSdk {
|
|
|
591
591
|
|
|
592
592
|
let jsonData = try JSONSerialization.data(withJSONObject: tokenCollectedData, options: [])
|
|
593
593
|
|
|
594
|
+
// Debug: Print the JSON string
|
|
595
|
+
if let jsonString = String(data: jsonData, encoding: .utf8) {
|
|
596
|
+
print("🐛 iOS generateToken JSON: \(jsonString)")
|
|
597
|
+
}
|
|
598
|
+
|
|
594
599
|
// Decode to TokenCollectedData using the native SDK's Codable model
|
|
600
|
+
// Note: Don't use .convertFromSnakeCase because the SDK's models have custom decoders
|
|
601
|
+
// that already handle snake_case field names (checkout_session, payment_method, etc)
|
|
595
602
|
let decoder = JSONDecoder()
|
|
596
|
-
decoder.keyDecodingStrategy = .convertFromSnakeCase
|
|
597
603
|
let collectedData = try decoder.decode(TokenCollectedData.self, from: jsonData)
|
|
598
604
|
|
|
599
605
|
// Create API client using the native SDK's factory method
|
|
@@ -661,6 +667,67 @@ extension YunoSdk {
|
|
|
661
667
|
}
|
|
662
668
|
}
|
|
663
669
|
}
|
|
670
|
+
|
|
671
|
+
// MARK: - Headless Enrollment Flow
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* Continue enrollment to create a vaulted token from collected payment data.
|
|
675
|
+
* This method mirrors the native SDK's continueEnrollment() API.
|
|
676
|
+
*
|
|
677
|
+
* @param enrollmentCollectedData The enrollment data as NSDictionary
|
|
678
|
+
* @param customerSession The customer session ID
|
|
679
|
+
* @param countryCode The country code for the enrollment
|
|
680
|
+
* @param resolver Promise resolver
|
|
681
|
+
* @param rejecter Promise rejecter
|
|
682
|
+
*/
|
|
683
|
+
@objc
|
|
684
|
+
func continueEnrollment(
|
|
685
|
+
_ enrollmentCollectedData: NSDictionary,
|
|
686
|
+
customerSession: String,
|
|
687
|
+
countryCode: String,
|
|
688
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
689
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
690
|
+
) {
|
|
691
|
+
Task { @MainActor [weak self] in
|
|
692
|
+
guard let self = self else { return }
|
|
693
|
+
|
|
694
|
+
do {
|
|
695
|
+
// Convert NSDictionary to JSON Data
|
|
696
|
+
guard JSONSerialization.isValidJSONObject(enrollmentCollectedData) else {
|
|
697
|
+
rejecter("INVALID_DATA", "Invalid enrollment collected data", nil)
|
|
698
|
+
return
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
let jsonData = try JSONSerialization.data(withJSONObject: enrollmentCollectedData, options: [])
|
|
702
|
+
print("📦 EnrollmentCollectedData JSON sent to iOS SDK: \(String(data: jsonData, encoding: .utf8) ?? "Invalid JSON")")
|
|
703
|
+
|
|
704
|
+
// Decode to EnrollmentCollectedData using the native SDK's Codable model
|
|
705
|
+
let decoder = JSONDecoder()
|
|
706
|
+
let collectedData = try decoder.decode(EnrollmentCollectedData.self, from: jsonData)
|
|
707
|
+
|
|
708
|
+
// Create API client using the native SDK's factory method
|
|
709
|
+
let apiClient = Yuno.apiClientEnroll(
|
|
710
|
+
countryCode: countryCode,
|
|
711
|
+
customerSession: customerSession
|
|
712
|
+
)
|
|
713
|
+
|
|
714
|
+
// Continue enrollment using async/await (native SDK uses async throws)
|
|
715
|
+
let response = try await apiClient.continueEnrollment(data: collectedData)
|
|
716
|
+
|
|
717
|
+
// The native SDK returns [String: Any] with vaulted_token in "vaulted_token" key
|
|
718
|
+
if let vaultedToken = response["vaulted_token"] as? String {
|
|
719
|
+
let responseDict: [String: Any] = ["vaultedToken": vaultedToken]
|
|
720
|
+
resolver(responseDict)
|
|
721
|
+
} else if let error = response["error"] as? String {
|
|
722
|
+
rejecter("ENROLLMENT_ERROR", error, nil)
|
|
723
|
+
} else {
|
|
724
|
+
rejecter("ENROLLMENT_ERROR", "No vaulted token in response", nil)
|
|
725
|
+
}
|
|
726
|
+
} catch {
|
|
727
|
+
rejecter("ENROLLMENT_ERROR", "Failed to continue enrollment: \(error.localizedDescription)", error)
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
}
|
|
664
731
|
}
|
|
665
732
|
|
|
666
733
|
// Note: TokenCollectedData, CollectedData, CardData, and other related models
|
package/lib/commonjs/YunoSdk.js
CHANGED
|
@@ -563,6 +563,52 @@ class YunoSdk {
|
|
|
563
563
|
const country = countryCode || this.getCountryCode();
|
|
564
564
|
return native.getThreeDSecureChallenge(checkoutSession, country);
|
|
565
565
|
}
|
|
566
|
+
|
|
567
|
+
// ==================== HEADLESS ENROLLMENT FLOW ====================
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Continue enrollment to create a vaulted token from collected payment data using the headless flow.
|
|
571
|
+
* This method allows you to save payment information without using the UI components.
|
|
572
|
+
*
|
|
573
|
+
* @param enrollmentCollectedData The enrollment data to process
|
|
574
|
+
* @param customerSession The customer session ID
|
|
575
|
+
* @param countryCode The country code for the enrollment (optional, uses initialized value if not provided)
|
|
576
|
+
* @returns Promise resolving to the vaulted token or rejecting with an error
|
|
577
|
+
*
|
|
578
|
+
* @example
|
|
579
|
+
* ```typescript
|
|
580
|
+
* import { YunoSdk, CardType } from '@yuno-payments/yuno-sdk-react-native';
|
|
581
|
+
*
|
|
582
|
+
* try {
|
|
583
|
+
* const result = await YunoSdk.continueEnrollment({
|
|
584
|
+
* customerSession: '73ed16c5-4481-4dce-af42-404b68e21027',
|
|
585
|
+
* paymentMethod: {
|
|
586
|
+
* type: 'CARD',
|
|
587
|
+
* card: {
|
|
588
|
+
* save: true,
|
|
589
|
+
* detail: {
|
|
590
|
+
* expirationMonth: 11,
|
|
591
|
+
* expirationYear: 25,
|
|
592
|
+
* number: '4000000000001091',
|
|
593
|
+
* securityCode: '123',
|
|
594
|
+
* holderName: 'John Doe',
|
|
595
|
+
* type: CardType.CREDIT,
|
|
596
|
+
* },
|
|
597
|
+
* },
|
|
598
|
+
* },
|
|
599
|
+
* }, 'customerSessionId', 'BR');
|
|
600
|
+
*
|
|
601
|
+
* console.log('Vaulted Token:', result.vaultedToken);
|
|
602
|
+
* } catch (error) {
|
|
603
|
+
* console.error('Enrollment failed:', error);
|
|
604
|
+
* }
|
|
605
|
+
* ```
|
|
606
|
+
*/
|
|
607
|
+
static async continueEnrollment(enrollmentCollectedData, customerSession, countryCode) {
|
|
608
|
+
const native = getYunoNative();
|
|
609
|
+
const country = countryCode || this.getCountryCode();
|
|
610
|
+
return native.continueEnrollment(enrollmentCollectedData, customerSession, country);
|
|
611
|
+
}
|
|
566
612
|
}
|
|
567
613
|
exports.YunoSdk = YunoSdk;
|
|
568
614
|
//# sourceMappingURL=YunoSdk.js.map
|
|
@@ -1 +1 @@
|
|
|
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","generateToken","tokenCollectedData","country","getThreeDSecureChallenge","exports"],"sourceRoot":"../../src","sources":["YunoSdk.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;
|
|
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","generateToken","tokenCollectedData","country","getThreeDSecureChallenge","continueEnrollment","enrollmentCollectedData","customerSession","exports"],"sourceRoot":"../../src","sources":["YunoSdk.ts"],"mappings":"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AACA;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;;EAEA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaoD,aAAaA,CACxBC,kBAAsC,EACtCxB,eAAuB,EACvB9B,WAAoB,EACY;IAChC,MAAMN,MAAM,GAAGD,aAAa,CAAC,CAAC;IAC9B,MAAM8D,OAAO,GAAGvD,WAAW,IAAI,IAAI,CAACwB,cAAc,CAAC,CAAC;IAEpD,OAAO9B,MAAM,CAAC2D,aAAa,CAACC,kBAAkB,EAAExB,eAAe,EAAEyB,OAAO,CAAC;EAC3E;;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;AACA;EACE,aAAaC,wBAAwBA,CACnC1B,eAAuB,EACvB9B,WAAoB,EACoB;IACxC,MAAMN,MAAM,GAAGD,aAAa,CAAC,CAAC;IAC9B,MAAM8D,OAAO,GAAGvD,WAAW,IAAI,IAAI,CAACwB,cAAc,CAAC,CAAC;IAEpD,OAAO9B,MAAM,CAAC8D,wBAAwB,CAAC1B,eAAe,EAAEyB,OAAO,CAAC;EAClE;;EAEA;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,aAAaE,kBAAkBA,CAC7BC,uBAAgD,EAChDC,eAAuB,EACvB3D,WAAoB,EACiB;IACrC,MAAMN,MAAM,GAAGD,aAAa,CAAC,CAAC;IAC9B,MAAM8D,OAAO,GAAGvD,WAAW,IAAI,IAAI,CAACwB,cAAc,CAAC,CAAC;IAEpD,OAAO9B,MAAM,CAAC+D,kBAAkB,CAC9BC,uBAAuB,EACvBC,eAAe,EACfJ,OACF,CAAC;EACH;AACF;AAACK,OAAA,CAAAhE,OAAA,GAAAA,OAAA","ignoreList":[]}
|
|
@@ -13,4 +13,8 @@ let CardType = exports.CardType = /*#__PURE__*/function (CardType) {
|
|
|
13
13
|
CardType["DEBIT"] = "DEBIT";
|
|
14
14
|
return CardType;
|
|
15
15
|
}({});
|
|
16
|
+
/**
|
|
17
|
+
* Headless Enrollment Flow Types
|
|
18
|
+
* These types mirror the native SDK's EnrollmentCollectedData structure
|
|
19
|
+
*/
|
|
16
20
|
//# sourceMappingURL=HeadlessTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CardType","exports"],"sourceRoot":"../../../../src","sources":["core/types/HeadlessTypes.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAHA,IAKYA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CardType","exports"],"sourceRoot":"../../../../src","sources":["core/types/HeadlessTypes.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAHA,IAKYA,QAAQ,GAAAC,OAAA,CAAAD,QAAA,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAqFpB;AACA;AACA;AACA","ignoreList":[]}
|
package/lib/module/YunoSdk.js
CHANGED
|
@@ -557,5 +557,51 @@ export class YunoSdk {
|
|
|
557
557
|
const country = countryCode || this.getCountryCode();
|
|
558
558
|
return native.getThreeDSecureChallenge(checkoutSession, country);
|
|
559
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
|
+
}
|
|
560
606
|
}
|
|
561
607
|
//# sourceMappingURL=YunoSdk.js.map
|
|
@@ -1 +1 @@
|
|
|
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"],"sourceRoot":"../../src","sources":["YunoSdk.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,kBAAkB,EAAEC,QAAQ,QAAQ,cAAc;
|
|
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":"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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":[]}
|
|
@@ -8,4 +8,9 @@ export let CardType = /*#__PURE__*/function (CardType) {
|
|
|
8
8
|
CardType["DEBIT"] = "DEBIT";
|
|
9
9
|
return CardType;
|
|
10
10
|
}({});
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Headless Enrollment Flow Types
|
|
14
|
+
* These types mirror the native SDK's EnrollmentCollectedData structure
|
|
15
|
+
*/
|
|
11
16
|
//# sourceMappingURL=HeadlessTypes.js.map
|
|
@@ -1 +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","ignoreList":[]}
|
|
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.17
|
|
3
|
+
"version": "1.0.17",
|
|
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",
|
package/src/YunoSdk.ts
CHANGED
|
@@ -10,6 +10,8 @@ import type {
|
|
|
10
10
|
TokenCollectedData,
|
|
11
11
|
HeadlessTokenResponse,
|
|
12
12
|
ThreeDSecureChallengeResponse,
|
|
13
|
+
EnrollmentCollectedData,
|
|
14
|
+
HeadlessEnrollmentResponse,
|
|
13
15
|
} from './core/types';
|
|
14
16
|
import { YunoStatus, YunoLanguage, CardFlow } from './core/enums';
|
|
15
17
|
|
|
@@ -635,4 +637,59 @@ export class YunoSdk {
|
|
|
635
637
|
|
|
636
638
|
return native.getThreeDSecureChallenge(checkoutSession, country);
|
|
637
639
|
}
|
|
640
|
+
|
|
641
|
+
// ==================== HEADLESS ENROLLMENT FLOW ====================
|
|
642
|
+
|
|
643
|
+
/**
|
|
644
|
+
* Continue enrollment to create a vaulted token from collected payment data using the headless flow.
|
|
645
|
+
* This method allows you to save payment information without using the UI components.
|
|
646
|
+
*
|
|
647
|
+
* @param enrollmentCollectedData The enrollment data to process
|
|
648
|
+
* @param customerSession The customer session ID
|
|
649
|
+
* @param countryCode The country code for the enrollment (optional, uses initialized value if not provided)
|
|
650
|
+
* @returns Promise resolving to the vaulted token or rejecting with an error
|
|
651
|
+
*
|
|
652
|
+
* @example
|
|
653
|
+
* ```typescript
|
|
654
|
+
* import { YunoSdk, CardType } from '@yuno-payments/yuno-sdk-react-native';
|
|
655
|
+
*
|
|
656
|
+
* try {
|
|
657
|
+
* const result = await YunoSdk.continueEnrollment({
|
|
658
|
+
* customerSession: '73ed16c5-4481-4dce-af42-404b68e21027',
|
|
659
|
+
* paymentMethod: {
|
|
660
|
+
* type: 'CARD',
|
|
661
|
+
* card: {
|
|
662
|
+
* save: true,
|
|
663
|
+
* detail: {
|
|
664
|
+
* expirationMonth: 11,
|
|
665
|
+
* expirationYear: 25,
|
|
666
|
+
* number: '4000000000001091',
|
|
667
|
+
* securityCode: '123',
|
|
668
|
+
* holderName: 'John Doe',
|
|
669
|
+
* type: CardType.CREDIT,
|
|
670
|
+
* },
|
|
671
|
+
* },
|
|
672
|
+
* },
|
|
673
|
+
* }, 'customerSessionId', 'BR');
|
|
674
|
+
*
|
|
675
|
+
* console.log('Vaulted Token:', result.vaultedToken);
|
|
676
|
+
* } catch (error) {
|
|
677
|
+
* console.error('Enrollment failed:', error);
|
|
678
|
+
* }
|
|
679
|
+
* ```
|
|
680
|
+
*/
|
|
681
|
+
static async continueEnrollment(
|
|
682
|
+
enrollmentCollectedData: EnrollmentCollectedData,
|
|
683
|
+
customerSession: string,
|
|
684
|
+
countryCode?: string
|
|
685
|
+
): Promise<HeadlessEnrollmentResponse> {
|
|
686
|
+
const native = getYunoNative();
|
|
687
|
+
const country = countryCode || this.getCountryCode();
|
|
688
|
+
|
|
689
|
+
return native.continueEnrollment(
|
|
690
|
+
enrollmentCollectedData,
|
|
691
|
+
customerSession,
|
|
692
|
+
country
|
|
693
|
+
);
|
|
694
|
+
}
|
|
638
695
|
}
|
|
@@ -87,3 +87,24 @@ export interface HeadlessTokenResponse {
|
|
|
87
87
|
token?: string;
|
|
88
88
|
error?: string;
|
|
89
89
|
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Headless Enrollment Flow Types
|
|
93
|
+
* These types mirror the native SDK's EnrollmentCollectedData structure
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
export interface EnrollmentMethod {
|
|
97
|
+
type: string;
|
|
98
|
+
card: CardData;
|
|
99
|
+
customer?: Customer;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface EnrollmentCollectedData {
|
|
103
|
+
customerSession: string;
|
|
104
|
+
paymentMethod: EnrollmentMethod;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface HeadlessEnrollmentResponse {
|
|
108
|
+
vaultedToken?: string;
|
|
109
|
+
error?: string;
|
|
110
|
+
}
|