【问题标题】:CFSDK payment gateway 'Invalid token sent in request'CFSDK 支付网关“请求中发送的令牌无效”
【发布时间】:2020-05-17 18:36:16
【问题描述】:

我正在开发一个需要集成支付网关的应用程序,并且我正在根据需要使用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从后端生成的token,需要传入支付参数。

问题 1: 每次我启动 SDK 时都会出现错误:"Invalid token sent in request" 并在 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:我尝试联系他们的技术支持,每次他们只是发送指向他们文档的链接。

【问题讨论】:

  • 您确定用于生成令牌的订单信息与使用 sdk 的请求匹配吗? ,我认为令牌不匹配或传递了错误的order_id

标签: ios swift frameworks payment-gateway


【解决方案1】:

我已经准备了带有 Cash Free SDK 的演示项目,使用 Xcode 11.0

第一步

要生成token,我在postman中使用过

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

带参数

{
"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 和 token

注意事项:

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

问题 2:不要费心展示,只需推动这个控制器 :)

干杯!! :)

【讨论】:

  • 感谢您抽出时间,我会试一试并告诉您。
猜你喜欢
  • 2019-02-21
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 2019-12-04
  • 1970-01-01
  • 2012-06-08
相关资源
最近更新 更多