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/

    相关文章:

    arrays - 快速 UserDefaults 字典

    java - 在 Java 中导入新框架?

    用于数据库抽象、安全登录的 PHP 框架或库

    ios - 如何向 ruby​​motion 应用程序添加动画?

    ios - 当应用程序处于后台时无法删除通知

    在方法中用作类型的 Swift 协议(protocol)不接受相同协议(protocol)的实例

    ios - scenekit - 动画 SCNNode.transform

    swift - 修改纸质入职框架

    ios - 在纵向状态下强制旋转 UIViewController

    iphone - kCFCalendarUnitQuarter 没有为每季度触发通知的通知设置下一个触发日期