3

我在用,

*Xcode - 10.2

*Swift 语言版本 - swift 5

*RazorPay 框架版本 - 1.1.1 (pod 'razorpay-pod', '1.1.1')

我的问题是当我打电话给这个时,

razorpay.open(options, displayController: self)

它给了我一个意外的错误(代码 - 1)

/Users/travis/build/razorpay/razorpay-ios/RazorpayIOS/CheckoutOtpelf/Classes/RazorpayCheckoutVC.swift 取消初始化

我尝试过的解决方案是,

  1. Github 社区说在调用 open 函数之前隐藏导航栏(https://github.com/razorpay/razorpay-pod/issues/42)。
  2. 使用多个框架版本的razor pay
  3. 也尝试过 swift 4.2
  4. 我已经清理了我的项目,删除了派生数据并重建了它。

这是我的代码

import Razorpay

class controller: RazorpayPaymentCompletionProtocol{
        private var razorpay: Razorpay!

override func viewDidLoad() {
        super.viewDidLoad()
        razorpay = Razorpay.initWithKey("test_key", andDelegate: self)
}

func openRazorPay(){
        let options = [
            "amount" : "12.00"
        ]
        self.navigationController?.isNavigationBarHidden = true
        razorpay.open(options, displayController: self)
}

func onPaymentSuccess(_ payment_id: String) {
        print("success")
}

func onPaymentError(_ code: Int32, description str: String) {
        print("Failure")
}

}

此框架支持 Android,但不支持 iOS。我想获得付款流程。如果有人有任何解决方案,请与我分享。

4

2 回答 2

1

当我面临同样的问题时......

我所做的不同之处在于我采用静态金额值 100 并按原样传递其他数据......然后我进行付款过程......它有效......打开付款窗口。

如果您的金额值小于 100,那么它会发生......根据文档,我们在参数中分配的金额将其视为派萨......尝试使用这个,你会得到预期的结果..

在这里,您传递的金额是多少,乘以 100,例如 1 x 100。内部处理将其计为 INR 1,但他们的计算将其视为派萨。因此,您传递的值 100 表示 100 派萨,在付款窗口中将显示 1 卢比。

于 2019-07-12T11:09:38.117 回答
1

我遇到了同样的问题而且我发送给选项的所有参数都是正确的。

但问题是当我们尝试打开 RazorPay 屏幕进行付款时,出现了 RazorpayCheckoutVC.swift 取消初始化的问题

在我的情况下,我的父 viewController 被呈现,所以我只是将呈现的导航代码更改为推送,然后它就起作用了。

所以根据我的理解应该是

NavigationController -> Push ViewController -> RazorPaycheckoutVC。

于 2020-12-18T05:26:28.333 回答