- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试将 CCAvenue 支付网关集成到我使用 swift4 开发的 iOS 应用程序中。我得到了
"Error!!! Problem in decrypting application request"
我已检查给出的答案:https://stackoverflow.com/a/37327122/3548469但我的案子没有运气。
这是我从文档中尝试过的
private func gettingRsaKey(completion: @escaping (_ success: Bool, _ object: AnyObject?) -> ()){
let serialQueue = DispatchQueue(label: "serialQueue", qos: .userInitiated)
serialQueue.sync {
print("access_code=\(CC_AVENUE_ACCESSKEY)")
print("order_id=\(self.orderId)")
self.rsaKeyDataStr = "access_code=\(CC_AVENUE_ACCESSKEY)&order_id=\(self.orderId)"
let requestData = self.rsaKeyDataStr.data(using: String.Encoding.utf8)
guard let urlFromString = URL(string: CC_AVENUE_RSAURL) else{
return
}
var urlRequest = URLRequest(url: urlFromString)
urlRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
urlRequest.httpMethod = "POST"
urlRequest.httpBody = requestData
let session = URLSession(configuration: URLSessionConfiguration.default)
print("session",session)
session.dataTask(with: urlRequest as URLRequest) {
(data, response, error) -> Void in
if let response = response as? HTTPURLResponse, 200...299 ~= response.statusCode{
guard let data = data else{
print("No value for data")
completion(false, "Not proper data for RSA Key" as AnyObject?)
return
}
print("data :: ",data)
completion(true, data as AnyObject?)
}
else{
completion(false, "Unable to generate RSA Key please check" as AnyObject?)
}
}.resume()
}
}
var request: NSMutableURLRequest?
private func encyptCardDetails(data: Data){
guard let rsaKeytemp = String(bytes: data, encoding: String.Encoding.ascii) else{
print("No value for rsaKeyTemp")
return
}
rsaKey = rsaKeytemp
rsaKey = self.rsaKey.trimmingCharacters(in: CharacterSet.newlines)
rsaKey = "-----BEGIN PUBLIC KEY-----\n\(self.rsaKey)\n-----END PUBLIC KEY-----\n"
print("rsaKey :: ",rsaKey)
let myRequestString = "amount=\(amount)¤cy=\(getCurrency())"
let ccTool = CCTool()
var encVal = ccTool.encryptRSA(myRequestString, key: rsaKey)
encVal = CFURLCreateStringByAddingPercentEscapes(
nil,
encVal! as CFString,
nil,
"!*'();:@&=+$,/?%#[]" as CFString,
CFStringBuiltInEncodings.UTF8.rawValue) as String?
let urlAsString = "https://secure.ccavenue.com/transaction/initTrans"
let encryptedStr = String(format:"merchant_id=%@&order_id=%@&redirect_url=%@&cancel_url=%@&enc_val=%@&access_code=%@", CC_AVENUE_MERCHANTID, self.orderId, CC_AVENUE_REDIRECTURL, CC_AVENUE_REDIRECTURL, encVal!,CC_AVENUE_ACCESSKEY)
print("access_code=\(CC_AVENUE_ACCESSKEY)")
print("order_id=\(self.orderId)")
let myRequestData = encryptedStr.data(using: String.Encoding.utf8)
request = NSMutableURLRequest(url: URL(string: urlAsString)! as URL, cachePolicy: NSURLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 30)
request?.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
request?.setValue(urlAsString, forHTTPHeaderField: "Referer")
request?.httpMethod = "POST"
request?.httpBody = myRequestData
print("\n\n\nwebview :: ",request?.url as Any)
print("\n\n\nwebview :: ",request?.description as Any)
print("\n\n\nwebview :: ",request?.httpBody?.description as Any)
print("\n\n\nwebview :: ",request?.allHTTPHeaderFields! as Any)
let session = URLSession(configuration: URLSessionConfiguration.default)
print("session",session)
session.dataTask(with: request! as URLRequest) {
(data, response, error) -> Void in
if let response = response as? HTTPURLResponse, 200...299 ~= response.statusCode{
guard let data = data else{
print("No value for data")
return
}
DispatchQueue.main.async {
self.viewWeb.loadRequest(self.request! as URLRequest)
}
print("data :: ",data)
}else{
print("into else")
showAlertWithTitleWithMessage(message: "Unable to load webpage currently, Please try again later.")
}
}.resume()
}
我能够生成 RSA key ,但无法继续。
注意*
我有真实账户,我正在为该账户使用访问码和商家 key AccessCode 和 orderId 与用于生成 RSA key 的相同。
最佳答案
嘿,我遇到了同样的问题。这是因为新的 CCAvenue SDK。 CCAvenue 加载页面请求的流程分为三个步骤。
1) 我们从服务器获取 RSA key 。
2) 我们使用此 RSA key 加密订单详细信息并创建 Web 请求。
3) 在 WebView 中打开请求。
当第 1 步和第 3 步之间没有延迟时,就会出现此问题。为解决此问题,新 SDK 引入了一个创建延迟的新步骤。
1) 我们从服务器获取 RSA key 。
2) 我们使用此 RSA key 加密订单详细信息并创建 Web 请求。
3) CCAvenue 在这里引入了一个新的 URLRequest 只是为了在步骤 1 和 4 中进行延迟
4) 在 WebView 中打开请求。
这在大多数情况下都有效,但当步骤 3 在毫秒内完成时失败,或者换句话说,在步骤 1 和步骤 4 中没有延迟或延迟很少。
因此这里的解决方法是在第 1 步和第 4 步中创建一个手动延迟。
所以将您的功能更改为以下:
private func encyptCardDetails(data: Data){
guard let rsaKeytemp = String(bytes: data, encoding: String.Encoding.ascii) else{
print("No value for rsaKeyTemp")
return
}
rsaKey = rsaKeytemp
rsaKey = self.rsaKey.trimmingCharacters(in: CharacterSet.newlines)
rsaKey = "-----BEGIN PUBLIC KEY-----\n\(self.rsaKey)\n-----END PUBLIC KEY-----\n"
print("rsaKey :: ",rsaKey)
let myRequestString = "amount=\(amount)¤cy=\(getCurrency())"
let ccTool = CCTool()
var encVal = ccTool.encryptRSA(myRequestString, key: rsaKey)
encVal = CFURLCreateStringByAddingPercentEscapes(
nil,
encVal! as CFString,
nil,
"!*'();:@&=+$,/?%#[]" as CFString,
CFStringBuiltInEncodings.UTF8.rawValue) as String?
let urlAsString = "https://secure.ccavenue.com/transaction/initTrans"
let encryptedStr = String(format:"merchant_id=%@&order_id=%@&redirect_url=%@&cancel_url=%@&enc_val=%@&access_code=%@", CC_AVENUE_MERCHANTID, self.orderId, CC_AVENUE_REDIRECTURL, CC_AVENUE_REDIRECTURL, encVal!,CC_AVENUE_ACCESSKEY)
print("access_code=\(CC_AVENUE_ACCESSKEY)")
print("order_id=\(self.orderId)")
let myRequestData = encryptedStr.data(using: String.Encoding.utf8)
request = NSMutableURLRequest(url: URL(string: urlAsString)! as URL, cachePolicy: NSURLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 30)
request?.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
request?.setValue(urlAsString, forHTTPHeaderField: "Referer")
request?.httpMethod = "POST"
request?.httpBody = myRequestData
print("\n\n\nwebview :: ",request?.url as Any)
print("\n\n\nwebview :: ",request?.description as Any)
print("\n\n\nwebview :: ",request?.httpBody?.description as Any)
print("\n\n\nwebview :: ",request?.allHTTPHeaderFields! as Any)
let session = URLSession(configuration: URLSessionConfiguration.default)
print("session",session)
session.dataTask(with: request! as URLRequest) {
(data, response, error) -> Void in
if let response = response as? HTTPURLResponse, 200...299 ~= response.statusCode{
guard let data = data else{
print("No value for data")
return
}
// Create the delay here
DispatchQueue.main.asyncAfter(deadline: .now()+1.0, execute: {
self.viewWeb.loadRequest(self.request! as URLRequest)
}
print("data :: ",data)
}else{
print("into else")
showAlertWithTitleWithMessage(message: "Unable to load webpage currently, Please try again later.")
}
}.resume()
}
关于ios - CCAvenue: "Error!!! in decrypting application request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49463678/
我是支付网关集成方面的新手。我必须在我的项目 (CORE PHP) 中集成 CCAvenue 支付网关集成。但是我不知道如何为开发人员测试创建商户帐户,如何获取商户 key 等。我已经进行了研发,但是
我正在将 ccavenue 网关集成到我的 android 应用程序中。加载 webview 时出现以下错误 Transaction Status Error encountered ERROR: P
我想将 CCAvenue 支付网关集成到我的网站中。有没有沙箱网站可供 CCAvenue 测试付款?如果有的话请给我链接。 最佳答案 CCAvenue 从他们的网站上删除了 PDF,因此我删除了官方链
我正在 php 中进行 ccavenue 集成。我的整个代码在帐单详细信息的帮助下工作很慢。我的问题是:-我可以在不成功提供帐单详细信息的情况下使用 ccavenue 集成吗?如果是那么怎么办?我的意
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我正在努力将 CCAvenue 与我们的网站集成。我们的公司帐户有一个经批准的 CCAvenue 帐户。在发布之前,我想在本地测试设置上测试集成。 当 CCAvenue 处理从注册的网上商店 URL
我正在将 CCAvenue 集成到我的 Android 应用程序中,并且我正在进行非无缝集成。 我的商家服务器是 php,我正在将我的 httppost 发送到保存在我的商家服务器中的 GetRSA.
我已经将 CCAvenue 集成到我的应用程序中,但问题是当代码被命中时 https://secure.ccavenue.com/transaction/initTrans 下面是代码: NSStri
我已经集成了 CCAvenue payment gateway一切正常,除了我无法从 CCAvenue 获取响应数据。 交易成功后,我只看到 CCAvenue 的感谢页面,但它不会自动刷新到我的重定向
我已将 CcAvenue 支付网关集成到我的交易项目中。有一个问题,即。 I am unable to get the status of $AuthDesc after a transaction.
我已经在我的网站中集成了 CcAvenue 支付网关方法和 citrus 支付网关。 CCavenue 方法中有一个重定向 url 选项,因此每当用户取消或支付金额时,它就会将他们重定向到重定向 ur
我正在尝试在 iOS 中集成 CCAvenue 支付集成。他们给了我两个名为:libcrypto.a 和 libssl.a 的库文件 他们还给了我一些头文件。 为了实现这一点,他们提到我应该在buil
我有一个 android 应用程序,想与 Flipkart 和其他人一样与 CCAvenue 支付网关集成。但我不知道如何集成 CCAvenue,因为没有提供 SDK。我使用了易于集成的 paypal
谁能告诉我在我的网站上集成 cc-avenue 的程序? 最佳答案 前往 CCA 大道 获取商户 ID、工作 key 、集成插件 将插件上传到您的服务器 提供商家 ID、工作 key 的详细信息 CC
我正在为我的 prestashop 网站设置 CCAvenue。信用卡交易成功后,当返回网站时,购物车项目没有清算,订单也没有更新。我认为问题出在商家帐户中的返回 URL设置。 ccavenue 设置
任何人都可以解释一下,如何集成 CCAvenue 移动集成。我已经从 CCAvenue 网站下载了 API,尽管我无法理解。 我尝试了 CCAvenue API 中的示例代码,尽管有些错误。像这样 '
安卓有CCAvenue PG的沙盒模式或者测试账号SDK吗? 如果是,请提供任何链接或告诉我在我的应用程序中作为测试帐户实现 CCAvenue PG 的其他方式。 我已经尝试了一切,包括 CCAven
实际上我正在使用mean stack开发Web应用程序,在此应用程序中我尝试使用node_ccavenue集成ccavenue支付网关 Node 包。 下面是我的代码: ccavenue.se
我是支付网关的新手。我想使用 NodeJS 将 CCAvenue 集成到我的 Web 应用程序中。我已经从 npm 安装了 CCAvenue 包,但我不知道如何进行付款。 如果有人向我指出 CCAve
在我的 magento 中,当我将美元作为基础货币时,paypal 可以正常使用,但需要 500 卢比。产品 CCAvenue 就像 For Rs 10 付款(我认为它需要 USD Amt. 500R
我是一名优秀的程序员,十分优秀!