@@ -852,30 +852,41 @@ export const AFPurchaseType = {
852852} ;
853853
854854/**
855- * Validate and log in-app purchase with support for both legacy and new APIs.
856- *
857- * - **Legacy API**: validateAndLogInAppPurchase(purchaseInfo, successC, errorC)
858- * - **New API**: validateAndLogInAppPurchase(purchaseDetails, additionalParameters, callback)
859- *
860- * The method automatically detects which API to use based on the parameters:
861- * - If first parameter has 'purchaseType' property, uses new API
862- * - Otherwise, uses legacy API
855+ * [LEGACY WARNING] This is the legacy validateAndLogInAppPurchase API.
863856 */
864- appsFlyer . validateAndLogInAppPurchase = ( param1 , param2 , param3 ) => {
865- // Debug: Check if native methods exist
866- console . log ( '[AppsFlyer] RNAppsFlyer methods:' , Object . keys ( RNAppsFlyer ) ) ;
867- console . log ( '[AppsFlyer] validateAndLogInAppPurchaseV2 exists:' , typeof RNAppsFlyer . validateAndLogInAppPurchaseV2 ) ;
857+ appsFlyer . validateAndLogInAppPurchase = ( purchaseInfo , successCallback , errorCallback ) => {
858+ console . log ( '[AppsFlyer] Using legacy validateAndLogInAppPurchase API' ) ;
859+ return RNAppsFlyer . validateAndLogInAppPurchase ( purchaseInfo , successCallback , errorCallback ) ;
860+ } ;
861+
862+ /**
863+ * New validateAndLogInAppPurchase API with AFPurchaseDetails support.
864+ */
865+ appsFlyer . validateAndLogInAppPurchaseV2 = ( purchaseDetails , additionalParameters , callback ) => {
866+ console . log ( '[AppsFlyer] Using new validateAndLogInAppPurchaseV2 API with AFPurchaseDetails' ) ;
868867
869- // Detect which API to use based on the first parameter
870- if ( param1 && typeof param1 === 'object' && param1 . purchaseType ) {
871- // New API: (purchaseDetails, additionalParameters, callback)
872- console . log ( '[AppsFlyer] Using new validateAndLogInAppPurchase API with AFPurchaseDetails' ) ;
873- return RNAppsFlyer . validateAndLogInAppPurchaseV2 ( param1 , param2 , param3 ) ;
874- } else {
875- // Legacy API: (purchaseInfo, successC, errorC)
876- console . log ( '[AppsFlyer] Using legacy validateAndLogInAppPurchase API' ) ;
877- return RNAppsFlyer . validateAndLogInAppPurchase ( param1 , param2 , param3 ) ;
868+ if ( callback && typeof callback === typeof Function ) {
869+ const listener = appsFlyerEventEmitter . addListener (
870+ "onValidationResult" ,
871+ ( _data ) => {
872+ try {
873+ let data = JSON . parse ( _data ) ;
874+ callback ( data ) ;
875+ } catch ( _error ) {
876+ callback ( new AFParseJSONException ( "Invalid data structure" , _data ) ) ;
877+ }
878+ }
879+ ) ;
880+
881+ eventsMap [ "onValidationResult" ] = listener ;
882+
883+ // unregister listener (suppose should be called from componentWillUnmount() )
884+ return function remove ( ) {
885+ listener . remove ( ) ;
886+ } ;
878887 }
888+
889+ return RNAppsFlyer . validateAndLogInAppPurchaseV2 ( purchaseDetails , additionalParameters ) ;
879890} ;
880891
881892appsFlyer . setUseReceiptValidationSandbox = ( isSandbox ) => {
0 commit comments