@jimrising/easymerchantsdk-react-native 2.2.9 → 2.3.0

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 (102) hide show
  1. package/.idea/caches/deviceStreaming.xml +11 -0
  2. package/README.md +305 -167
  3. package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule$2.dex +0 -0
  4. package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule$3.dex +0 -0
  5. package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule.dex +0 -0
  6. package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  7. package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule$2.dex +0 -0
  8. package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule$3.dex +0 -0
  9. package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule.dex +0 -0
  10. package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/desugar_graph.bin +0 -0
  11. package/android/build/.transforms/58b147bdc43284da2468dab19bc4a64d/transformed/classes/classes_dex/classes.dex +0 -0
  12. package/android/build/.transforms/e9a664a11ce12edf79cd87b1e07aa243/transformed/classes/classes_dex/classes.dex +0 -0
  13. package/android/build/intermediates/aar_main_jar/release/syncReleaseLibJars/classes.jar +0 -0
  14. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  15. package/android/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar +0 -0
  16. package/android/build/intermediates/full_jar/release/createFullJarRelease/full.jar +0 -0
  17. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
  18. package/android/build/intermediates/incremental/lintVitalAnalyzeRelease/release-artifact-dependencies.xml +4 -4
  19. package/android/build/intermediates/incremental/lintVitalAnalyzeRelease/release-artifact-libraries.xml +4 -4
  20. package/android/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +916 -916
  21. package/android/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +3 -3
  22. package/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties +1 -1
  23. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
  24. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
  25. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
  26. package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
  27. package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
  28. package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
  29. package/android/build/intermediates/lint-cache/lintVitalAnalyzeRelease/maven.google/com/android/tools/build/group-index.xml +22 -0
  30. package/android/build/intermediates/lint_model/release/generateReleaseLintModel/release-artifact-dependencies.xml +4 -4
  31. package/android/build/intermediates/lint_model/release/generateReleaseLintModel/release-artifact-libraries.xml +4 -4
  32. package/android/build/intermediates/lint_vital_lint_model/release/generateReleaseLintVitalModel/release-artifact-dependencies.xml +4 -4
  33. package/android/build/intermediates/lint_vital_lint_model/release/generateReleaseLintVitalModel/release-artifact-libraries.xml +4 -4
  34. package/android/build/intermediates/local_aar_for_lint/release/out.aar +0 -0
  35. package/android/build/intermediates/merged_res/release/mergeReleaseResources/layout/activity_payment_done_url.xml +2 -1
  36. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/multi-v2/values-night-v8.json +2 -2
  37. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/multi-v2/values.json +38 -38
  38. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/anim-v21.json +9 -9
  39. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/anim.json +24 -24
  40. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/animator-v21.json +1 -1
  41. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/animator.json +34 -34
  42. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color-night-v8.json +3 -3
  43. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color-v31.json +10 -10
  44. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color.json +153 -153
  45. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-anydpi-v21.json +6 -6
  46. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-hdpi-v4.json +13 -13
  47. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-ldpi-v4.json +6 -6
  48. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-mdpi-v4.json +12 -12
  49. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v21.json +4 -4
  50. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v23.json +7 -7
  51. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v29.json +1 -1
  52. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xhdpi-v4.json +12 -12
  53. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xxhdpi-v4.json +7 -7
  54. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xxxhdpi-v4.json +7 -7
  55. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable.json +395 -395
  56. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/font.json +9 -9
  57. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/interpolator-v21.json +10 -10
  58. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/interpolator.json +11 -11
  59. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-land.json +3 -3
  60. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-sw600dp-v13.json +2 -2
  61. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-v21.json +4 -4
  62. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-v26.json +1 -1
  63. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout.json +108 -108
  64. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-anydpi-v26.json +2 -2
  65. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-hdpi-v4.json +2 -2
  66. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-mdpi-v4.json +2 -2
  67. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xhdpi-v4.json +2 -2
  68. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xxhdpi-v4.json +2 -2
  69. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xxxhdpi-v4.json +2 -2
  70. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/raw.json +46 -46
  71. package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/xml.json +3 -3
  72. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
  73. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
  74. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
  75. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
  76. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
  77. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
  78. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  79. package/android/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar +0 -0
  80. package/android/build/intermediates/source_set_path_map/release/mapReleaseSourceSetPaths/file-map.txt +38 -38
  81. package/android/build/intermediates/verified_library_resources/release/verifyReleaseResources/compiled/layout_activity_payment_done_url.xml.flat +0 -0
  82. package/android/build/outputs/aar/jimrising_easymerchantsdk-react-native-release.aar +0 -0
  83. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  84. package/android/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin +0 -0
  85. package/android/build.gradle +1 -1
  86. package/android/src/main/java/com/reactlibrary/RNEasymerchantsdkModule.java +56 -1
  87. package/ios/Classes/EasyMerchantSdk.m +124 -141
  88. package/ios/Classes/EasyMerchantSdk.swift +270 -502
  89. package/ios/Classes/EasyPayViewController.swift +18 -15
  90. package/ios/CustomComponents/TextFieldStackView.swift +16 -46
  91. package/ios/EnvironmentConfig.swift +16 -0
  92. package/ios/Example/ViewController.swift +513 -76
  93. package/ios/Models/Request.swift +365 -171
  94. package/ios/Pods/UserDefaults/UserStoreSingleton.swift +116 -12
  95. package/ios/Pods/ViewControllers/AdditionalInfoVC.swift +2 -32
  96. package/ios/Pods/ViewControllers/GrailPayVC.swift +258 -18
  97. package/ios/Pods/ViewControllers/OTPVerificationVC.swift +1 -66
  98. package/ios/Pods/ViewControllers/PaymentInformation/PaymentInfoVC.swift +571 -369
  99. package/ios/Pods/ViewControllers/ThreeDSecurePaymentDoneVC.swift +18 -9
  100. package/ios/easymerchantsdk.podspec +1 -1
  101. package/ios/easymerchantsdk.storyboard +108 -85
  102. package/package.json +1 -1
@@ -14,60 +14,63 @@ public protocol EasyPayViewControllerDelegate {
14
14
 
15
15
  @objc
16
16
  public final class EasyPayViewController: UINavigationController {
17
-
17
+
18
18
  private static var isFirstTimeSetupComleted: Bool = false
19
-
19
+
20
20
  internal required init?(coder aDecoder: NSCoder) {
21
21
  fatalError("Cannot use \(#function)")
22
22
  }
23
-
23
+
24
24
  internal override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
25
25
  fatalError("Cannot use \(#function)")
26
26
  }
27
-
27
+
28
28
  internal override init(rootViewController: UIViewController) {
29
29
  fatalError("Cannot use \(#function)")
30
30
  }
31
-
31
+
32
32
  internal override init(navigationBarClass: AnyClass?, toolbarClass: AnyClass?) {
33
33
  fatalError("Cannot use \(#function)")
34
34
  }
35
-
35
+
36
36
  private let request: Request
37
37
  public weak var easyPayDelegate: EasyPayViewControllerDelegate?
38
-
38
+
39
39
  public init(request: Request, delegate: EasyPayViewControllerDelegate?) {
40
40
  if !Self.isFirstTimeSetupComleted {
41
41
  Self.runFirstTimeSetup()
42
42
  }
43
-
43
+
44
44
  self.request = request
45
45
  self.easyPayDelegate = delegate
46
46
  super.init(nibName: nil, bundle: nil)
47
-
47
+
48
48
  if let themeConfiguration = request.appearanceSettings {
49
49
  UserStoreSingleton.shared.updateThemeConfiguration(with: themeConfiguration)
50
50
  }
51
-
51
+
52
52
  self.modalPresentationStyle = .fullScreen
53
53
  self.isModalInPresentation = true
54
54
  }
55
-
55
+
56
56
  public override func viewDidLoad() {
57
57
  super.viewDidLoad()
58
58
  // Disable interactive pop gesture to prevent dismissal by sliding from left
59
59
  self.interactivePopGestureRecognizer?.isEnabled = false
60
-
60
+
61
61
  let vc = UIStoryboard(name: "easymerchantsdk", bundle: Bundle.easyPayBundle).instantiateViewController(withIdentifier: "PaymentInfoVC") as! PaymentInfoVC
62
62
  vc.modalPresentationStyle = .overFullScreen
63
63
  vc.configureWith(request: request, delegate: easyPayDelegate)
64
- vc.amount = Double(self.request.amount ?? 0) // Set the amount here.
64
+ // For API key/secret flow, pass amount immediately. For clientToken flow,
65
+ // allow PaymentInfoVC to populate amount after hostedCheckoutsApi persists it locally.
66
+ if (self.request.clientToken == nil) || (self.request.clientToken?.isEmpty == true) {
67
+ vc.amount = Double(self.request.amount ?? 0)
68
+ }
65
69
  vc.selectedPaymentMethod = "Card"
66
-
67
70
  self.navigationBar.isHidden = true
68
71
  self.setViewControllers([vc], animated: false)
69
72
  }
70
-
73
+
71
74
  }
72
75
 
73
76
  private extension EasyPayViewController {
@@ -17,26 +17,10 @@ final class TextFieldStackView: UIStackView {
17
17
 
18
18
  @IBOutlet private var containerView: UIView?
19
19
  @IBOutlet private(set) var textField: UITextField!
20
-
21
- // var error: String? {
22
- // didSet {
23
- // if isFirstResponder {
24
- // containerView?.layer.borderColor = UIColor._1757D9.withAlphaComponent(0.5).cgColor
25
- // errorLabel?.text = " "
26
- // } else if let error = error {
27
- // containerView?.layer.borderColor = UIColor.E93939.cgColor
28
- // errorLabel?.text = error
29
- // } else {
30
- // containerView?.layer.borderColor = UIColor._00000016.cgColor
31
- // errorLabel?.text = " "
32
- // }
33
- // }
34
- // }
35
-
20
+
36
21
  override func awakeFromNib() {
37
22
  super.awakeFromNib()
38
23
 
39
- // error = nil
40
24
  titleLabel?.adjustsFontSizeToFitWidth = true
41
25
 
42
26
  // Apply colors from UserStoreSingleton
@@ -87,12 +71,19 @@ final class TextFieldStackView: UIStackView {
87
71
  containerView?.layer.masksToBounds = true // Ensure the corners are clipped properly
88
72
  }
89
73
 
74
+ // @IBInspectable var isEnabled: Bool = true {
75
+ // didSet {
76
+ // titleLabel?.isEnabled = isEnabled
77
+ // textField?.isEnabled = isEnabled
78
+ // }
79
+ // }
80
+
90
81
  @IBInspectable var isEnabled: Bool = true {
91
82
  didSet {
92
- titleLabel?.isEnabled = isEnabled
83
+ // Only affect the textField, not the titleLabel
93
84
  textField?.isEnabled = isEnabled
94
- // textField.leftView?.tintColor = isEnabled ? UIColor._00000060 : UIColor._00000038
95
- // textField.rightView?.tintColor = isEnabled ? UIColor._00000060 : UIColor._00000038
85
+ // Optional: Adjust textField appearance for disabled state
86
+ textField?.alpha = isEnabled ? 1.0 : 1.5 // Visually indicate disabled state
96
87
  }
97
88
  }
98
89
 
@@ -114,30 +105,9 @@ final class TextFieldStackView: UIStackView {
114
105
  }
115
106
  }
116
107
 
117
- override var isFirstResponder: Bool {
118
- if let textField = textField {
119
- return textField.isFirstResponder
120
- } else {
121
- return super.isFirstResponder
122
- }
123
- }
124
-
125
- @discardableResult
126
- override func becomeFirstResponder() -> Bool {
127
- if let textField = textField {
128
- return textField.becomeFirstResponder()
129
- } else {
130
- return super.becomeFirstResponder()
131
- }
132
- }
133
-
134
- @discardableResult
135
- override func resignFirstResponder() -> Bool {
136
- if let textField = textField {
137
- return textField.resignFirstResponder()
138
- } else {
139
- return super.resignFirstResponder()
140
- }
141
- }
142
-
143
108
  }
109
+
110
+
111
+
112
+
113
+
@@ -16,6 +16,7 @@ public class EnvironmentConfig {
16
16
  }
17
17
 
18
18
  public static var currentEnvironment: Environment = .staging
19
+ public static var isEnvironmentSet: Bool = false
19
20
 
20
21
  public static var apiKey: String?
21
22
  public static var apiSecret: String?
@@ -27,6 +28,20 @@ public class EnvironmentConfig {
27
28
  case .production: return "https://api.lyfepay.io"
28
29
  }
29
30
  }
31
+
32
+ /// GrailPay SDK JS URL
33
+ public static var grailPaySDKURL: String {
34
+ return (currentEnvironment == .production)
35
+ ? "https://bank-link-widget.grailpay.com/sdk.js"
36
+ : "https://bank-link-widget-sandbox.grailpay.com/sdk.js"
37
+ }
38
+
39
+ /// GrailPay Base URL (for WKWebView baseURL)
40
+ public static var grailPayBaseURL: String {
41
+ return (currentEnvironment == .production)
42
+ ? "https://bank-link-widget.grailpay.com"
43
+ : "https://bank-link-widget-sandbox.grailpay.com"
44
+ }
30
45
 
31
46
  /// Configure API keys dynamically
32
47
  public static func configure(apiKey: String, apiSecret: String) {
@@ -37,6 +52,7 @@ public class EnvironmentConfig {
37
52
  /// Set the environment (staging, sandbox, production)
38
53
  public static func setEnvironment(_ environment: Environment) {
39
54
  self.currentEnvironment = environment
55
+ self.isEnvironmentSet = true
40
56
  }
41
57
 
42
58
  public enum Endpoints {