如何在没有故事板的情况下将 Razorpay 集成到 SwiftUI 中
How to integrate Razorpay in SwiftUI without storyboard
我正在考虑将 Razorpay 结账功能与 Xcode 中的 iOS 集成,并在 https://razorpay.com/docs/payment-gateway/ios-integration/standard/ 找到了官方文档。该文档有助于将 Razorpay 与 UIViewController 集成。我正在构建的 iOS 应用程序没有使用故事板,而是严格的 SwiftUI。我研究了多种将 UIViewController 合并到 SwiftUI 中的方法,这完全有可能使用 UIViewRepresentable 但代码结构使用
struct ComponentName: UIViewRepresentable{}
但是 iOS 的 Razorpay SDK 希望将 RazorpayPaymentCompletionProtocol
实现到 class 而不是结构。我该如何在严格的 SwiftUI 应用程序中使用它?
您可以使用协调器来管理视图控制器,该协调器将RazorpayPaymentCompletionProtocol
。
示例:
struct ComponentName: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> CheckoutViewController {
.init()
}
func updateUIViewController(_ uiViewController: CheckoutViewController, context: Context) { }
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, RazorpayPaymentCompletionProtocol {
let parent: ComponentName
typealias Razorpay = RazorpayCheckout
var razorpay: RazorpayCheckout!
init(_ parent: ComponentName) {
self.parent = parent
RazorpayCheckout.initWithKey(razorpayTestKey, andDelegate: self)
}
func onPaymentError(_ code: Int32, description str: String) {
print("error: ", code, str)
// self.presentAlert(withTitle: "Alert", message: str)
// parent.alert with message
}
func onPaymentSuccess(_ payment_id: String) {
print("success: ", payment_id)
// self.presentAlert(withTitle: "Success", message: "Payment Succeeded")
}
}
}
class CheckoutViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// self.showPaymentForm()
}
}
我正在考虑将 Razorpay 结账功能与 Xcode 中的 iOS 集成,并在 https://razorpay.com/docs/payment-gateway/ios-integration/standard/ 找到了官方文档。该文档有助于将 Razorpay 与 UIViewController 集成。我正在构建的 iOS 应用程序没有使用故事板,而是严格的 SwiftUI。我研究了多种将 UIViewController 合并到 SwiftUI 中的方法,这完全有可能使用 UIViewRepresentable 但代码结构使用
struct ComponentName: UIViewRepresentable{}
但是 iOS 的 Razorpay SDK 希望将 RazorpayPaymentCompletionProtocol
实现到 class 而不是结构。我该如何在严格的 SwiftUI 应用程序中使用它?
您可以使用协调器来管理视图控制器,该协调器将RazorpayPaymentCompletionProtocol
。
示例:
struct ComponentName: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> CheckoutViewController {
.init()
}
func updateUIViewController(_ uiViewController: CheckoutViewController, context: Context) { }
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, RazorpayPaymentCompletionProtocol {
let parent: ComponentName
typealias Razorpay = RazorpayCheckout
var razorpay: RazorpayCheckout!
init(_ parent: ComponentName) {
self.parent = parent
RazorpayCheckout.initWithKey(razorpayTestKey, andDelegate: self)
}
func onPaymentError(_ code: Int32, description str: String) {
print("error: ", code, str)
// self.presentAlert(withTitle: "Alert", message: str)
// parent.alert with message
}
func onPaymentSuccess(_ payment_id: String) {
print("success: ", payment_id)
// self.presentAlert(withTitle: "Success", message: "Payment Succeeded")
}
}
}
class CheckoutViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// self.showPaymentForm()
}
}