【问题标题】:How to integrate Razorpay in SwiftUI without storyboard如何在没有情节提要的情况下将 Razorpay 集成到 SwiftUI 中
【发布时间】:2022-01-12 19:40:00
【问题描述】:

我正在考虑在 Xcode 中将 Razorpay 结账功能与 iOS 集成,并在 https://razorpay.com/docs/payment-gateway/ios-integration/standard/ 找到了官方文档。该文档有助于将 Razorpay 与 UIViewController 集成。我正在构建的 iOS 应用程序不使用情节提要,并且严格来说是 SwiftUI。我已经研究了将 UIViewController 合并到 SwiftUI 中的多种方法,这完全可以通过 UIViewRepresentable 实现,但代码结构使用

struct ComponentName: UIViewRepresentable{}

但适用于 iOS 的 Razorpay SDK 想要将 RazorpayPaymentCompletionProtocol 实现为类而不是结构。如何在严格的 SwiftUI 应用程序中使用它?

【问题讨论】:

    标签: ios swiftui xcode-storyboard razorpay xcode13.2


    【解决方案1】:

    您可以使用协调器来管理视图控制器,该协调器将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()
        }
    }
    

    【讨论】:

    • 你怎么称呼这个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2014-04-21
    • 2015-10-26
    • 1970-01-01
    相关资源
    最近更新 更多