ios - CFSDK支付网关 'Invalid token sent in request'

标签 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 从后端生成的 token ,需要在支付参数中传递。

问题一:
每次我启动 SDK 时都会出现错误: “请求中发送的 token 无效”并在 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,因此当我按下后退按钮时,它无法自行关闭。

我因无法解决的错误(无效 token )而在数周后猛烈抨击。所以这里有人试过,请看看有什么问题?期待 SO 的解决方案。

P.S:我尝试联系他们的技术支持,每次他们只是发送链接到他们的文档。

最佳答案

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

步骤 1

要生成 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

笔记:
  • 确保您使用 TEST 环境 URL 生成带有 TEST 环境客户端 ID 和客户端密码的 token
  • 也检查 notifyUrl
  • 订单 ID 应该相同
  • 确保您没有使用旧的或过期的 token

  • 问题 2:不要费心展示,只需插入这个 Controller :)

    干杯!! :)

    enter image description here

    关于ios - CFSDK支付网关 'Invalid token sent in request',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60014935/

    相关文章:

    java - 根据预定义的 API 限制对类和方法的访问

    java - 构造函数上的 Spring @Autowired 注释如何工作?

    ios - 如何使用使用 Swift 3.0 开发的 Swift 4.0 更改 iOS 应用程序中按钮的高度和宽度

    ios - 如何在运行 React Native 应用程序的 iOS 设备中启用 Live Reload?

    ios - 我们可以使用我们编写的Face ID SDK吗?

    arrays - 快速从tableview列表中删除多个项目

    ios - 新翻译不会在iOS 8中自动显示

    ios - tableivew 单元格中的 Collection View 。这是重用的错误

    ios - 在iOS上保存xml文件(pugiXml和Cocos2d-x)

    javascript - 什么是ExtJS的替代品?