@jimrising/easymerchantsdk-react-native 2.2.9 → 2.3.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.
- package/.idea/caches/deviceStreaming.xml +11 -0
- package/README.md +310 -171
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule$2.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule$3.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule$2.dex +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule$3.dex +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/com/reactlibrary/RNEasymerchantsdkModule.dex +0 -0
- package/android/build/.transforms/3f3a228346492fb34e3f574e941b632f/transformed/bundleLibRuntimeToDirRelease/desugar_graph.bin +0 -0
- package/android/build/.transforms/58b147bdc43284da2468dab19bc4a64d/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/e9a664a11ce12edf79cd87b1e07aa243/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/intermediates/aar_main_jar/release/syncReleaseLibJars/classes.jar +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar +0 -0
- package/android/build/intermediates/full_jar/release/createFullJarRelease/full.jar +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -1
- package/android/build/intermediates/incremental/lintVitalAnalyzeRelease/release-artifact-dependencies.xml +4 -4
- package/android/build/intermediates/incremental/lintVitalAnalyzeRelease/release-artifact-libraries.xml +4 -4
- package/android/build/intermediates/incremental/release/mergeReleaseResources/compile-file-map.properties +916 -916
- package/android/build/intermediates/incremental/release/mergeReleaseResources/merger.xml +3 -3
- package/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties +1 -1
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/lint-cache/lintVitalAnalyzeRelease/maven.google/com/android/tools/build/group-index.xml +22 -0
- package/android/build/intermediates/lint_model/release/generateReleaseLintModel/release-artifact-dependencies.xml +4 -4
- package/android/build/intermediates/lint_model/release/generateReleaseLintModel/release-artifact-libraries.xml +4 -4
- package/android/build/intermediates/lint_vital_lint_model/release/generateReleaseLintVitalModel/release-artifact-dependencies.xml +4 -4
- package/android/build/intermediates/lint_vital_lint_model/release/generateReleaseLintVitalModel/release-artifact-libraries.xml +4 -4
- package/android/build/intermediates/local_aar_for_lint/release/out.aar +0 -0
- package/android/build/intermediates/merged_res/release/mergeReleaseResources/layout/activity_payment_done_url.xml +2 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/multi-v2/values-night-v8.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/multi-v2/values.json +38 -38
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/anim-v21.json +9 -9
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/anim.json +24 -24
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/animator-v21.json +1 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/animator.json +34 -34
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color-night-v8.json +3 -3
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color-v31.json +10 -10
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/color.json +153 -153
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-anydpi-v21.json +6 -6
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-hdpi-v4.json +13 -13
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-ldpi-v4.json +6 -6
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-mdpi-v4.json +12 -12
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v21.json +4 -4
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v23.json +7 -7
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-v29.json +1 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xhdpi-v4.json +12 -12
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xxhdpi-v4.json +7 -7
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable-xxxhdpi-v4.json +7 -7
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/drawable.json +395 -395
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/font.json +9 -9
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/interpolator-v21.json +10 -10
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/interpolator.json +11 -11
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-land.json +3 -3
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-sw600dp-v13.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-v21.json +4 -4
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout-v26.json +1 -1
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/layout.json +108 -108
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-anydpi-v26.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-hdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-mdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xhdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xxhdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/mipmap-xxxhdpi-v4.json +2 -2
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/raw.json +46 -46
- package/android/build/intermediates/merged_res_blame_folder/release/mergeReleaseResources/out/single/xml.json +3 -3
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule$3.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/com/reactlibrary/RNEasymerchantsdkModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar +0 -0
- package/android/build/intermediates/source_set_path_map/release/mapReleaseSourceSetPaths/file-map.txt +38 -38
- package/android/build/intermediates/verified_library_resources/release/verifyReleaseResources/compiled/layout_activity_payment_done_url.xml.flat +0 -0
- package/android/build/outputs/aar/jimrising_easymerchantsdk-react-native-release.aar +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/reactlibrary/RNEasymerchantsdkModule.java +56 -1
- package/ios/Classes/EasyMerchantSdk.m +124 -141
- package/ios/Classes/EasyMerchantSdk.swift +270 -502
- package/ios/Classes/EasyPayViewController.swift +18 -15
- package/ios/CustomComponents/TextFieldStackView.swift +16 -46
- package/ios/EnvironmentConfig.swift +16 -0
- package/ios/Example/ViewController.swift +513 -76
- package/ios/Models/Request.swift +365 -171
- package/ios/Pods/UserDefaults/UserStoreSingleton.swift +116 -12
- package/ios/Pods/ViewControllers/AdditionalInfoVC.swift +2 -32
- package/ios/Pods/ViewControllers/GrailPayVC.swift +258 -18
- package/ios/Pods/ViewControllers/OTPVerificationVC.swift +1 -66
- package/ios/Pods/ViewControllers/PaymentInformation/PaymentInfoVC.swift +571 -369
- package/ios/Pods/ViewControllers/ThreeDSecurePaymentDoneVC.swift +18 -9
- package/ios/easymerchantsdk.podspec +1 -1
- package/ios/easymerchantsdk.storyboard +108 -85
- 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
|
-
|
|
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
|
-
|
|
83
|
+
// Only affect the textField, not the titleLabel
|
|
93
84
|
textField?.isEnabled = isEnabled
|
|
94
|
-
//
|
|
95
|
-
|
|
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 {
|