我正在开发一个需要集成支付网关的应用程序,并根据需要使用Cashfree支付网关WebView Checkout
选项。通过他们的docs可以轻松实现。这是我启动SDK的方式:
func initiateCFSDK() {
let cashfreeVC = CFViewController(params: getPaymentParams(), appId: self.appId, env: self.environmentCF, callBack: self)
let navVC = UINavigationController(rootViewController: cashfreeVC)
self.present(navVC, animated: true, completion: nil)
}
付款参数:
func getPaymentParams() -> Dictionary<String, String> {
return [
"orderId": self.orderId,
"tokenData" : self.paymentToken,
"orderAmount": self.paymentValue,
"customerName": "name",
"orderNote": "health prodcuts",
"orderCurrency": "INR",
"customerPhone": "9876543210",
"customerEmail": "abc@gmail.com",
"notifyUrl": "https://test.gocashfree.com/notify"
]
}
从他们的文档中,我们需要将框架拖放到Xcode项目并将其添加到Embedded Binaries
。从后端使用orderId生成的令牌,需要在付款参数中传递。
问题1:
每次我启动SDK时,都会出现错误:“请求中发送的令牌无效” ,并在delegate
方法中打印以下结果:
Finished navigating to url https://test.cashfree.com/billpay/checkout/post/submit
JSON value : {"orderId":"","referenceId":"","orderAmount":"","txMsg":"Invalid token sent in request","txTime":"","txStatus":"FAILED","paymentMode":"","signature":""}
以下是参考屏幕截图。
问题2: 由于我是通过嵌入UINavigationController内来展示SDK的,因此当我按下“后退”按钮时,它无法关闭自身。
由于无法解决的错误(无效令牌),我已经好几个礼拜了。因此,这里有人尝试过,请看看有什么问题吗?期待SO的解决方案。
P.S:我尝试联系他们的技术支持,并且每次他们刚刚发送指向其文档的链接时。
答案 0 :(得分:1)
我已经使用Cash Free SDK(使用Xcode 11.0)准备了演示项目
第1步
要生成令牌,我已经在邮递员中使用
带有参数
{
"orderId":"ORD123456",
"orderAmount":"30",
"orderCurrency":"INR"
}
带有以下标题
Content-Type:application/json
X-Client-Id:XXXXXXX
X-Client-Secret:XXXXXX
第2步
现在输入代码
func initiateCFSDK() {
let cashfreeVC = CFViewController(params: getPaymentParams(), appId: "xxxxxxxxxxx", env: "TEST", callBack: self)
self.navigationController?.pushViewController(cashfreeVC, animated: true)
}
func getPaymentParams() -> Dictionary<String, String> {
return [
"orderId": "ORD123456",
"tokenData" : "<<TOKEN FROM POSTMAN REQUEST>>",
"orderAmount": "30",
"customerName": "name",
"orderNote": "health prodcuts",
"orderCurrency": "INR",
"customerPhone": "9876543210",
"customerEmail": "abc@gmail.com",
"notifyUrl": "https://test.gocashfree.com/notify"
]
}
这里没有什么改变,只是使用了 TEST 环境并传递了appid和令牌
注意:
问题2:不用理会,只需按下此控制器:)
干杯! :)