मुख्य सामग्री पर जाएं

ASWebAuthenticationSession

iOS उपयोग के लिए, ASWebAuthenticationSession का उपयोग करना अनुशंसित तरीकों में से एक है।

लेनदेन बनाने और लेनदेन का लिंक प्राप्त करने के बाद, निम्नलिखित इम्प्लीमेंटेशन की सलाह दी जाती है:

  • अपने नियमित फ्लो में (जिसमें कार्ड नॉट प्रेजेंट सत्यापन शामिल है), आप API के माध्यम से जनरेट किए गए लिंक के साथ ASWebAuthenticationSession खोलेंगे।
  • आप इस ओपनिंग को उस तरीके से कस्टमाइज़ कर सकते हैं जो आपके ऐप के लिए सबसे उपयुक्त हो।
  • आप निगरानी करेंगे कि URL बदला है या नहीं (redirectUrl में) और फिर पेज को बंद करेंगे।

फ्लो को काम करने के लिए, आपको निम्नलिखित चरणों का पालन करना होगा:

चरण 1: पेमेंट प्रमाणीकरण कंट्रोलर बनाना

पहला चरण पेमेंट प्रमाणीकरण कंट्रोलर बनाना है। ऐसा करने के लिए, IDPayAuthenticationController (या आपकी पसंद का कोई अन्य नाम) नामक एक क्लास बनाएं।

इसके बाद, क्लास के शीर्ष पर AuthenticationServices फ्रेमवर्क को इम्पोर्ट करें।

क्लास को NSObject के रूप में घोषित करें और ASWebAuthenticationPresentationContextProviding प्रोटोकॉल को इम्प्लीमेंट करें।

परिणाम इस प्रकार होना चाहिए:

import AuthenticationServices

class IDPayAuthenticationController: NSObject, ASWebAuthenticationPresentationContextProviding {
func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
if let mainWindow = windowScene.windows.first {
return mainWindow
}
}
return ASPresentationAnchor()
}
}

चरण 2: प्रमाणीकरण इम्प्लीमेंट करना

वह फ़ाइल खोलें जहां आप प्रमाणीकरण करेंगे और आवश्यक इम्पोर्ट जोड़ें (हमारे उदाहरण में, हम यह ContentView.swift में कर रहे हैं)।

import SwiftUI
import AuthenticationServices

प्रमाणीकरण स्थिति को कंट्रोल करने के लिए, हम एक @State प्रॉपर्टी बनाएंगे।

@State private var isAuthenticated = false

ContentView स्ट्रक्चर के body के बाहर IDPayAuthenticationController क्लास का एक इंस्टेंस बनाएं।

let idPayController = IDPayAuthenticationController()

पेमेंट को वैलिडेट करने के लिए, authenticatePayment नामक एक फ़ंक्शन बनाएं।

func authenticatePayment() {
guard let url = URL(string: "URL_AUTHENTICATION") else { return }

var session: ASWebAuthenticationSession?
session = ASWebAuthenticationSession(url: url, callbackURLScheme: "BUNDLE") { callbackURL, error in
guard callbackURL != nil else {
if let error = error {
return print("Error during authentication: \(error.localizedDescription)")
}
return
}

// Processes the callback URL to check whether authentication succeeded
session?.cancel()
isAuthenticated = true
}

session?.presentationContextProvider = idPayController
session?.prefersEphemeralWebBrowserSession = true
session?.start()
}
खतरा

URL_AUTHENTICATION URL को अपने लेनदेन में प्राप्त प्रमाणीकरण URL में बदलना याद रखें, और साथ ही callbackURLScheme BUNDLE को उस रीडायरेक्ट में बदलें जो आपका लेनदेन बनाते समय प्रदान किया गया था (हम आपके ऐप के Bundle Identifier का उपयोग करने की सलाह देते हैं)।

नोट

प्रति लेनदेन एक यूनीक प्रमाणीकरण सुनिश्चित करने के लिए prefersEphemeralWebBrowserSession को true पर सेट करना महत्वपूर्ण है।

नोट

सही ढंग से कार्य करने के लिए कुछ अनुमतियां आवश्यक हैं, जैसे कि:

  • कैमरा
  • जियोलोकेशन

अधिक जानने के लिए, हम आधिकारिक ASWebAuthenticationSession दस्तावेज़ पढ़ने की सलाह देते हैं।