framepayments-react-native 1.0.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +434 -71
  2. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  3. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  4. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/8.9/gc.properties +0 -0
  6. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  7. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  8. package/android/.gradle/vcs-1/gc.properties +0 -0
  9. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  10. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/results.bin +1 -0
  11. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/BuildConfig.dex +0 -0
  12. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameCheckoutActivity$Companion.dex +0 -0
  13. package/android/build/.transforms/{3db830673120be833016e77c88c53305/transformed/debug → 5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex}/com/framepayments/reactnativeframe/FrameCheckoutActivity$tryShowCheckout$1.dex +0 -0
  14. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameCheckoutActivity.dex +0 -0
  15. package/android/build/.transforms/{3db830673120be833016e77c88c53305/transformed/debug → 5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex}/com/framepayments/reactnativeframe/FrameFlowActivity$CartItemDto.dex +0 -0
  16. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameFlowActivity$Companion.dex +0 -0
  17. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameFlowActivity$parseCartItems$type$1.dex +0 -0
  18. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameFlowActivity.dex +0 -0
  19. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameGooglePayActivity$Companion.dex +0 -0
  20. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameGooglePayActivity.dex +0 -0
  21. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameOnboardingActivity$Companion.dex +0 -0
  22. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameOnboardingActivity$parseCapabilities$type$1.dex +0 -0
  23. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameOnboardingActivity.dex +0 -0
  24. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameSDKModule$Companion.dex +0 -0
  25. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameSDKModule.dex +0 -0
  26. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/FrameSDKPackage.dex +0 -0
  27. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/framepayments/reactnativeframe/JsonConvertersKt.dex +0 -0
  28. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameCheckoutActivity$$InternalSyntheticLambda$2$28045340ca5b91151bb937065eeb5817c0f8f911bb460e6e7ed8bb228b67ee83$0.globals +0 -0
  29. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameFlowActivity$$InternalSyntheticLambda$2$467cdf1dabffeaa07b76e313efb66791f50d3ff264e427e91d1358ac5865a7a9$0.globals +0 -0
  30. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameFlowActivity$$InternalSyntheticLambda$2$d15cc37cc08a853958a9c0baad49f7fce1ef84e92db9baa5103646939a0fe3e5$0.globals +0 -0
  31. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameFlowActivity$$InternalSyntheticLambda$2$ee6ef8e6758d1b8e67a54e3fecfb200ac5e867541a69809ec1db49f74ffcada1$0.globals +0 -0
  32. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameGooglePayActivity$$InternalSyntheticLambda$2$46cecf303f126f7c9f20b615fc49b2714ec2eb4f046ae009cfdbce53a1759f18$0.globals +0 -0
  33. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameGooglePayActivity$$InternalSyntheticLambda$2$46cecf303f126f7c9f20b615fc49b2714ec2eb4f046ae009cfdbce53a1759f18$1.globals +0 -0
  34. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameGooglePayActivity$$InternalSyntheticLambda$2$46cecf303f126f7c9f20b615fc49b2714ec2eb4f046ae009cfdbce53a1759f18$2.globals +0 -0
  35. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameGooglePayActivity$$InternalSyntheticLambda$2$cdad629ad452b3c7f7de1310d225629dafa75285ad515d55f056371066170154$0.globals +0 -0
  36. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameOnboardingActivity$$InternalSyntheticLambda$2$5d91d018c63f48735ba5e2a00b14bd815f4ce248aa924e4a58bf6addce311837$0.globals +0 -0
  37. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameOnboardingActivity$$InternalSyntheticLambda$2$c9ac604bc80e3afcbfad7417717ae97568874f4e33246863c0d688abb3e89865$0.globals +0 -0
  38. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameSDKModule$$InternalSyntheticLambda$2$1f479ca48bf3a1c66ff65b38aaaef67a97119b29ddce703f8104188682007f0d$0.globals +0 -0
  39. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameSDKModule$$InternalSyntheticLambda$2$984ab30558bc904ed37602fa6e3ebf28f1ed69df6712b31b00c4f26fc26d3b70$0.globals +0 -0
  40. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameSDKModule$$InternalSyntheticLambda$2$f4a55b70e496f422e1e03998843d62c7208f0229c2d5d080706056e98810c892$0.globals +0 -0
  41. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameSDKModule$$InternalSyntheticLambda$2$f8d46f7169c404d37a1d505f19439b83090fbed62b5bdaf1e86717fdddebf622$0.globals +0 -0
  42. package/android/build/.transforms/5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_global-synthetics/com/framepayments/reactnativeframe/FrameSDKModule$$InternalSyntheticLambda$2$f8d46f7169c404d37a1d505f19439b83090fbed62b5bdaf1e86717fdddebf622$1.globals +0 -0
  43. package/android/build/generated/source/buildConfig/debug/com/framepayments/reactnativeframe/BuildConfig.java +10 -0
  44. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +26 -0
  45. package/android/build/intermediates/aar_metadata/debug/{aar-metadata.properties → writeDebugAarMetadata/aar-metadata.properties} +2 -1
  46. package/android/build/intermediates/android_res_source_set_path_map/debug/mapDebugSourceSetPaths/file-map.txt +10 -0
  47. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  48. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  49. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +2 -0
  50. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
  51. package/android/build/intermediates/incremental/debug/packageDebugResources/merged.dir/values/values.xml +10 -0
  52. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +6 -1
  53. package/android/build/intermediates/incremental/{packageDebugAssets → mergeDebugAssets}/merger.xml +1 -1
  54. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/framepayments-react-native_debug.kotlin_module +0 -0
  55. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/framepayments/reactnativeframe/BuildConfig.class +0 -0
  56. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +4 -0
  57. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +45 -0
  58. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +26 -0
  59. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  60. package/android/build/intermediates/packaged_res/debug/packageDebugResources/values/values.xml +10 -0
  61. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/framepayments-react-native_debug.kotlin_module +0 -0
  62. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/BuildConfig.class +0 -0
  63. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameCheckoutActivity$Companion.class +0 -0
  64. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameCheckoutActivity$tryShowCheckout$1.class +0 -0
  65. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameCheckoutActivity.class +0 -0
  66. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameFlowActivity$CartItemDto.class +0 -0
  67. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameFlowActivity$Companion.class +0 -0
  68. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameFlowActivity$parseCartItems$type$1.class +0 -0
  69. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameFlowActivity.class +0 -0
  70. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/FrameGooglePayActivity$Companion.class +0 -0
  71. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/FrameGooglePayActivity.class +0 -0
  72. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/FrameOnboardingActivity$Companion.class +0 -0
  73. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/FrameOnboardingActivity$parseCapabilities$type$1.class +0 -0
  74. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/FrameOnboardingActivity.class +0 -0
  75. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/FrameSDKModule$Companion.class +0 -0
  76. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/FrameSDKModule.class +0 -0
  77. package/android/build/intermediates/runtime_library_classes_dir/debug/{com → bundleLibRuntimeToDirDebug/com}/framepayments/reactnativeframe/FrameSDKPackage.class +0 -0
  78. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/framepayments/reactnativeframe/JsonConvertersKt.class +0 -0
  79. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +3 -0
  80. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  81. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  82. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  83. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  84. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  85. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  86. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  87. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  88. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  89. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  90. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  91. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  92. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  93. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  94. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  95. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  96. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  97. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  98. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  99. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  100. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  101. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  107. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  109. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  110. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  111. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  112. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  113. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  114. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  125. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  126. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  127. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  128. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  129. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  130. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  131. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  132. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  133. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  134. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  135. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  136. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  137. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  138. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  139. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  140. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  141. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +1 -1
  142. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  143. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  144. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  145. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  146. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  147. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  148. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  149. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  150. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  151. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  152. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  153. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  154. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  155. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  156. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  157. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  158. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  159. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  160. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  161. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  162. package/android/build/outputs/logs/manifest-merger-debug-report.txt +21 -5
  163. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  164. package/android/build/tmp/kotlin-classes/debug/META-INF/framepayments-react-native_debug.kotlin_module +0 -0
  165. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameCheckoutActivity$Companion.class +0 -0
  166. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameCheckoutActivity$tryShowCheckout$1.class +0 -0
  167. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameCheckoutActivity.class +0 -0
  168. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameFlowActivity$CartItemDto.class +0 -0
  169. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameFlowActivity$Companion.class +0 -0
  170. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameFlowActivity$parseCartItems$type$1.class +0 -0
  171. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameFlowActivity.class +0 -0
  172. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameGooglePayActivity$Companion.class +0 -0
  173. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameGooglePayActivity.class +0 -0
  174. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameOnboardingActivity$Companion.class +0 -0
  175. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameOnboardingActivity$parseCapabilities$type$1.class +0 -0
  176. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameOnboardingActivity.class +0 -0
  177. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameSDKModule$Companion.class +0 -0
  178. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameSDKModule.class +0 -0
  179. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/FrameSDKPackage.class +0 -0
  180. package/android/build/tmp/kotlin-classes/debug/com/framepayments/reactnativeframe/JsonConvertersKt.class +0 -0
  181. package/android/build.gradle +22 -24
  182. package/android/src/main/AndroidManifest.xml +10 -2
  183. package/android/src/main/java/com/framepayments/reactnativeframe/FrameFlowActivity.kt +2 -2
  184. package/android/src/main/java/com/framepayments/reactnativeframe/FrameGooglePayActivity.kt +148 -0
  185. package/android/src/main/java/com/framepayments/reactnativeframe/FrameOnboardingActivity.kt +68 -0
  186. package/android/src/main/java/com/framepayments/reactnativeframe/FrameSDKModule.kt +115 -33
  187. package/android/src/main/java/com/framepayments/reactnativeframe/JsonConverters.kt +39 -0
  188. package/android/src/main/res/values/frame_styles.xml +15 -0
  189. package/ios/ApplePayPresenter.swift +155 -0
  190. package/ios/FrameReactNative.podspec +10 -4
  191. package/ios/FrameSDKBridge.m +33 -4
  192. package/ios/FrameSDKBridge.swift +160 -26
  193. package/lib/components/FrameApplePayButton.d.ts +30 -0
  194. package/lib/components/FrameApplePayButton.d.ts.map +1 -0
  195. package/lib/components/FrameApplePayButton.js +42 -0
  196. package/lib/components/FrameGooglePayButton.d.ts +28 -0
  197. package/lib/components/FrameGooglePayButton.d.ts.map +1 -0
  198. package/lib/components/FrameGooglePayButton.js +24 -0
  199. package/lib/components/index.d.ts +5 -0
  200. package/lib/components/index.d.ts.map +1 -0
  201. package/lib/components/index.js +2 -0
  202. package/lib/index.d.ts +9 -4
  203. package/lib/index.d.ts.map +1 -1
  204. package/lib/index.js +13 -4
  205. package/lib/native.d.ts +9 -2
  206. package/lib/native.d.ts.map +1 -1
  207. package/lib/native.js +28 -4
  208. package/lib/types.d.ts +102 -7
  209. package/lib/types.d.ts.map +1 -1
  210. package/package.json +10 -15
  211. package/src/__tests__/native.test.ts +51 -14
  212. package/src/index.ts +44 -5
  213. package/src/native.ts +71 -6
  214. package/src/types.ts +133 -7
  215. package/android/build/.transforms/3db830673120be833016e77c88c53305/results.bin +0 -1
  216. package/android/build/.transforms/3db830673120be833016e77c88c53305/transformed/debug/com/framepayments/reactnativeframe/FrameCheckoutActivity$Companion.dex +0 -0
  217. package/android/build/.transforms/3db830673120be833016e77c88c53305/transformed/debug/com/framepayments/reactnativeframe/FrameCheckoutActivity.dex +0 -0
  218. package/android/build/.transforms/3db830673120be833016e77c88c53305/transformed/debug/com/framepayments/reactnativeframe/FrameFlowActivity$Companion.dex +0 -0
  219. package/android/build/.transforms/3db830673120be833016e77c88c53305/transformed/debug/com/framepayments/reactnativeframe/FrameFlowActivity$parseCartItems$type$1.dex +0 -0
  220. package/android/build/.transforms/3db830673120be833016e77c88c53305/transformed/debug/com/framepayments/reactnativeframe/FrameFlowActivity.dex +0 -0
  221. package/android/build/.transforms/3db830673120be833016e77c88c53305/transformed/debug/com/framepayments/reactnativeframe/FrameSDKModule.dex +0 -0
  222. package/android/build/.transforms/3db830673120be833016e77c88c53305/transformed/debug/com/framepayments/reactnativeframe/FrameSDKPackage.dex +0 -0
  223. package/android/build/.transforms/e32bd1e24a69eac3ebaf0c3a5e659207/results.bin +0 -1
  224. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +0 -18
  225. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  226. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  227. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  228. package/android/build/intermediates/java_res/debug/out/META-INF/framepayments-react-native_debug.kotlin_module +0 -0
  229. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +0 -2
  230. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +0 -27
  231. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +0 -18
  232. package/android/build/intermediates/runtime_library_classes_dir/debug/META-INF/framepayments-react-native_debug.kotlin_module +0 -0
  233. package/android/build/intermediates/runtime_library_classes_dir/debug/com/framepayments/reactnativeframe/FrameSDKModule.class +0 -0
  234. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  235. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +0 -1
  236. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  237. /package/android/{build/intermediates/compile_symbol_list/debug/R.txt → .gradle/8.9/dependencies-accessors/gc.properties} +0 -0
  238. /package/android/build/.transforms/{3db830673120be833016e77c88c53305/transformed/debug → 5a2061641b1fc5518a336681809507bc/transformed/bundleLibRuntimeToDirDebug}/desugar_graph.bin +0 -0
  239. /package/android/build/intermediates/aapt_friendly_merged_manifests/debug/{aapt → processDebugManifest/aapt}/output-metadata.json +0 -0
  240. /package/android/build/intermediates/annotation_processor_list/debug/{annotationProcessors.json → javaPreCompileDebug/annotationProcessors.json} +0 -0
  241. /package/android/build/intermediates/navigation_json/debug/{navigation.json → extractDeepLinksDebug/navigation.json} +0 -0
package/README.md CHANGED
@@ -1,15 +1,13 @@
1
1
  # Frame React Native SDK
2
2
 
3
- React Native SDK for [Frame Payments](https://framepayments.com). It bridges the native Frame iOS and Android SDKs to provide payment UI (checkout and cart modals) and initialization. For API operations (customers, charge intents, refunds, etc.), use the [framepayments](https://www.npmjs.com/package/framepayments) (frame-node) package from JavaScript.
3
+ React Native SDK for [Frame Payments](https://framepayments.com). Bridges the native Frame iOS and Android SDKs to provide payment UI (checkout, cart, and onboarding modals) directly in your React Native app. For server-side API operations (customers, charge intents, refunds, etc.), use the [framepayments](https://www.npmjs.com/package/framepayments) Node.js package.
4
4
 
5
5
  ## Requirements
6
6
 
7
- - React Native >= 0.72
7
+ - React Native >= 0.74
8
8
  - iOS 17+ / Android 8.0+ (API 26+)
9
9
  - A [Frame](https://framepayments.com) account and API key
10
10
 
11
- **Tested with:** Frame iOS SDK (SPM) and Frame Android SDK 1.2.x. Other compatible versions may work but are not officially tested.
12
-
13
11
  ## Installation
14
12
 
15
13
  ```bash
@@ -18,99 +16,414 @@ npm install framepayments-react-native
18
16
  yarn add framepayments-react-native
19
17
  ```
20
18
 
21
- ### iOS
19
+ ### iOS setup
22
20
 
23
- 1. **Add the Frame iOS SDK via Swift Package Manager** (required): In Xcode, open your project, then go to **File → Add Package Dependencies**. Enter:
24
- ```
25
- https://github.com/Frame-Payments/frame-ios
26
- ```
27
- Add the **Frame-iOS** package and choose the version or branch you need. The React Native SDK’s native code depends on it; CocoaPods cannot pull it in automatically.
28
-
29
- 2. **Preload Frame on the main thread** (required): Add this to your `AppDelegate.m` or `AppDelegate.mm` **before** calling `[super application:didFinishLaunchingWithOptions:]`:
30
- ```objc
31
- #import "YourAppName-Swift.h" // Use your app's module name
32
- // ...
33
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
34
- {
35
- [FramePreloader preloadOnMainThread]; // Prevents "Helpers are not supported by the default hub" crash
36
- return [super application:application didFinishLaunchingWithOptions:launchOptions];
37
- }
38
- ```
39
- `FramePreloader` is part of the SDK and loads Frame/Evervault/Sift on the main thread before the React Native bridge initializes.
21
+ #### 1. Add the Frame iOS SDK via Swift Package Manager
40
22
 
41
- **If your app has a different module name than the example** (e.g. not `FrameExampleTemp`), add `FRAME_SWIFT_HEADER="YourApp-Swift.h"` to your app target's **Preprocessor Macros** in Xcode build settings. The native bridge uses this to import the Swift header.
23
+ The React Native SDK's native layer depends on the Frame iOS SDK, which must be added manually via SPM CocoaPods cannot pull it in automatically.
42
24
 
43
- 3. **Install pods**:
44
- ```bash
45
- cd ios && pod install && cd ..
46
- ```
25
+ In Xcode: **File → Add Package Dependencies**, enter:
26
+
27
+ ```
28
+ https://github.com/Frame-Payments/frame-ios
29
+ ```
30
+
31
+ Add the **Frame-iOS** package and select the version you need.
32
+
33
+ #### 2. Preload Frame on the main thread
34
+
35
+ Add this to your `AppDelegate.m` or `AppDelegate.mm` **before** `[super application:didFinishLaunchingWithOptions:]`:
36
+
37
+ ```objc
38
+ #import "YourAppName-Swift.h" // use your app's module name
39
+
40
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
41
+ {
42
+ [FramePreloader preloadOnMainThread]; // must be first
43
+ return [super application:application didFinishLaunchingWithOptions:launchOptions];
44
+ }
45
+ ```
46
+
47
+ This prevents the **"Helpers are not supported by the default hub"** crash, which occurs when Frame/Evervault initializes on a background thread during React Native bridge startup.
48
+
49
+ > If your app module name isn't the default (i.e., not matching the generated `-Swift.h` header), set `FRAME_SWIFT_HEADER=YourApp-Swift.h` in your target's **Preprocessor Macros** in Xcode build settings.
47
50
 
48
- 4. Run the app (e.g. `npx react-native run-ios`). The example app already includes this setup.
51
+ #### 3. Install pods
49
52
 
50
- ### Android
53
+ ```bash
54
+ cd ios && pod install && cd ..
55
+ ```
51
56
 
52
- No extra steps; autolinking includes the native module.
57
+ ### Android setup
53
58
 
54
- ## Usage
59
+ No extra steps required. Autolinking handles the native module automatically.
55
60
 
56
- ### 1. Initialize
61
+ ---
57
62
 
58
- Call once at app startup (e.g. in your root component or App.js). Returns a Promise; await or catch to handle native init errors.
63
+ ## Quick start
59
64
 
60
65
  ```ts
61
66
  import Frame from 'framepayments-react-native';
62
67
 
63
- Frame.initialize({
64
- apiKey: 'YOUR_FRAME_SECRET_KEY',
65
- debugMode: false, // set true for development
66
- }).catch((e) => console.warn('Frame init failed:', e.message));
68
+ // 1. Initialize once at app startup
69
+ await Frame.initialize({
70
+ secretKey: 'sk_sandbox_...',
71
+ publishableKey: 'pk_sandbox_...',
72
+ debugMode: __DEV__,
73
+ });
74
+
75
+ // 2. Present a checkout modal
76
+ const chargeIntent = await Frame.presentCheckout({ amount: 10000 }); // cents
77
+
78
+ // 3. Present a cart flow
79
+ const result = await Frame.presentCart({
80
+ items: [{ id: '1', title: 'Hat', amountInCents: 5000, imageUrl: 'https://...' }],
81
+ shippingAmountInCents: 500,
82
+ });
83
+
84
+ // 4. Present an onboarding flow (KYC, bank account, etc.)
85
+ const onboarding = await Frame.presentOnboarding({
86
+ accountId: 'acct_xxx',
87
+ capabilities: ['kyc', 'bank_account_verification'],
88
+ });
67
89
  ```
68
90
 
69
- ### 2. Present Checkout
91
+ ---
70
92
 
71
- Opens the native checkout modal. Resolves with the created charge intent on success.
93
+ ## API reference
94
+
95
+ ### `Frame.initialize(options)`
96
+
97
+ Initializes the native SDK. Must be called before any `present*` method. Call once at app startup (e.g., in your root component's `useEffect`).
98
+
99
+ ```ts
100
+ await Frame.initialize({
101
+ secretKey: 'sk_sandbox_...', // your Frame secret key
102
+ publishableKey: 'pk_sandbox_...', // your Frame publishable key
103
+ debugMode: false, // set true in development to enable native debug logging
104
+ });
105
+ ```
106
+
107
+ | Option | Type | Required | Description |
108
+ |---|---|---|---|
109
+ | `secretKey` | `string` | Yes | Your Frame secret key (`sk_…`). Used for server-style operations. |
110
+ | `publishableKey` | `string` | Yes | Your Frame publishable key (`pk_…`). Used for client-side operations like wallet payments. |
111
+ | `debugMode` | `boolean` | No | Enables native debug logging and routes wallet flows through sandbox/test environments. Default: `false`. |
112
+
113
+ ---
114
+
115
+ ### `Frame.presentCheckout(options)`
116
+
117
+ Opens the native checkout modal. Resolves with a `ChargeIntent` when the user completes payment.
72
118
 
73
119
  ```ts
74
120
  const chargeIntent = await Frame.presentCheckout({
75
- customerId: 'cus_xxx', // optional
76
- amount: 10000, // cents
121
+ amount: 15000, // required, in cents
122
+ customerId: 'cus_xxx', // optional
77
123
  });
78
124
  ```
79
125
 
80
- ### 3. Present Cart
126
+ | Option | Type | Required | Description |
127
+ |---|---|---|---|
128
+ | `amount` | `number` | Yes | Payment amount in cents |
129
+ | `customerId` | `string` | No | Pre-associate the charge with a Frame customer |
130
+
131
+ **Returns:** [`ChargeIntent`](#chargeintent)
132
+
133
+ ---
134
+
135
+ ### `Frame.presentCart(options)`
81
136
 
82
- Opens the cart flow (cart screen then checkout). Resolves with the charge intent when the user completes payment.
137
+ Opens a cart review screen followed by the checkout flow. Resolves when the user completes payment or dismisses.
83
138
 
84
139
  ```ts
85
140
  const chargeIntent = await Frame.presentCart({
86
- customerId: 'cus_xxx', // optional
87
141
  items: [
88
- { id: '1', title: 'Product A', amountInCents: 10000, imageUrl: 'https://...' },
142
+ {
143
+ id: '1',
144
+ title: 'Vintage Track Jacket',
145
+ amountInCents: 10000,
146
+ imageUrl: 'https://example.com/jacket.jpg',
147
+ },
89
148
  ],
90
149
  shippingAmountInCents: 500,
150
+ customerId: 'cus_xxx', // optional
91
151
  });
92
152
  ```
93
153
 
94
- ### Error handling
154
+ | Option | Type | Required | Description |
155
+ |---|---|---|---|
156
+ | `items` | `FrameCartItem[]` | Yes | Array of items to display in the cart |
157
+ | `shippingAmountInCents` | `number` | Yes | Shipping cost in cents |
158
+ | `customerId` | `string` | No | Pre-associate the charge with a Frame customer |
159
+
160
+ **`FrameCartItem` shape:**
161
+
162
+ | Field | Type | Description |
163
+ |---|---|---|
164
+ | `id` | `string` | Unique identifier for the item |
165
+ | `title` | `string` | Display name |
166
+ | `amountInCents` | `number` | Item price in cents |
167
+ | `imageUrl` | `string` | URL of the product image |
168
+
169
+ **Returns:** [`ChargeIntent`](#chargeintent)
170
+
171
+ > **iOS limitation:** On iOS, `presentCart` resolves with an empty object (`{}`) rather than a full `ChargeIntent`. The underlying `FrameCartView` does not expose the charge intent from its nested checkout step. On Android, the full `ChargeIntent` is returned. Always guard with `intent?.id` before using the result.
172
+
173
+ ---
174
+
175
+ ### `Frame.presentOnboarding(options)`
176
+
177
+ Opens the native onboarding flow for KYC, identity verification, and payment method setup. Resolves when the user completes or dismisses.
178
+
179
+ ```ts
180
+ const result = await Frame.presentOnboarding({
181
+ accountId: 'acct_xxx',
182
+ capabilities: ['kyc', 'bank_account_verification'],
183
+ });
184
+
185
+ if (result.status === 'completed') {
186
+ console.log('Payment method created:', result.paymentMethodId);
187
+ }
188
+ ```
189
+
190
+ | Option | Type | Required | Description |
191
+ |---|---|---|---|
192
+ | `accountId` | `string` | No | The Frame account to onboard |
193
+ | `capabilities` | `OnboardingCapability[]` | No | Which onboarding steps to include (see below) |
194
+
195
+ **`capabilities` values:**
196
+
197
+ | Value | Description |
198
+ |---|---|
199
+ | `kyc` | Identity verification |
200
+ | `kyc_prefill` | Pre-populate KYC fields |
201
+ | `phone_verification` | Phone number verification |
202
+ | `age_verification` | Age verification |
203
+ | `address_verification` | Address verification |
204
+ | `geo_compliance` | Geolocation compliance check |
205
+ | `creator_shield` | Creator Shield enrollment |
206
+ | `card_verification` | Card verification |
207
+ | `card_send` | Enable card send capability |
208
+ | `card_receive` | Enable card receive capability |
209
+ | `bank_account_verification` | Bank account verification |
210
+ | `bank_account_send` | Enable bank account send |
211
+ | `bank_account_receive` | Enable bank account receive |
212
+
213
+ **Returns:** `OnboardingResult`
214
+
215
+ | Field | Type | Description |
216
+ |---|---|---|
217
+ | `status` | `'completed' \| 'cancelled'` | Whether the user finished or dismissed the flow |
218
+ | `paymentMethodId` | `string \| undefined` | Set when a payment method was created or verified during the flow |
219
+
220
+ ---
221
+
222
+ ### `Frame.presentApplePay(options)` (iOS)
223
+
224
+ Launches the native Apple Pay sheet, creates a Frame payment method from the authorized payment, and creates and confirms a charge intent. Resolves with the resulting `ChargeIntent`. Render your own button — Apple's `PKPaymentButton`, a community wrapper, or your own design-system component — and call this from its `onPress`.
225
+
226
+ ```tsx
227
+ import Frame from 'framepayments-react-native';
228
+
229
+ const intent = await Frame.presentApplePay({
230
+ amount: 15000,
231
+ currency: 'usd',
232
+ owner: { type: 'customer', id: 'cus_xxx' },
233
+ merchantId: 'merchant.com.yourapp',
234
+ });
235
+ console.log('Charge intent:', intent.id);
236
+ ```
237
+
238
+ | Option | Type | Required | Description |
239
+ |---|---|---|---|
240
+ | `amount` | `number` | Yes | Payment amount in cents |
241
+ | `currency` | `string` | No | ISO 4217 currency code. Default `'usd'` |
242
+ | `owner` | `{ type: 'customer' \| 'account', id: string }` | Yes | Frame customer or account that owns the resulting payment method |
243
+ | `merchantId` | `string` | Yes | Apple Pay merchant ID configured in your Apple Developer account |
95
244
 
96
- The SDK rejects with an error object that includes `code` and `message`. Common codes:
245
+ The promise rejects with `code: 'USER_CANCELED'` when the user dismisses the sheet, `'APPLE_PAY_UNAVAILABLE'` if the device cannot make Apple Pay payments, `'NOT_ATTESTED'` if device attestation has not completed yet (try again in a moment), and `'PAYMENT_METHOD_FAILED'` / `'CHARGE_INTENT_FAILED'` for backend failures.
97
246
 
98
- - `NOT_INITIALIZED` – You called `presentCheckout` or `presentCart` before `Frame.initialize()`.
99
- - `USER_CANCELED` – The user dismissed the modal or closed checkout without completing payment.
100
- - `NO_ACTIVITY` / `NO_ROOT_VC` No host activity or view controller available (e.g. app not ready).
247
+ **Required iOS setup:**
248
+
249
+ 1. **Apple Pay capability + merchant ID.** Add Apple Pay in your target's *Signing & Capabilities*, and register a merchant ID in your Apple Developer account.
250
+ 2. **App Attest entitlement.** The Frame iOS SDK uses Apple's App Attest for device attestation on every Apple Pay payment. Add to your `.entitlements`:
251
+ ```xml
252
+ <key>com.apple.developer.devicecheck.appattest-environment</key>
253
+ <string>development</string>
254
+ ```
255
+ Use `production` for App Store builds.
256
+ 3. **Real device required.** App Attest does not work in the simulator.
257
+ 4. **Frame dashboard configuration.** In your Frame dashboard, go to **Settings → Device Attestation** and set your Apple Team ID and the Bundle ID of your iOS app. These must exactly match the app you're running — the backend computes `SHA256("<TeamID>.<BundleID>")` and compares it to the hash signed by the device. If they don't match, payment-method creation fails with `App ID verification failed`.
258
+
259
+ On non-iOS platforms `Frame.presentApplePay` rejects synchronously with a not-supported error.
260
+
261
+ ---
262
+
263
+ ### `Frame.presentGooglePay(options)` (Android)
264
+
265
+ Launches the native Google Pay sheet, creates a Frame payment method from the wallet token, and creates and confirms a charge intent. Resolves with the resulting `ChargeIntent`. Render your own button (Google's `PayButton` from `play-services-pay`, a community wrapper, or your own component) and call this from its `onPress`.
266
+
267
+ ```tsx
268
+ import Frame from 'framepayments-react-native';
269
+
270
+ const intent = await Frame.presentGooglePay({
271
+ amountCents: 15000,
272
+ currencyCode: 'USD',
273
+ customerId: 'cus_xxx',
274
+ });
275
+ console.log('Charge intent:', intent.id);
276
+ ```
277
+
278
+ | Option | Type | Required | Description |
279
+ |---|---|---|---|
280
+ | `amountCents` | `number` | Yes | Payment amount in cents |
281
+ | `customerId` | `string` | No | Frame customer to associate the payment method with |
282
+ | `currencyCode` | `string` | No | ISO 4217 currency code. Default `'USD'` |
283
+ | `googlePayMerchantId` | `string` | No | Google Pay merchant ID override |
284
+
285
+ The promise rejects with `code: 'USER_CANCELED'` when the user dismisses the sheet, `'GOOGLE_PAY_UNAVAILABLE'` if Google Pay is not ready on the device (no signed-in account, no test card, or Wallet API disabled), and `'PAYMENT_FAILED'` for backend failures.
286
+
287
+ **Required Android setup:**
288
+
289
+ 1. **Google Pay metadata.** Add to your app's `AndroidManifest.xml` inside `<application>`:
290
+ ```xml
291
+ <meta-data
292
+ android:name="com.google.android.gms.wallet.api.enabled"
293
+ android:value="true" />
294
+ ```
295
+ 2. **Test environment.** When the SDK is initialized with `debugMode: true`, Google Pay runs in `ENVIRONMENT_TEST`; otherwise it uses `ENVIRONMENT_PRODUCTION`.
296
+
297
+ On non-Android platforms `Frame.presentGooglePay` rejects synchronously with a not-supported error.
298
+
299
+ ---
300
+
301
+ ### Rendering wallet buttons
302
+
303
+ Apple and Google both require their official button artwork (with light/dark variants) — custom-styled buttons can be rejected. Download the assets from [Apple's marketing page](https://developer.apple.com/apple-pay/marketing/) and [Google's brand guidelines page](https://developers.google.com/pay/api/android/guides/brand-guidelines), bundle them in your app, and pick a variant based on the active color scheme:
304
+
305
+ ```tsx
306
+ import { Image, Platform, TouchableOpacity, useColorScheme } from 'react-native';
307
+ import Frame from 'framepayments-react-native';
308
+
309
+ export function WalletButton({ amountCents, customerId, merchantId }) {
310
+ const colorScheme = useColorScheme();
311
+ const isDark = colorScheme === 'dark';
312
+
313
+ const onPress = async () => {
314
+ try {
315
+ if (Platform.OS === 'ios') {
316
+ await Frame.presentApplePay({
317
+ amount: amountCents,
318
+ currency: 'usd',
319
+ owner: { type: 'customer', id: customerId },
320
+ merchantId,
321
+ });
322
+ } else {
323
+ await Frame.presentGooglePay({ amountCents, customerId });
324
+ }
325
+ } catch (e: any) {
326
+ if (e.code === 'USER_CANCELED') return;
327
+ // surface the error to your UI
328
+ }
329
+ };
330
+
331
+ const source = Platform.OS === 'ios'
332
+ ? (isDark
333
+ ? require('./assets/applepay/button_buy_with_light.png')
334
+ : require('./assets/applepay/button_buy_with_dark.png'))
335
+ : (isDark
336
+ ? require('./assets/googlepay/button_buy_with_light.png')
337
+ : require('./assets/googlepay/button_buy_with_dark.png'));
338
+
339
+ return (
340
+ <TouchableOpacity onPress={onPress} activeOpacity={0.8} style={{ height: 56 }}>
341
+ <Image source={source} style={{ width: '100%', height: '100%' }} resizeMode="contain" />
342
+ </TouchableOpacity>
343
+ );
344
+ }
345
+ ```
346
+
347
+ A complete working example (including loading-state handling) lives in [example/App.tsx](./example/App.tsx).
348
+
349
+ ---
350
+
351
+ ### `ChargeIntent`
352
+
353
+ Returned from `presentCheckout` and `presentCart` (Android only for cart).
354
+
355
+ | Field | Type | Description |
356
+ |---|---|---|
357
+ | `id` | `string` | Unique charge intent ID |
358
+ | `amount` | `number` | Amount in cents |
359
+ | `currency` | `string` | ISO currency code (e.g. `"usd"`) |
360
+ | `status` | `ChargeIntentStatus` | Current status of the intent |
361
+ | `created` | `number` | Unix timestamp |
362
+ | `updated` | `number` | Unix timestamp |
363
+ | `livemode` | `boolean` | `true` in production, `false` in sandbox |
364
+ | `description` | `string \| undefined` | Optional description |
365
+ | `authorizationMode` | `'automatic' \| 'manual' \| undefined` | Capture mode |
366
+ | `failureDescription` | `string \| undefined` | Present when status is `failed` |
367
+ | `customer` | `Customer \| undefined` | Associated customer object |
368
+ | `paymentMethod` | `PaymentMethod \| undefined` | Payment method used |
369
+ | `latestCharge` | `Charge \| undefined` | Most recent charge on this intent |
370
+
371
+ **`ChargeIntentStatus` values:** `pending`, `succeeded`, `failed`, `canceled`, `incomplete`, `disputed`, `refunded`, `reversed`
372
+
373
+ ---
374
+
375
+ ### Error handling
376
+
377
+ All `present*` methods return Promises that reject with an error object containing `code` and `message`.
101
378
 
102
379
  ```ts
380
+ import Frame, { ErrorCodes } from 'framepayments-react-native';
381
+
103
382
  try {
104
383
  const intent = await Frame.presentCheckout({ amount: 10000 });
384
+ // handle success
105
385
  } catch (e: any) {
106
- if (e.code === 'USER_CANCELED') return;
107
- console.error(e.code, e.message);
386
+ if (e.code === ErrorCodes.USER_CANCELED) {
387
+ return; // user dismissed — not an error
388
+ }
389
+ console.error(`[${e.code}] ${e.message}`);
108
390
  }
109
391
  ```
110
392
 
111
- ### API calls (customers, charge intents, refunds)
393
+ **Error codes (`ErrorCodes`):**
394
+
395
+ | Code | When it's thrown |
396
+ |---|---|
397
+ | `NOT_INITIALIZED` | `present*` called before `Frame.initialize()` |
398
+ | `USER_CANCELED` | User dismissed the modal without completing |
399
+ | `INIT_FAILED` | Native SDK failed to initialize |
400
+ | `NO_ROOT_VC` | iOS: no root view controller available |
401
+ | `NO_ACTIVITY` | Android: no host activity available |
402
+ | `INVALID_ITEMS` | Cart items could not be parsed |
403
+ | `NO_RESULT` | Native activity returned OK but no payload |
404
+ | `PARSE_ERROR` | Could not decode the native response |
405
+ | `ENCODE_ERROR` | iOS: could not encode the charge intent |
406
+ | `NETWORK_ERROR` | Network failure in the native SDK |
407
+ | `API_ERROR` | Frame API returned an error |
112
408
 
113
- Install the Frame Node SDK (optional peer dependency) and use it from your React Native app:
409
+ You can also use the `isFrameError` and `normalizeToFrameError` utilities for typed error handling:
410
+
411
+ ```ts
412
+ import { isFrameError, normalizeToFrameError } from 'framepayments-react-native';
413
+
414
+ try {
415
+ await Frame.presentCheckout({ amount: 5000 });
416
+ } catch (e) {
417
+ const err = normalizeToFrameError(e);
418
+ // err.code, err.message, err.nativeError are all typed strings
419
+ }
420
+ ```
421
+
422
+ ---
423
+
424
+ ## Server-side API calls
425
+
426
+ For operations that don't involve UI (listing customers, creating charge intents, issuing refunds), install the optional `framepayments` Node.js SDK:
114
427
 
115
428
  ```bash
116
429
  npm install framepayments
@@ -119,36 +432,86 @@ npm install framepayments
119
432
  ```ts
120
433
  import { FrameSDK } from 'framepayments';
121
434
 
122
- const frame = new FrameSDK({ apiKey: 'YOUR_SECRET_KEY' });
435
+ const frame = new FrameSDK({ apiKey: 'sk_sandbox_...' });
436
+
123
437
  const customers = await frame.customers.list();
438
+ const accounts = await frame.accounts.list();
439
+ const paymentMethods = await frame.paymentMethods.list();
124
440
  ```
125
441
 
442
+ > **Security:** Never hardcode your Frame secret key in your app bundle. Fetch it from your own backend after the user authenticates — this keeps the key out of the binary and allows server-side rotation without an app update.
443
+ >
444
+ > ```ts
445
+ > // Fetch from your backend after login
446
+ > const { frameApiKey } = await myBackend.getSessionConfig();
447
+ > const frame = new FrameSDK({ apiKey: frameApiKey });
448
+ > ```
449
+
450
+ ---
451
+
126
452
  ## Security
127
453
 
128
- - **API key**: Use your Frame **secret** key only in a secure context. Do not commit it to source control; use environment variables or a secure config.
129
- - **Production**: Disable `debugMode` in production to avoid logging sensitive data.
130
- - Payment card data is handled by the native Frame SDKs (Evervault, etc.) and never touches your JS bundle.
454
+ - **Never bundle your secret key.** Anyone with access to your IPA or APK can extract embedded secrets. Fetch the key from your backend at runtime.
455
+ - **Don't commit keys to source control.** Use environment variables or a secrets manager.
456
+ - **Disable `debugMode` in production** to avoid logging sensitive data to the console.
457
+ - Payment card data is handled entirely by the native Frame SDKs (via Evervault) and never passes through your JavaScript bundle.
458
+
459
+ ---
460
+
461
+ ## Troubleshooting
131
462
 
132
- ## Troubleshooting (iOS)
463
+ ### "Helpers are not supported by the default hub" (iOS)
133
464
 
134
- - **"Helpers are not supported by the default hub"** – This occurs when Frame/Evervault loads on a background thread during React Native bridge init. **Fix:** Call `[FramePreloader preloadOnMainThread]` in your `AppDelegate` before `[super application:didFinishLaunchingWithOptions:]` (see [Installation – iOS](#ios) step 2). Also ensure the **Frame-iOS** Swift package is added in Xcode (**File → Add Package Dependencies** → `https://github.com/Frame-Payments/frame-ios`).
465
+ Frame/Evervault loaded on a background thread before the main thread was ready. Fix: add `[FramePreloader preloadOnMainThread]` to your `AppDelegate` before `[super application:didFinishLaunchingWithOptions:]`. See [iOS setup](#ios-setup).
135
466
 
136
- ## Running the example
467
+ Also ensure the **Frame-iOS** Swift package is added in Xcode (**File → Add Package Dependencies** → `https://github.com/Frame-Payments/frame-ios`).
137
468
 
138
- The [example](./example) folder contains a sample app (App.tsx, package.json) that uses the SDK for init, presentCheckout, presentCart, and frame-node for listing customers.
469
+ ### "The package doesn't seem to be linked"
139
470
 
140
- 1. **From this repo (local SDK):** Create a new React Native app (e.g. `npx react-native init FrameExample`), then copy `example/App.tsx` into it and add the dependency: `"framepayments-react-native": "file:/path/to/frame-react-native"`. Run `npm install`. On iOS: add Frame-iOS via SPM in Xcode (see [Installation – iOS](#ios) above), then `cd ios && pod install`. See [example/README.md](./example/README.md) for details.
141
- 2. **Using the published package:** Install `framepayments-react-native` and `framepayments` in your app and use the same patterns as in `example/App.tsx`.
471
+ - iOS: run `cd ios && pod install`, then rebuild.
472
+ - Android: rebuild the app (`npm run android`).
473
+ - Both: make sure you're running a debug build (not Expo Go), since this SDK uses native modules.
142
474
 
143
- ## Release checklist
475
+ ### Spinner stuck after onboarding completes (iOS)
476
+
477
+ Ensure you are using SDK version 1.1.0+. Earlier versions had a bug where programmatic dismiss from the onboarding flow did not resolve the promise.
478
+
479
+ ### `presentCart` returns `{}` on iOS
480
+
481
+ This is a known limitation of `FrameCartView` on iOS — it does not expose the `ChargeIntent` from its nested checkout. On Android, the full object is returned. Guard with `intent?.id` before reading the result.
482
+
483
+ ### `App ID verification failed` from `presentApplePay`
484
+
485
+ The Frame backend computes `SHA256("<TeamID>.<BundleID>")` from the merchant's dashboard configuration and compares it to the hash signed by the device during attestation. A mismatch returns `App ID verification failed`. Fix: open your Frame dashboard → **Settings → Device Attestation** and confirm both the Apple Team ID and the Bundle ID match the iOS app you're running.
486
+
487
+ ### `settings.gradle` build error on Android (RN 0.74+)
488
+
489
+ If you see `Could not read script '.../cli-platform-android/native_modules.gradle'`, remove the `apply from:` line referencing it from your `android/settings.gradle`. This file was removed in newer versions of `@react-native-community/cli-platform-android`; the gradle plugin handles it automatically.
490
+
491
+ ---
492
+
493
+ ## Example app
494
+
495
+ The [example/](./example) directory contains a full working app demonstrating all SDK features.
496
+
497
+ **Run on iOS:**
498
+ ```bash
499
+ cd example
500
+ npm install
501
+ cd ios && pod install && cd ..
502
+ npm run ios
503
+ ```
504
+
505
+ **Run on Android:**
506
+ ```bash
507
+ cd example
508
+ npm install
509
+ npm run android
510
+ ```
144
511
 
145
- For maintainers publishing a new version:
512
+ The example app covers `initialize`, `presentCheckout`, `presentCart`, `presentOnboarding`, and server-side API calls via `framepayments`.
146
513
 
147
- 1. Bump version in `package.json`
148
- 2. Update `CHANGELOG.md` with the new version and date
149
- 3. Commit and tag: `git tag v1.0.0`
150
- 4. Push and create a GitHub release
151
- 5. Publish: `npm publish --access public` (for scoped packages)
514
+ ---
152
515
 
153
516
  ## License
154
517
 
File without changes
@@ -0,0 +1,2 @@
1
+ #Wed Apr 01 08:57:15 EDT 2026
2
+ gradle.version=8.9
File without changes
@@ -0,0 +1,13 @@
1
+ arguments=--init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/861a75667e10803d304a058d833cb7404195ca44013d0d61d3b653eb084379b8.gradle --init-script /var/folders/my/2knngz1131q4pq8rnxxjb3_h0000gn/T/68eb1b6516fe21c6fbba58e63c99c3207ccfc918360613709367eecde56fa77f.gradle
2
+ auto.sync=false
3
+ build.scans.enabled=false
4
+ connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(8.9))
5
+ connection.project.dir=../../../android
6
+ eclipse.preferences.version=1
7
+ gradle.user.home=
8
+ java.home=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
9
+ jvm.arguments=
10
+ offline.mode=false
11
+ override.workspace.settings=true
12
+ show.console.view=true
13
+ show.executions.view=true
@@ -0,0 +1 @@
1
+ o/bundleLibRuntimeToDirDebug