CFSDK付款网关“请求中发送了无效令牌”

时间:2020-02-01 07:32:59

标签: ios swift frameworks payment-gateway

我正在开发一个需要集成支付网关的应用程序,并根据需要使用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":""}

以下是参考屏幕截图。

enter image description here

问题2: 由于我是通过嵌入UINavigationController内来展示SDK的,因此当我按下“后退”按钮时,它无法关闭自身。

由于无法解决的错误(无效令牌),我已经好几个礼拜了。因此,这里有人尝试过,请看看有什么问题吗?期待SO的解决方案。

P.S:我尝试联系他们的技术支持,并且每次他们刚刚发送指向其文档的链接时。

1 个答案:

答案 0 :(得分:1)

我已经使用Cash Free SDK(使用Xcode 11.0)准备了演示项目

第1步

要生成令牌,我已经在邮递员中使用

regular Release version

带有参数

{
"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和令牌

注意:

  1. 确保您正在使用TEST环境URL生成带有TEST环境客户端ID和客户端密钥的令牌
  2. 还要检查 notifyUrl
  3. 订单ID应该相同
  4. 确保您没有使用旧的或过期的令牌

问题2:不用理会,只需按下此控制器:)

干杯! :)

https://test.cashfree.com/api/v2/cftoken/order