@jimrising/easymerchantsdk-react-native 1.3.9 → 1.4.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.
- package/.idea/caches/deviceStreaming.xml +77 -0
- package/README.md +140 -81
- package/android/.gradle/8.10/checksums/checksums.lock +0 -0
- package/android/.gradle/8.10/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.10/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.10/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/results.bin +1 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/BuildConfig.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkModule$1.dex +0 -0
- 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.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/reactlibrary/RNEasymerchantsdkPackage.dex +0 -0
- package/android/build/.transforms/20e1216b87bd06eaab3c9e5c68d4267a/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/.transforms/e9a664a11ce12edf79cd87b1e07aa243/results.bin +1 -0
- package/android/build/.transforms/e9a664a11ce12edf79cd87b1e07aa243/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/com/reactlibrary/BuildConfig.java +10 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +7 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkModule$1.class +0 -0
- 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.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/reactlibrary/RNEasymerchantsdkPackage.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +7 -0
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +7 -0
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkModule$1.class +0 -0
- 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.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/reactlibrary/RNEasymerchantsdkPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +17 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/RNEasymerchantsdkModule$1.class.uniqueId2 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/RNEasymerchantsdkModule$2.class.uniqueId0 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/RNEasymerchantsdkModule.class.uniqueId3 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/RNEasymerchantsdkPackage.class.uniqueId1 +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +4 -1
- package/android/src/main/java/com/reactlibrary/RNEasymerchantsdkModule.java +158 -36
- package/android/src/main/java/com/reactlibrary/RNEasymerchantsdkPackage.java +45 -13
- package/ios/Classes/EasyMerchantSdk.m +106 -55
- package/ios/Classes/EasyMerchantSdk.swift +199 -77
- package/ios/Classes/EasyPayViewController.swift +1 -1
- package/ios/CustomComponents/DatePickerHandler.swift +15 -4
- package/ios/EnvironmentConfig.swift +32 -30
- package/ios/Models/Request.swift +176 -14
- package/ios/Models/Result.swift +12 -5
- package/ios/Pods/ViewControllers/AdditionalInfoVC.swift +855 -366
- package/ios/Pods/ViewControllers/BaseVC.swift +51 -36
- package/ios/Pods/ViewControllers/BillingInfoVC/BillingInfoVC.swift +1985 -178
- package/ios/Pods/ViewControllers/CountryListVC.swift +20 -1
- package/ios/Pods/ViewControllers/CustomOverlay.swift +199 -0
- package/ios/Pods/ViewControllers/EmailVerificationVC.swift +74 -5
- package/ios/Pods/ViewControllers/GrailPayVC.swift +131 -107
- package/ios/Pods/ViewControllers/OTPVerificationVC.swift +296 -106
- package/ios/Pods/ViewControllers/PaymentDoneVC.swift +35 -26
- package/ios/Pods/ViewControllers/PaymentInformation/PaymentInfoVC.swift +1276 -545
- package/ios/Pods/ViewControllers/ThreeDSecurePaymentDoneVC.swift +607 -24
- package/ios/easymerchantsdk.podspec +1 -1
- package/ios/easymerchantsdk.storyboard +1388 -1165
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
////
|
|
2
|
+
//// GrailPayVC.swift
|
|
3
|
+
//// EasyPay
|
|
4
|
+
////
|
|
5
|
+
//// Created by Mony's Mac on 02/05/25.
|
|
6
|
+
////
|
|
7
7
|
|
|
8
8
|
import UIKit
|
|
9
9
|
import WebKit
|
|
@@ -15,6 +15,7 @@ public class GrailPayVC: UIViewController {
|
|
|
15
15
|
private var request: GrailPayRequest
|
|
16
16
|
|
|
17
17
|
public var onCompletion: ((Result) -> Void)?
|
|
18
|
+
private var didHandleBankConnection = false
|
|
18
19
|
|
|
19
20
|
public init(request: GrailPayRequest) {
|
|
20
21
|
self.request = request
|
|
@@ -25,8 +26,6 @@ public class GrailPayVC: UIViewController {
|
|
|
25
26
|
fatalError("init(coder:) has not been implemented")
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
private var didHandleBankConnection = false
|
|
29
|
-
|
|
30
29
|
override public func viewDidLoad() {
|
|
31
30
|
super.viewDidLoad()
|
|
32
31
|
setupUI()
|
|
@@ -36,12 +35,26 @@ public class GrailPayVC: UIViewController {
|
|
|
36
35
|
private func setupUI() {
|
|
37
36
|
view.backgroundColor = .white
|
|
38
37
|
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
let config = WKWebViewConfiguration()
|
|
39
|
+
|
|
40
|
+
// Modern iOS 14+ JavaScript enablement
|
|
41
|
+
if #available(iOS 14.0, *) {
|
|
42
|
+
let webpagePreferences = WKWebpagePreferences()
|
|
43
|
+
webpagePreferences.allowsContentJavaScript = true
|
|
44
|
+
config.defaultWebpagePreferences = webpagePreferences
|
|
45
|
+
} else {
|
|
46
|
+
// Fallback for iOS < 14
|
|
47
|
+
let preferences = WKPreferences()
|
|
48
|
+
preferences.javaScriptEnabled = true
|
|
49
|
+
config.preferences = preferences
|
|
50
|
+
}
|
|
43
51
|
|
|
44
|
-
|
|
52
|
+
config.websiteDataStore = WKWebsiteDataStore.default()
|
|
53
|
+
config.userContentController.add(self, name: "grailpayHandler")
|
|
54
|
+
config.allowsInlineMediaPlayback = true
|
|
55
|
+
config.mediaTypesRequiringUserActionForPlayback = []
|
|
56
|
+
|
|
57
|
+
webView = WKWebView(frame: view.bounds, configuration: config)
|
|
45
58
|
webView.navigationDelegate = self
|
|
46
59
|
webView.uiDelegate = self
|
|
47
60
|
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
|
|
@@ -56,99 +69,102 @@ public class GrailPayVC: UIViewController {
|
|
|
56
69
|
private func loadGrailPaySDK() {
|
|
57
70
|
loadingIndicator.startAnimating()
|
|
58
71
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
<
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
window.sdkInitialized
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
finder: {
|
|
91
|
-
subtitle: '\(self.request.finderSubtitle)',
|
|
92
|
-
searchPlaceholder: '\(self.request.searchPlaceholder)'
|
|
93
|
-
}
|
|
72
|
+
let sdkURL = request.isSandbox
|
|
73
|
+
? "https://bank-link-widget-sandbox.grailpay.com/sdk.js"
|
|
74
|
+
: "https://bank-link-widget.grailpay.com/sdk.js"
|
|
75
|
+
|
|
76
|
+
let html = """
|
|
77
|
+
<!DOCTYPE html>
|
|
78
|
+
<html>
|
|
79
|
+
<head>
|
|
80
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
81
|
+
<script>
|
|
82
|
+
window.sdkInitialized = false;
|
|
83
|
+
|
|
84
|
+
function initializeSDK() {
|
|
85
|
+
if (window.sdkInitialized) return;
|
|
86
|
+
|
|
87
|
+
if (typeof window.grailpay === 'undefined') {
|
|
88
|
+
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'error', data: 'SDK not loaded' });
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
window.grailpay.init({
|
|
93
|
+
token: '\(request.accessToken)',
|
|
94
|
+
vendorId: '\(request.vendorId)',
|
|
95
|
+
role: '\(request.role)',
|
|
96
|
+
timeout: \(request.timeout),
|
|
97
|
+
theme: {
|
|
98
|
+
branding_name: '\(request.brandingName)',
|
|
99
|
+
screens: {
|
|
100
|
+
finder: {
|
|
101
|
+
subtitle: '\(request.finderSubtitle)',
|
|
102
|
+
searchPlaceholder: '\(request.searchPlaceholder)'
|
|
94
103
|
}
|
|
95
|
-
},
|
|
96
|
-
onError: function(error) {
|
|
97
|
-
console.log("JS onError:", error);
|
|
98
|
-
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'error', data: error });
|
|
99
|
-
},
|
|
100
|
-
onBankConnected: function(data) {
|
|
101
|
-
console.log("✅ Bank connected:", data);
|
|
102
|
-
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'bankConnected', data: data });
|
|
103
|
-
},
|
|
104
|
-
onLinkExit: function(data) {
|
|
105
|
-
console.log("⚠️ User exited:", data);
|
|
106
|
-
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'linkExit', data: data });
|
|
107
104
|
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}).catch(function(error) {
|
|
112
|
-
console.log("❌ SDK init failed:", error);
|
|
105
|
+
},
|
|
106
|
+
onError: function(error) {
|
|
107
|
+
console.log("JS onError:", error);
|
|
113
108
|
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'error', data: error });
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
console.log("
|
|
125
|
-
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: '
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
109
|
+
},
|
|
110
|
+
onBankConnected: function(data) {
|
|
111
|
+
console.log("✅ Bank connected:", data);
|
|
112
|
+
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'bankConnected', data: data });
|
|
113
|
+
},
|
|
114
|
+
onLinkedDefaultAccount: function(data) {
|
|
115
|
+
console.log("Default Account", data);
|
|
116
|
+
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'defaultAccountSelected', data: data });
|
|
117
|
+
},
|
|
118
|
+
onLinkExit: function(data) {
|
|
119
|
+
console.log("⚠️ User exited:", data);
|
|
120
|
+
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'linkExit', data: data });
|
|
121
|
+
}
|
|
122
|
+
}).then(function() {
|
|
123
|
+
window.sdkInitialized = true;
|
|
124
|
+
window.grailpay.open();
|
|
125
|
+
}).catch(function(error) {
|
|
126
|
+
console.log("❌ SDK init failed:", error);
|
|
127
|
+
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'error', data: error });
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function loadSDK() {
|
|
132
|
+
const script = document.createElement('script');
|
|
133
|
+
script.src = '\(sdkURL)';
|
|
134
|
+
script.onload = function() {
|
|
135
|
+
setTimeout(initializeSDK, 1000);
|
|
136
|
+
};
|
|
137
|
+
script.onerror = function(error) {
|
|
138
|
+
console.log("❌ Failed to load SDK script");
|
|
139
|
+
window.webkit.messageHandlers.grailpayHandler.postMessage({ type: 'error', data: 'Failed to load SDK script' });
|
|
140
|
+
};
|
|
141
|
+
document.head.appendChild(script);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
document.addEventListener('DOMContentLoaded', loadSDK);
|
|
145
|
+
</script>
|
|
146
|
+
</head>
|
|
147
|
+
<body style="margin:0;padding:0;"></body>
|
|
148
|
+
</html>
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
let baseURL = URL(string: request.isSandbox
|
|
152
|
+
? "https://bank-link-widget-sandbox.grailpay.com"
|
|
153
|
+
: "https://bank-link-widget.grailpay.com")
|
|
154
|
+
|
|
155
|
+
webView.loadHTMLString(html, baseURL: baseURL)
|
|
140
156
|
}
|
|
141
157
|
|
|
142
158
|
private func handleError(_ error: Error) {
|
|
143
159
|
DispatchQueue.main.async {
|
|
144
160
|
self.loadingIndicator.stopAnimating()
|
|
145
|
-
|
|
146
|
-
self.onCompletion?(Result(error: nsError))
|
|
161
|
+
self.onCompletion?(Result(error: error as NSError))
|
|
147
162
|
self.dismiss(animated: true)
|
|
148
163
|
}
|
|
149
164
|
}
|
|
150
165
|
}
|
|
151
166
|
|
|
167
|
+
// MARK: - WKNavigationDelegate
|
|
152
168
|
extension GrailPayVC: WKNavigationDelegate {
|
|
153
169
|
public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
|
|
154
170
|
loadingIndicator.stopAnimating()
|
|
@@ -159,27 +175,34 @@ extension GrailPayVC: WKNavigationDelegate {
|
|
|
159
175
|
}
|
|
160
176
|
}
|
|
161
177
|
|
|
178
|
+
// MARK: - WKScriptMessageHandler
|
|
162
179
|
extension GrailPayVC: WKScriptMessageHandler {
|
|
163
180
|
public func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
|
|
164
|
-
print("
|
|
181
|
+
print("JS Message received: \(message.body)")
|
|
165
182
|
|
|
166
183
|
guard let body = message.body as? [String: Any],
|
|
167
184
|
let type = body["type"] as? String else {
|
|
168
|
-
print("
|
|
185
|
+
print("Invalid message structure")
|
|
169
186
|
return
|
|
170
187
|
}
|
|
171
188
|
|
|
172
189
|
switch type {
|
|
173
190
|
case "bankConnected":
|
|
174
|
-
|
|
175
|
-
print("
|
|
191
|
+
if let data = body["data"] {
|
|
192
|
+
print("All linked account data from GrailPay:", data)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
case "defaultAccountSelected":
|
|
196
|
+
guard let dataG = body["data"] as? [String: Any] else {
|
|
197
|
+
print("No account data selected")
|
|
176
198
|
return
|
|
177
199
|
}
|
|
178
200
|
|
|
201
|
+
print("Received defaultAccountSelected: \(dataG)")
|
|
202
|
+
|
|
179
203
|
if !didHandleBankConnection {
|
|
180
|
-
didHandleBankConnection = true
|
|
181
|
-
|
|
182
|
-
|
|
204
|
+
didHandleBankConnection = true
|
|
205
|
+
let dataArray: [[String: Any]] = [dataG]
|
|
183
206
|
DispatchQueue.main.async {
|
|
184
207
|
self.onCompletion?(Result(type: .success, chargeData: ["data": dataArray]))
|
|
185
208
|
self.dismiss(animated: true)
|
|
@@ -188,30 +211,31 @@ extension GrailPayVC: WKScriptMessageHandler {
|
|
|
188
211
|
|
|
189
212
|
case "linkExit":
|
|
190
213
|
if didHandleBankConnection {
|
|
191
|
-
print("
|
|
214
|
+
print("linkExit ignored (already handled)")
|
|
192
215
|
return
|
|
193
216
|
}
|
|
194
|
-
print("
|
|
217
|
+
print("User exited linking flow")
|
|
195
218
|
DispatchQueue.main.async {
|
|
196
219
|
self.onCompletion?(Result(type: .cancelled))
|
|
197
220
|
self.dismiss(animated: true)
|
|
198
221
|
}
|
|
199
222
|
|
|
200
223
|
case "error":
|
|
201
|
-
let errorMessage =
|
|
224
|
+
let errorMessage = body["data"] as? String ?? "Unknown error"
|
|
225
|
+
print("GrailPay Error:", errorMessage)
|
|
202
226
|
let error = NSError(domain: "GrailPayError", code: 0, userInfo: [NSLocalizedDescriptionKey: errorMessage])
|
|
203
|
-
print("❌ GrailPay JS error: \(errorMessage)")
|
|
204
227
|
handleError(error)
|
|
205
228
|
|
|
206
229
|
default:
|
|
207
|
-
print("
|
|
230
|
+
print("Unknown JS message type:", type)
|
|
208
231
|
}
|
|
209
232
|
}
|
|
210
233
|
}
|
|
211
234
|
|
|
212
|
-
|
|
235
|
+
// MARK: - WKUIDelegate
|
|
213
236
|
extension GrailPayVC: WKUIDelegate {
|
|
214
|
-
public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration,
|
|
237
|
+
public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration,
|
|
238
|
+
for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
|
|
215
239
|
if navigationAction.targetFrame == nil {
|
|
216
240
|
webView.load(navigationAction.request)
|
|
217
241
|
}
|