react-native-payengine 1.0.6 → 2.0.2

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 (300) hide show
  1. package/README.md +193 -111
  2. package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
  3. package/android/.gradle/{5.6.4/fileHashes/resourceHashesCache.bin → 6.1.1/fileHashes/fileHashes.bin} +0 -0
  4. package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  6. package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
  7. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  8. package/android/.gradle/checksums/checksums.lock +0 -0
  9. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  10. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  11. package/android/.gradle/config.properties +2 -0
  12. package/android/.idea/caches/deviceStreaming.xml +318 -0
  13. package/android/.idea/gradle.xml +2 -3
  14. package/android/.idea/kotlinc.xml +6 -0
  15. package/android/.idea/migrations.xml +10 -0
  16. package/android/.idea/misc.xml +1 -1
  17. package/android/build.gradle +24 -3
  18. package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  19. package/android/paymentsdk-debug.aar +0 -0
  20. package/android/paymentsdk-release.aar +0 -0
  21. package/android/src/main/java/com/reactnativepayengine/PayengineModule.java +1 -5
  22. package/android/src/main/java/com/reactnativepayengine/PayenginePackage.java +7 -33
  23. package/android/src/main/java/com/reactnativepayengine/util/MetricsUtil.kt +44 -0
  24. package/android/src/main/java/com/reactnativepayengine/v2/RNPEFraudAnalyticsApplication.java +55 -0
  25. package/android/src/main/java/com/reactnativepayengine/v2/RNPayEngineNative.kt +71 -0
  26. package/android/src/main/java/com/reactnativepayengine/v2/securefields/RNPEEvents.kt +8 -0
  27. package/android/src/main/java/com/reactnativepayengine/v2/securefields/RNPEField.kt +17 -0
  28. package/android/src/main/java/com/reactnativepayengine/v2/securefields/bankaccount/RNBankAccountViewManager.kt +103 -0
  29. package/android/src/main/java/com/reactnativepayengine/v2/securefields/bankaccount/RNPEBankAccountView.kt +77 -0
  30. package/android/src/main/java/com/reactnativepayengine/v2/securefields/creditcard/RNPECreditCardView.kt +77 -0
  31. package/android/src/main/java/com/reactnativepayengine/v2/securefields/creditcard/RNPECreditCardViewManager.kt +103 -0
  32. package/ios/PayEngineSDK.xcframework/Info.plist +44 -0
  33. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Frameworks/libKountDataCollector.a +0 -0
  34. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Headers/CustomWindow.h +25 -0
  35. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Headers/KDataCollector.h +106 -0
  36. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Headers/KountAnalyticsViewController.h +82 -0
  37. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Headers/PayEngineSDK-Swift.h +622 -0
  38. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Headers/PayEngineSDK.h +20 -0
  39. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Headers/UIControl+CustomControl.h +33 -0
  40. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Headers/UIViewController+TouchControl.h +27 -0
  41. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Info.plist +0 -0
  42. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios.abi.json +15143 -0
  43. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +326 -0
  44. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios.private.swiftinterface-e +326 -0
  45. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  46. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios.swiftinterface +326 -0
  47. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios.swiftinterface-e +326 -0
  48. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/Modules/module.modulemap +11 -0
  49. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/PayEngineSDK +0 -0
  50. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/VGSCollectSDK_VGSCollectSDK.bundle/Assets.car +0 -0
  51. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/VGSCollectSDK_VGSCollectSDK.bundle/Info.plist +0 -0
  52. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/browserInfo.html +136 -0
  53. package/ios/PayEngineSDK.xcframework/ios-arm64/PayEngineSDK.framework/perform3ds.html +467 -0
  54. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Frameworks/libKountDataCollector.a +0 -0
  55. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Headers/CustomWindow.h +25 -0
  56. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Headers/KDataCollector.h +106 -0
  57. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Headers/KountAnalyticsViewController.h +82 -0
  58. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Headers/PayEngineSDK-Swift.h +1240 -0
  59. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Headers/PayEngineSDK.h +20 -0
  60. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Headers/UIControl+CustomControl.h +33 -0
  61. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Headers/UIViewController+TouchControl.h +27 -0
  62. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Info.plist +0 -0
  63. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +15143 -0
  64. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +326 -0
  65. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface-e +326 -0
  66. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  67. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +326 -0
  68. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface-e +326 -0
  69. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +15143 -0
  70. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +326 -0
  71. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface-e +326 -0
  72. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  73. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +326 -0
  74. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/PayEngineSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface-e +326 -0
  75. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/Modules/module.modulemap +11 -0
  76. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/PayEngineSDK +0 -0
  77. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/VGSCollectSDK_VGSCollectSDK.bundle/Assets.car +0 -0
  78. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/VGSCollectSDK_VGSCollectSDK.bundle/Info.plist +0 -0
  79. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/browserInfo.html +136 -0
  80. package/ios/PayEngineSDK.xcframework/ios-arm64_x86_64-simulator/PayEngineSDK.framework/perform3ds.html +467 -0
  81. package/ios/Payengine.xcodeproj/project.pbxproj +14 -4
  82. package/ios/Payengine.xcodeproj/project.xcworkspace/xcuserdata/tringuyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  83. package/ios/Payengine.xcworkspace/contents.xcworkspacedata +7 -0
  84. package/ios/Payengine.xcworkspace/xcuserdata/tringuyen.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  85. package/ios/Sources/Classes/ApplePay/RNPEApplePayButton.swift +111 -0
  86. package/ios/Sources/Classes/ApplePay/RNPEApplePayPaymentRequest.swift +43 -0
  87. package/ios/Sources/Classes/RNPEError.swift +12 -0
  88. package/ios/Sources/Classes/RNPEEventEmitter.swift +29 -0
  89. package/ios/Sources/Classes/RNPEUtils.swift +30 -0
  90. package/ios/Sources/Classes/RNPayEngineNative.swift +87 -0
  91. package/ios/Sources/Classes/SecureFields/RNPEBankAccountView.swift +130 -0
  92. package/ios/Sources/Classes/SecureFields/RNPECreditCardView.swift +129 -0
  93. package/ios/Sources/Classes/SecureFields/RNPEEvents.swift +15 -0
  94. package/ios/Sources/Classes/SecureFields/RNPEField.swift +26 -0
  95. package/ios/Sources/Payengine.m +73 -0
  96. package/ios/Sources/Payengine.swift +13 -0
  97. package/lib/commonjs/components/PayEngine.js +2 -123
  98. package/lib/commonjs/components/PayEngine.js.map +1 -1
  99. package/lib/commonjs/components/{SecureFields/VGS/ExpDateField.js → v2/ApplePay/PEApplePayButton.js} +38 -13
  100. package/lib/commonjs/components/v2/ApplePay/PEApplePayButton.js.map +1 -0
  101. package/lib/commonjs/components/v2/ApplePay/PEPaymentRequest.js +29 -0
  102. package/lib/commonjs/components/v2/ApplePay/PEPaymentRequest.js.map +1 -0
  103. package/lib/commonjs/components/v2/PayEngineNative.js +34 -0
  104. package/lib/commonjs/components/v2/PayEngineNative.js.map +1 -0
  105. package/lib/commonjs/components/{SecureFields/VGS/TextField.js → v2/PayEngineProvider.js} +28 -12
  106. package/lib/commonjs/components/v2/PayEngineProvider.js.map +1 -0
  107. package/lib/commonjs/components/v2/SecureFields/BankAccountView.js +89 -0
  108. package/lib/commonjs/components/v2/SecureFields/BankAccountView.js.map +1 -0
  109. package/lib/commonjs/components/v2/SecureFields/CreditCardView.js +90 -0
  110. package/lib/commonjs/components/v2/SecureFields/CreditCardView.js.map +1 -0
  111. package/lib/commonjs/components/v2/SecureFields/IPEField.js +6 -0
  112. package/lib/commonjs/components/v2/SecureFields/IPEField.js.map +1 -0
  113. package/lib/commonjs/components/v2/SecureFields/PEBankAccount.js +6 -0
  114. package/lib/commonjs/components/v2/SecureFields/PEBankAccount.js.map +1 -0
  115. package/lib/commonjs/components/v2/SecureFields/PECard.js +6 -0
  116. package/lib/commonjs/components/v2/SecureFields/PECard.js.map +1 -0
  117. package/lib/commonjs/components/v2/SecureFields/PEKeyboardType.js +18 -0
  118. package/lib/commonjs/components/v2/SecureFields/PEKeyboardType.js.map +1 -0
  119. package/lib/commonjs/index.js +54 -18
  120. package/lib/commonjs/index.js.map +1 -1
  121. package/lib/commonjs/interfaces/index.js +0 -4
  122. package/lib/commonjs/interfaces/index.js.map +1 -1
  123. package/lib/commonjs/utils/index.js +10 -38
  124. package/lib/commonjs/utils/index.js.map +1 -1
  125. package/lib/module/components/PayEngine.js +3 -118
  126. package/lib/module/components/PayEngine.js.map +1 -1
  127. package/lib/module/components/v2/ApplePay/PEApplePayButton.js +37 -0
  128. package/lib/module/components/v2/ApplePay/PEApplePayButton.js.map +1 -0
  129. package/lib/module/components/v2/ApplePay/PEPaymentRequest.js +20 -0
  130. package/lib/module/components/v2/ApplePay/PEPaymentRequest.js.map +1 -0
  131. package/lib/module/components/v2/PayEngineNative.js +23 -0
  132. package/lib/module/components/v2/PayEngineNative.js.map +1 -0
  133. package/lib/module/components/v2/PayEngineProvider.js +30 -0
  134. package/lib/module/components/v2/PayEngineProvider.js.map +1 -0
  135. package/lib/module/components/v2/SecureFields/BankAccountView.js +75 -0
  136. package/lib/module/components/v2/SecureFields/BankAccountView.js.map +1 -0
  137. package/lib/module/components/v2/SecureFields/CreditCardView.js +76 -0
  138. package/lib/module/components/v2/SecureFields/CreditCardView.js.map +1 -0
  139. package/lib/module/components/v2/SecureFields/IPEField.js +2 -0
  140. package/lib/module/components/v2/SecureFields/IPEField.js.map +1 -0
  141. package/lib/module/components/v2/SecureFields/PEBankAccount.js +2 -0
  142. package/lib/module/components/v2/SecureFields/PEBankAccount.js.map +1 -0
  143. package/lib/module/components/v2/SecureFields/PECard.js +2 -0
  144. package/lib/module/components/v2/SecureFields/PECard.js.map +1 -0
  145. package/lib/module/components/v2/SecureFields/PEKeyboardType.js +11 -0
  146. package/lib/module/components/v2/SecureFields/PEKeyboardType.js.map +1 -0
  147. package/lib/module/index.js +14 -6
  148. package/lib/module/index.js.map +1 -1
  149. package/lib/module/interfaces/index.js +1 -1
  150. package/lib/module/interfaces/index.js.map +1 -1
  151. package/lib/module/utils/index.js +6 -37
  152. package/lib/module/utils/index.js.map +1 -1
  153. package/lib/typescript/components/PayEngine.d.ts +1 -14
  154. package/lib/typescript/components/v2/ApplePay/PEApplePayButton.d.ts +12 -0
  155. package/lib/typescript/components/v2/ApplePay/PEPaymentRequest.d.ts +12 -0
  156. package/lib/typescript/components/v2/PayEngineNative.d.ts +5 -0
  157. package/lib/typescript/components/v2/PayEngineProvider.d.ts +8 -0
  158. package/lib/typescript/components/v2/SecureFields/BankAccountView.d.ts +14 -0
  159. package/lib/typescript/components/v2/SecureFields/CreditCardView.d.ts +14 -0
  160. package/lib/typescript/components/v2/SecureFields/IPEField.d.ts +10 -0
  161. package/lib/typescript/components/v2/SecureFields/PEBankAccount.d.ts +11 -0
  162. package/lib/typescript/components/v2/SecureFields/PECard.d.ts +13 -0
  163. package/lib/typescript/components/v2/SecureFields/PEKeyboardType.d.ts +7 -0
  164. package/lib/typescript/index.d.ts +12 -6
  165. package/lib/typescript/interfaces/index.d.ts +0 -27
  166. package/lib/typescript/utils/index.d.ts +3 -36
  167. package/package.json +12 -7
  168. package/react-native-payengine.podspec +2 -2
  169. package/src/components/PayEngine.tsx +5 -118
  170. package/src/components/v2/ApplePay/PEApplePayButton.tsx +70 -0
  171. package/src/components/v2/ApplePay/PEPaymentRequest.ts +18 -0
  172. package/src/components/v2/PayEngineNative.tsx +20 -0
  173. package/src/components/v2/PayEngineProvider.tsx +30 -0
  174. package/src/components/v2/SecureFields/BankAccountView.tsx +95 -0
  175. package/src/components/v2/SecureFields/CreditCardView.tsx +96 -0
  176. package/src/components/v2/SecureFields/IPEField.ts +12 -0
  177. package/src/components/v2/SecureFields/PEBankAccount.ts +12 -0
  178. package/src/components/v2/SecureFields/PECard.ts +14 -0
  179. package/src/components/v2/SecureFields/PEKeyboardType.ts +8 -0
  180. package/src/index.tsx +47 -22
  181. package/src/interfaces/index.ts +0 -32
  182. package/src/utils/index.ts +8 -36
  183. package/android/.gradle/5.6.4/executionHistory/executionHistory.bin +0 -0
  184. package/android/.gradle/5.6.4/executionHistory/executionHistory.lock +0 -0
  185. package/android/.gradle/5.6.4/fileContent/fileContent.lock +0 -0
  186. package/android/.gradle/5.6.4/fileHashes/fileHashes.bin +0 -0
  187. package/android/.gradle/5.6.4/fileHashes/fileHashes.lock +0 -0
  188. package/android/.gradle/5.6.4/javaCompile/classAnalysis.bin +0 -0
  189. package/android/.gradle/5.6.4/javaCompile/jarAnalysis.bin +0 -0
  190. package/android/.gradle/5.6.4/javaCompile/javaCompile.lock +0 -0
  191. package/android/.gradle/5.6.4/javaCompile/taskHistory.bin +0 -0
  192. package/android/src/main/java/com/reactnativepayengine/collect/VGSCollectModule.java +0 -153
  193. package/android/src/main/java/com/reactnativepayengine/collect/VGSCollectOnCreateViewInstanceListener.java +0 -6
  194. package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSCVCField.java +0 -67
  195. package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSCardHolderNameField.java +0 -53
  196. package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSCardNumberField.java +0 -57
  197. package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSExpDateField.java +0 -54
  198. package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSTextField.java +0 -57
  199. package/android/src/main/java/com/reactnativepayengine/collect/fields/VGSZipCodeField.java +0 -62
  200. package/android/src/main/java/com/reactnativepayengine/util/ResourceUtil.java +0 -14
  201. package/ios/Payengine.m +0 -72
  202. package/ios/Payengine.swift +0 -720
  203. package/lib/commonjs/components/ApplePay/PayEngineApplePay.js +0 -71
  204. package/lib/commonjs/components/ApplePay/PayEngineApplePay.js.map +0 -1
  205. package/lib/commonjs/components/ApplePay/index.js +0 -46
  206. package/lib/commonjs/components/ApplePay/index.js.map +0 -1
  207. package/lib/commonjs/components/ApplePay/interfaces.js +0 -2
  208. package/lib/commonjs/components/ApplePay/interfaces.js.map +0 -1
  209. package/lib/commonjs/components/CreditCardForm/index.js +0 -76
  210. package/lib/commonjs/components/CreditCardForm/index.js.map +0 -1
  211. package/lib/commonjs/components/GooglePay/PayEngineGooglePay.js +0 -65
  212. package/lib/commonjs/components/GooglePay/PayEngineGooglePay.js.map +0 -1
  213. package/lib/commonjs/components/GooglePay/index.js +0 -40
  214. package/lib/commonjs/components/GooglePay/index.js.map +0 -1
  215. package/lib/commonjs/components/GooglePay/interfaces.js +0 -2
  216. package/lib/commonjs/components/GooglePay/interfaces.js.map +0 -1
  217. package/lib/commonjs/components/Legacy/CreditCardFormLegacy.js +0 -323
  218. package/lib/commonjs/components/Legacy/CreditCardFormLegacy.js.map +0 -1
  219. package/lib/commonjs/components/SecureFields/VGS/CVCField.js +0 -26
  220. package/lib/commonjs/components/SecureFields/VGS/CVCField.js.map +0 -1
  221. package/lib/commonjs/components/SecureFields/VGS/CardHolderNameField.js +0 -26
  222. package/lib/commonjs/components/SecureFields/VGS/CardHolderNameField.js.map +0 -1
  223. package/lib/commonjs/components/SecureFields/VGS/CardNumberField.js +0 -26
  224. package/lib/commonjs/components/SecureFields/VGS/CardNumberField.js.map +0 -1
  225. package/lib/commonjs/components/SecureFields/VGS/CollectManager.js +0 -60
  226. package/lib/commonjs/components/SecureFields/VGS/CollectManager.js.map +0 -1
  227. package/lib/commonjs/components/SecureFields/VGS/ExpDateField.js.map +0 -1
  228. package/lib/commonjs/components/SecureFields/VGS/TextField.js.map +0 -1
  229. package/lib/commonjs/components/SecureFields/VGS/ZipCodeField.js +0 -26
  230. package/lib/commonjs/components/SecureFields/VGS/ZipCodeField.js.map +0 -1
  231. package/lib/commonjs/components/SecureFields/index.js +0 -34
  232. package/lib/commonjs/components/SecureFields/index.js.map +0 -1
  233. package/lib/module/components/ApplePay/PayEngineApplePay.js +0 -58
  234. package/lib/module/components/ApplePay/PayEngineApplePay.js.map +0 -1
  235. package/lib/module/components/ApplePay/index.js +0 -35
  236. package/lib/module/components/ApplePay/index.js.map +0 -1
  237. package/lib/module/components/ApplePay/interfaces.js +0 -2
  238. package/lib/module/components/ApplePay/interfaces.js.map +0 -1
  239. package/lib/module/components/CreditCardForm/index.js +0 -60
  240. package/lib/module/components/CreditCardForm/index.js.map +0 -1
  241. package/lib/module/components/GooglePay/PayEngineGooglePay.js +0 -52
  242. package/lib/module/components/GooglePay/PayEngineGooglePay.js.map +0 -1
  243. package/lib/module/components/GooglePay/index.js +0 -29
  244. package/lib/module/components/GooglePay/index.js.map +0 -1
  245. package/lib/module/components/GooglePay/interfaces.js +0 -2
  246. package/lib/module/components/GooglePay/interfaces.js.map +0 -1
  247. package/lib/module/components/Legacy/CreditCardFormLegacy.js +0 -302
  248. package/lib/module/components/Legacy/CreditCardFormLegacy.js.map +0 -1
  249. package/lib/module/components/SecureFields/VGS/CVCField.js +0 -14
  250. package/lib/module/components/SecureFields/VGS/CVCField.js.map +0 -1
  251. package/lib/module/components/SecureFields/VGS/CardHolderNameField.js +0 -14
  252. package/lib/module/components/SecureFields/VGS/CardHolderNameField.js.map +0 -1
  253. package/lib/module/components/SecureFields/VGS/CardNumberField.js +0 -14
  254. package/lib/module/components/SecureFields/VGS/CardNumberField.js.map +0 -1
  255. package/lib/module/components/SecureFields/VGS/CollectManager.js +0 -45
  256. package/lib/module/components/SecureFields/VGS/CollectManager.js.map +0 -1
  257. package/lib/module/components/SecureFields/VGS/ExpDateField.js +0 -14
  258. package/lib/module/components/SecureFields/VGS/ExpDateField.js.map +0 -1
  259. package/lib/module/components/SecureFields/VGS/TextField.js +0 -17
  260. package/lib/module/components/SecureFields/VGS/TextField.js.map +0 -1
  261. package/lib/module/components/SecureFields/VGS/ZipCodeField.js +0 -14
  262. package/lib/module/components/SecureFields/VGS/ZipCodeField.js.map +0 -1
  263. package/lib/module/components/SecureFields/index.js +0 -17
  264. package/lib/module/components/SecureFields/index.js.map +0 -1
  265. package/lib/typescript/components/ApplePay/PayEngineApplePay.d.ts +0 -12
  266. package/lib/typescript/components/ApplePay/index.d.ts +0 -7
  267. package/lib/typescript/components/ApplePay/interfaces.d.ts +0 -20
  268. package/lib/typescript/components/CreditCardForm/index.d.ts +0 -3
  269. package/lib/typescript/components/GooglePay/PayEngineGooglePay.d.ts +0 -10
  270. package/lib/typescript/components/GooglePay/index.d.ts +0 -7
  271. package/lib/typescript/components/GooglePay/interfaces.d.ts +0 -38
  272. package/lib/typescript/components/Legacy/CreditCardFormLegacy.d.ts +0 -4
  273. package/lib/typescript/components/SecureFields/VGS/CVCField.d.ts +0 -10
  274. package/lib/typescript/components/SecureFields/VGS/CardHolderNameField.d.ts +0 -10
  275. package/lib/typescript/components/SecureFields/VGS/CardNumberField.d.ts +0 -10
  276. package/lib/typescript/components/SecureFields/VGS/CollectManager.d.ts +0 -12
  277. package/lib/typescript/components/SecureFields/VGS/ExpDateField.d.ts +0 -10
  278. package/lib/typescript/components/SecureFields/VGS/TextField.d.ts +0 -14
  279. package/lib/typescript/components/SecureFields/VGS/ZipCodeField.d.ts +0 -10
  280. package/lib/typescript/components/SecureFields/index.d.ts +0 -16
  281. package/src/components/ApplePay/PayEngineApplePay.ts +0 -61
  282. package/src/components/ApplePay/index.ts +0 -32
  283. package/src/components/ApplePay/interfaces.ts +0 -25
  284. package/src/components/CreditCardForm/index.tsx +0 -43
  285. package/src/components/GooglePay/PayEngineGooglePay.ts +0 -48
  286. package/src/components/GooglePay/index.ts +0 -39
  287. package/src/components/GooglePay/interfaces.ts +0 -42
  288. package/src/components/Legacy/CreditCardFormLegacy.tsx +0 -292
  289. package/src/components/SecureFields/VGS/CVCField.tsx +0 -21
  290. package/src/components/SecureFields/VGS/CardHolderNameField.tsx +0 -21
  291. package/src/components/SecureFields/VGS/CardNumberField.tsx +0 -21
  292. package/src/components/SecureFields/VGS/CollectManager.tsx +0 -74
  293. package/src/components/SecureFields/VGS/ExpDateField.tsx +0 -21
  294. package/src/components/SecureFields/VGS/TextField.tsx +0 -27
  295. package/src/components/SecureFields/VGS/ZipCodeField.tsx +0 -21
  296. package/src/components/SecureFields/index.ts +0 -17
  297. /package/android/.gradle/{5.6.4 → 6.1.1}/fileChanges/last-build.bin +0 -0
  298. /package/android/.gradle/{5.6.4 → 6.1.1}/gc.properties +0 -0
  299. /package/android/{vgscollect-1.7.2-debug.aar → securefields-1.7.2-debug.aar} +0 -0
  300. /package/ios/{Payengine-Bridging-Header.h → Sources/Payengine-Bridging-Header.h} +0 -0
@@ -0,0 +1,136 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, minimum-scale=1, viewport-fit=cover">
5
+ </head>
6
+ <body>
7
+ <button>click me</button>
8
+ <hr/>
9
+ <div id="log"></div>
10
+ <script>
11
+ const Base64 = {
12
+ /**
13
+ * base64 dictionary: +/
14
+ * base64url: -_
15
+ * for 3DS the encoded string must not be padded with =
16
+ */
17
+ characters: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",
18
+
19
+ encode: function (string) {
20
+ let result = '';
21
+
22
+ let i = 0;
23
+ do {
24
+ let a = string.charCodeAt(i++);
25
+ let b = string.charCodeAt(i++);
26
+ let c = string.charCodeAt(i++);
27
+
28
+ a = a ? a : 0;
29
+ b = b ? b : 0;
30
+ c = c ? c : 0;
31
+
32
+ let b1 = (a >> 2) & 0x3F;
33
+ let b2 = ((a & 0x3) << 4) | ((b >> 4) & 0xF);
34
+ let b3 = ((b & 0xF) << 2) | ((c >> 6) & 0x3);
35
+ let b4 = c & 0x3F;
36
+
37
+ if (!b) {
38
+ b3 = b4 = 64;
39
+ } else if (!c) {
40
+ b4 = 64;
41
+ }
42
+
43
+ result += Base64.characters.charAt(b1) + Base64.characters.charAt(b2) + Base64.characters.charAt(b3) + Base64.characters.charAt(b4);
44
+
45
+ } while (i < string.length);
46
+
47
+ return result;
48
+ },
49
+
50
+ decode: function (string) {
51
+ let result = '';
52
+
53
+ let i = 0;
54
+ do {
55
+ let b1 = Base64.characters.indexOf(string.charAt(i++));
56
+ let b2 = Base64.characters.indexOf(string.charAt(i++));
57
+ let b3 = Base64.characters.indexOf(string.charAt(i++));
58
+ let b4 = Base64.characters.indexOf(string.charAt(i++));
59
+
60
+ let a = ((b1 & 0x3F) << 2) | ((b2 >> 4) & 0x3);
61
+ let b = ((b2 & 0xF) << 4) | ((b3 >> 2) & 0xF);
62
+ let c = ((b3 & 0x3) << 6) | (b4 & 0x3F);
63
+
64
+ result += String.fromCharCode(a) + (b ? String.fromCharCode(b) : '') + (c ? String.fromCharCode(c) : '');
65
+
66
+ } while (i < string.length);
67
+
68
+ return result;
69
+ }
70
+ };
71
+
72
+ function objectToBase64url(data) {
73
+ const base64String = Base64.encode(JSON.stringify(data))
74
+ // return url safe
75
+ return base64String
76
+ }
77
+
78
+ function base64urlToObject(base64String) {
79
+ const jsonString = Base64.decode(base64String)
80
+ return JSON.parse(jsonString)
81
+ }
82
+ var PayEngine = {
83
+ collectBrowserInfo: async() => {
84
+ const result = await fetch("https://console.payengine.co/api/clientbrowserinfo");
85
+ const response = await result.json();
86
+
87
+ //Note: Chrome returns 30 on Macbook which 3DS doesn't support
88
+ // If it's 30 making it 32 so it doesn't fail
89
+ let colorDepth = window.screen.colorDepth
90
+ if (colorDepth === 30)
91
+ colorDepth = 32
92
+
93
+ const browserInfo = {
94
+ a: navigator.javaEnabled(),
95
+ b: navigator.language || navigator.userLanguage,
96
+ c: colorDepth.toString(),
97
+ d: window.screen.availHeight.toString(),
98
+ e: window.screen.availWidth.toString(),
99
+ f: new Date().getTimezoneOffset().toString(),
100
+ g: response.ip, //browserIP:
101
+ h: response.userAgent, // browserUserAgent:
102
+ i: response.acceptHeader, //browserAcceptHeader:
103
+ }
104
+
105
+ var base64 = objectToBase64url(browserInfo)
106
+
107
+ return base64
108
+ }
109
+ }
110
+
111
+ PayEngine.collectBrowserInfo().then(function(base64) {
112
+ webkit.messageHandlers.peMessageHandler.postMessage(base64)
113
+ }).catch(function(err) {
114
+ webkit.messageHandlers.peMessageHandler.postMessage("Error occurs" + err.message)
115
+ })
116
+
117
+ <!-- const log = (msg) => {-->
118
+ <!-- console.log(msg)-->
119
+ <!-- const p = document.createElement('p')-->
120
+ <!-- p.textContent = msg-->
121
+ <!-- document.querySelector('#log').append(p)-->
122
+ <!-- }-->
123
+ <!-- // to receive messages from native-->
124
+ <!-- webkit.messageHandlers.peMessageHandler.onMessage = (msg) => {-->
125
+ <!-- log('from native:' + msg)-->
126
+ <!-- webkit.messageHandlers.peMessageHandler.postMessage("Hello I got you")-->
127
+ <!-- }-->
128
+ <!---->
129
+ <!-- document.querySelector('button').addEventListener('click', () => {-->
130
+ <!-- log(typeof webkit.messageHandlers.bridge.postMessage)-->
131
+ <!-- // send messages to native-->
132
+ <!-- webkit.messageHandlers.peMessageHandler.postMessage('{"msg": "hello?","id": ' + Date.now() + '}')-->
133
+ <!-- })-->
134
+ </script>
135
+ </body>
136
+ </html>
@@ -0,0 +1,467 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>ThreeDS</title>
5
+ <meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1">
6
+ <script type="text/javascript">
7
+ window.postToHost = function(type, subtype, data) {
8
+ webkit.messageHandlers.peMessageHandler.postMessage(JSON.stringify({
9
+ type: type,
10
+ subtype: subtype,
11
+ data: data
12
+ }))
13
+ };
14
+
15
+ const Base64 = {
16
+ /**
17
+ * base64 dictionary: +/
18
+ * base64url: -_
19
+ * for 3DS the encoded string must not be padded with =
20
+ */
21
+ characters: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",
22
+
23
+ encode: function (string) {
24
+ let result = '';
25
+
26
+ let i = 0;
27
+ do {
28
+ let a = string.charCodeAt(i++);
29
+ let b = string.charCodeAt(i++);
30
+ let c = string.charCodeAt(i++);
31
+
32
+ a = a ? a : 0;
33
+ b = b ? b : 0;
34
+ c = c ? c : 0;
35
+
36
+ let b1 = (a >> 2) & 0x3F;
37
+ let b2 = ((a & 0x3) << 4) | ((b >> 4) & 0xF);
38
+ let b3 = ((b & 0xF) << 2) | ((c >> 6) & 0x3);
39
+ let b4 = c & 0x3F;
40
+
41
+ if (!b) {
42
+ b3 = b4 = 64;
43
+ } else if (!c) {
44
+ b4 = 64;
45
+ }
46
+
47
+ result += Base64.characters.charAt(b1) + Base64.characters.charAt(b2) + Base64.characters.charAt(b3) + Base64.characters.charAt(b4);
48
+
49
+ } while (i < string.length);
50
+
51
+ return result;
52
+ },
53
+
54
+ decode: function (string) {
55
+ let result = '';
56
+
57
+ let i = 0;
58
+ do {
59
+ let b1 = Base64.characters.indexOf(string.charAt(i++));
60
+ let b2 = Base64.characters.indexOf(string.charAt(i++));
61
+ let b3 = Base64.characters.indexOf(string.charAt(i++));
62
+ let b4 = Base64.characters.indexOf(string.charAt(i++));
63
+
64
+ let a = ((b1 & 0x3F) << 2) | ((b2 >> 4) & 0x3);
65
+ let b = ((b2 & 0xF) << 4) | ((b3 >> 2) & 0xF);
66
+ let c = ((b3 & 0x3) << 6) | (b4 & 0x3F);
67
+
68
+ result += String.fromCharCode(a) + (b ? String.fromCharCode(b) : '') + (c ? String.fromCharCode(c) : '');
69
+
70
+ } while (i < string.length);
71
+
72
+ return result;
73
+ }
74
+ };
75
+
76
+ function objectToBase64url(data) {
77
+ const base64String = Base64.encode(JSON.stringify(data))
78
+ // return url safe
79
+ return base64String
80
+ }
81
+
82
+ function base64urlToObject(base64String) {
83
+ const jsonString = Base64.decode(base64String)
84
+ return JSON.parse(jsonString)
85
+ }
86
+
87
+ var PayEngine = {
88
+ BaseUrl: 'https://localhost3000.trinvh.com',
89
+ setBaseUrl: (url) => {
90
+ console.log("Base URL", url)
91
+ PayEngine.BaseUrl = url;
92
+ },
93
+ collectBrowserInfo: async() => {
94
+ const result = await fetch("https://console.payengine.co/api/clientbrowserinfo");
95
+ const response = await result.json();
96
+
97
+ //Note: Chrome returns 30 on Macbook which 3DS doesn't support
98
+ // If it's 30 making it 32 so it doesn't fail
99
+ let colorDepth = window.screen.colorDepth
100
+ if (colorDepth === 30)
101
+ colorDepth = 32
102
+
103
+ const browserInfo = {
104
+ a: navigator.javaEnabled(),
105
+ b: navigator.language || navigator.userLanguage,
106
+ c: colorDepth.toString(),
107
+ d: window.screen.availHeight.toString(),
108
+ e: window.screen.availWidth.toString(),
109
+ f: new Date().getTimezoneOffset().toString(),
110
+ g: response.ip, //browserIP:
111
+ h: response.userAgent, // browserUserAgent:
112
+ i: response.acceptHeader, //browserAcceptHeader:
113
+ }
114
+ return objectToBase64url(browserInfo)
115
+ },
116
+ perform3DSFlow: async(data, callback) => {
117
+ console.log("Performing...")
118
+ if ((typeof callback !== 'function')) {
119
+ console.error('Callback must be a function')
120
+ return
121
+ }
122
+
123
+ if (!data) {
124
+ console.error('Missing 3DS Data')
125
+ }
126
+
127
+ const threeDSData = base64urlToObject(data);
128
+
129
+ let serverTransID
130
+ let methodUrl
131
+
132
+ if (threeDSData.transStatus === 'C') {
133
+ PayEngine.perform3DSChallengeFlow(threeDSData.threeDSServerTransID, threeDSData, callback)
134
+ return;
135
+ } else if (threeDSData.threeDSServerTransID && threeDSData.threeDSMethodURL) {
136
+ serverTransID = threeDSData.threeDSServerTransID
137
+ methodUrl = threeDSData.threeDSMethodURL
138
+ } else if (threeDSData.type === 'redirect_to_url') {
139
+ PayEngine.performStripe3DSFlow(threeDSData, callback)
140
+ return;
141
+ } else {
142
+ console.error('Invalid parameters passed')
143
+ return;
144
+ }
145
+
146
+ /*
147
+ Creates a new form with and attaches to the parentEl
148
+ */
149
+ function create3DSiFrame(parentEl, methodUrl, threeDSMethodData) {
150
+ console.log('creating 3DSIframe ' + methodUrl);
151
+ const body = parentEl
152
+ const iframe = document.createElement('iframe');
153
+ iframe.name = "threeDSMethodIframe";
154
+ iframe.style = "display: none; opacity: 0";
155
+ body.appendChild(iframe);
156
+
157
+ const form = document.createElement('form')
158
+ form.style = "display: none; opacity: 0";
159
+ form.action = methodUrl
160
+ form.method = 'POST'
161
+ form.target = 'threeDSMethodIframe'
162
+ const input = document.createElement('input')
163
+ input.type = 'hidden'
164
+ input.name = 'threeDSMethodData'
165
+ input.value = objectToBase64url(threeDSMethodData)
166
+
167
+ form.append(input)
168
+ body.appendChild(form)
169
+
170
+ return { iframe, form }
171
+ }
172
+
173
+ const notificationURL3DSData = objectToBase64url({
174
+ t: threeDSData.t, //transactionId
175
+ s: threeDSData.s, //startTime
176
+ e: threeDSData.e //environment
177
+ })
178
+
179
+ const browserInfo = await PayEngine.collectBrowserInfo()
180
+ const threeDSMethodData = {
181
+ threeDSServerTransID: serverTransID,
182
+ threeDSMethodNotificationURL: `${PayEngine.BaseUrl}/api/cb/3dsm?d=${notificationURL3DSData}&b=${browserInfo}`
183
+ }
184
+
185
+ //--> Form submitted to 3ds provider
186
+ const body = document.getElementsByTagName("body")[0]
187
+ const { iframe, form } = create3DSiFrame(body, methodUrl, threeDSMethodData)
188
+
189
+ // if we time out then we need to submit to the callback URL ourselves
190
+ const timeOut = setTimeout(() => {
191
+ //--> Upon timeout, remove the existing iFrame (and form)
192
+ body.removeChild(iframe)
193
+
194
+ //--> Create new form to submit to callback manually
195
+ const newMethodUrl = threeDSMethodData.threeDSMethodNotificationURL + "&timeoutoverride=true"
196
+ const { form } = create3DSiFrame(body, newMethodUrl, threeDSMethodData)
197
+ form.submit()
198
+ }, 10_500); // timeout 10.5 seconds
199
+
200
+ const eventListener = (event) => {
201
+ if (event.origin === PayEngine.BaseUrl && event.data.type === 'payEngine3DSMessage') {
202
+ event.stopImmediatePropagation()
203
+ clearTimeout(timeOut);
204
+ // remove registered event listener
205
+ window.removeEventListener('message', eventListener)
206
+
207
+ if (event.data.challenge) {
208
+ PayEngine.perform3DSChallengeFlow(serverTransID, event.data, callback)
209
+ } else {
210
+ callback(event.data)
211
+ }
212
+ }
213
+ }
214
+
215
+ // register event handle callback from notification url
216
+ window.addEventListener('message', eventListener)
217
+
218
+ form.submit()
219
+ },
220
+ performStripe3DSFlow(threeDSData, callback) {
221
+ const W = 500, H = 610
222
+ const { type, data } = threeDSData
223
+ const { return_url, url } = data
224
+ var iframe = document.createElement('iframe');
225
+ iframe.src = url;
226
+ iframe.style = "flex: 1; border: 0;";
227
+ const body = document.getElementsByTagName("body")[0]
228
+ // create modal
229
+ const backdrop = document.createElement('div')
230
+ backdrop.style = "position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, .8)";
231
+ const modal = document.createElement('div');
232
+ modal.style = `position: relative; width: 100vw; max-width: 100%; height: 100%; background: #FFF; border: #CCC 1px solid; border-radius: 6px; box-shadow: 0 8px 32px rgb(77 101 117 / 35%); display: flex;`;
233
+ backdrop.append(modal);
234
+ modal.append(iframe);
235
+
236
+ body.appendChild(backdrop)
237
+
238
+ const eventListener = (event) => {
239
+ if (event.origin === PayEngine.BaseUrl && event.data.type === 'payEngine3DSMessage') {
240
+ event.stopImmediatePropagation()
241
+ // remove registered event listener
242
+ window.removeEventListener('message', eventListener)
243
+
244
+ callback(event.data)
245
+ backdrop.remove()
246
+ }
247
+ }
248
+
249
+ // register event handler from callback url
250
+ window.addEventListener('message', eventListener)
251
+ },
252
+ perform3DSChallengeFlow(serverTransID, authData, callback) {
253
+
254
+ // show webview in fullscreen
255
+ window.postToHost("PayEngineResponse", "ShowWebView", null)
256
+
257
+ const body = document.getElementsByTagName("body")[0]
258
+
259
+ // create modal
260
+ const backdrop = document.createElement('div')
261
+ backdrop.style = "position: fixed; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, .8)";
262
+ const modal = document.createElement('div');
263
+ modal.style = "position: relative; width: 100%; height: 100%; background: #FFF; display: flex;";
264
+ backdrop.append(modal);
265
+
266
+ // create iframe
267
+ const iframe = document.createElement('iframe');
268
+ iframe.name = "challengeIframe";
269
+ iframe.style = "flex: 1; border: 0;";
270
+ modal.append(iframe);
271
+
272
+ const creq = {
273
+ threeDSServerTransID: serverTransID,
274
+ acsTransID: authData.acsTransID,
275
+ messageVersion: authData.messageVersion,
276
+ messageType: "CReq",
277
+ challengeWindowSize: "01",
278
+ }
279
+
280
+ const form = document.createElement('form')
281
+ form.style = "display: none; opacity: 0";
282
+ form.action = authData.acsURL
283
+ form.method = 'POST'
284
+ form.target = 'challengeIframe'
285
+
286
+ const creqInput = document.createElement('input')
287
+ creqInput.type = 'hidden'
288
+ creqInput.name = 'creq'
289
+ creqInput.value = objectToBase64url(creq)
290
+
291
+ const sessInput = document.createElement('input')
292
+ sessInput.type = 'hidden'
293
+ sessInput.name = 'threeDSSessionData'
294
+ sessInput.value = objectToBase64url(creq)
295
+
296
+ form.append(creqInput)
297
+ form.append(sessInput)
298
+ body.appendChild(backdrop)
299
+ body.appendChild(form)
300
+
301
+ const eventListener = (event) => {
302
+ if (event.origin === PayEngine.BaseUrl && event.data.type === 'payEngine3DSMessage') {
303
+ event.stopImmediatePropagation()
304
+ // remove registered event listener
305
+ window.removeEventListener('message', eventListener)
306
+
307
+ callback(event.data)
308
+ backdrop.remove()
309
+ }
310
+ }
311
+
312
+ // register event handle callback from notification url
313
+ window.addEventListener('message', eventListener)
314
+
315
+ form.submit()
316
+ }
317
+ }
318
+
319
+ </script>
320
+ <style>
321
+ .bubblingG {
322
+ text-align: center;
323
+ width:78px;
324
+ height:49px;
325
+ margin: auto;
326
+ }
327
+
328
+ .bubblingG span {
329
+ display: inline-block;
330
+ vertical-align: middle;
331
+ width: 10px;
332
+ height: 10px;
333
+ margin: 24px auto;
334
+ background: rgb(0,0,0);
335
+ border-radius: 49px;
336
+ -o-border-radius: 49px;
337
+ -ms-border-radius: 49px;
338
+ -webkit-border-radius: 49px;
339
+ -moz-border-radius: 49px;
340
+ animation: bubblingG 1.5s infinite alternate;
341
+ -o-animation: bubblingG 1.5s infinite alternate;
342
+ -ms-animation: bubblingG 1.5s infinite alternate;
343
+ -webkit-animation: bubblingG 1.5s infinite alternate;
344
+ -moz-animation: bubblingG 1.5s infinite alternate;
345
+ }
346
+
347
+ #bubblingG_1 {
348
+ animation-delay: 0s;
349
+ -o-animation-delay: 0s;
350
+ -ms-animation-delay: 0s;
351
+ -webkit-animation-delay: 0s;
352
+ -moz-animation-delay: 0s;
353
+ }
354
+
355
+ #bubblingG_2 {
356
+ animation-delay: 0.45s;
357
+ -o-animation-delay: 0.45s;
358
+ -ms-animation-delay: 0.45s;
359
+ -webkit-animation-delay: 0.45s;
360
+ -moz-animation-delay: 0.45s;
361
+ }
362
+
363
+ #bubblingG_3 {
364
+ animation-delay: 0.9s;
365
+ -o-animation-delay: 0.9s;
366
+ -ms-animation-delay: 0.9s;
367
+ -webkit-animation-delay: 0.9s;
368
+ -moz-animation-delay: 0.9s;
369
+ }
370
+
371
+
372
+
373
+ @keyframes bubblingG {
374
+ 0% {
375
+ width: 10px;
376
+ height: 10px;
377
+ background-color:rgb(0,0,0);
378
+ transform: translateY(0);
379
+ }
380
+
381
+ 100% {
382
+ width: 23px;
383
+ height: 23px;
384
+ background-color:rgb(255,255,255);
385
+ transform: translateY(-20px);
386
+ }
387
+ }
388
+
389
+ @-o-keyframes bubblingG {
390
+ 0% {
391
+ width: 10px;
392
+ height: 10px;
393
+ background-color:rgb(0,0,0);
394
+ -o-transform: translateY(0);
395
+ }
396
+
397
+ 100% {
398
+ width: 23px;
399
+ height: 23px;
400
+ background-color:rgb(255,255,255);
401
+ -o-transform: translateY(-20px);
402
+ }
403
+ }
404
+
405
+ @-ms-keyframes bubblingG {
406
+ 0% {
407
+ width: 10px;
408
+ height: 10px;
409
+ background-color:rgb(0,0,0);
410
+ -ms-transform: translateY(0);
411
+ }
412
+
413
+ 100% {
414
+ width: 23px;
415
+ height: 23px;
416
+ background-color:rgb(255,255,255);
417
+ -ms-transform: translateY(-20px);
418
+ }
419
+ }
420
+
421
+ @-webkit-keyframes bubblingG {
422
+ 0% {
423
+ width: 10px;
424
+ height: 10px;
425
+ background-color:rgb(0,0,0);
426
+ -webkit-transform: translateY(0);
427
+ }
428
+
429
+ 100% {
430
+ width: 23px;
431
+ height: 23px;
432
+ background-color:rgb(255,255,255);
433
+ -webkit-transform: translateY(-20px);
434
+ }
435
+ }
436
+
437
+ @-moz-keyframes bubblingG {
438
+ 0% {
439
+ width: 10px;
440
+ height: 10px;
441
+ background-color:rgb(0,0,0);
442
+ -moz-transform: translateY(0);
443
+ }
444
+
445
+ 100% {
446
+ width: 23px;
447
+ height: 23px;
448
+ background-color:rgb(255,255,255);
449
+ -moz-transform: translateY(-20px);
450
+ }
451
+ }
452
+ </style>
453
+ </head>
454
+ <body>
455
+ <div style="position: absolute; top: 50%; left: 50%; margin-top: -50px; margin-left: -150px; width: 300px; height: 100px; text-align: center">
456
+ <div style="margin-bottom: 15px">Performing 3DS Challenge...</div>
457
+ <div class="bubblingG">
458
+ <span id="bubblingG_1">
459
+ </span>
460
+ <span id="bubblingG_2">
461
+ </span>
462
+ <span id="bubblingG_3">
463
+ </span>
464
+ </div>
465
+ </div>
466
+ </body>
467
+ </html>
@@ -0,0 +1,25 @@
1
+ //
2
+ // CustomWindow.h
3
+ // TouchDemo
4
+ //
5
+ // Created by Astha Ameta on 19/08/20.
6
+ // Copyright © 2020 Kount Inc. All rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+
11
+ @protocol CustomWindowProtocol <NSObject>
12
+ -(void)touchesBeganCalledOfWindow:(NSSet<UITouch *> *_Nullable)touches withEvent:(UIEvent *_Nullable)event;
13
+ -(void)touchesEndedCalledOfWindow:(NSSet<UITouch *> *_Nullable)touches withEvent:(UIEvent *_Nullable)event;
14
+ -(void)touchesMovedCalledOfWindow:(NSSet<UITouch *> *_Nullable)touches withEvent:(UIEvent *_Nullable)event;
15
+ @end
16
+
17
+ NS_ASSUME_NONNULL_BEGIN
18
+
19
+ @interface CustomWindow : UIWindow
20
+
21
+ @property(weak, nonatomic) id<CustomWindowProtocol> touchDelegate;
22
+
23
+ @end
24
+
25
+ NS_ASSUME_NONNULL_END