Ios 如何将PayU货币整合到swift中
我是swift新手,有人能帮我将PayU Money整合到swift中吗。。。。Ios 如何将PayU货币整合到swift中,ios,objective-c,iphone,swift,Ios,Objective C,Iphone,Swift,我是swift新手,有人能帮我将PayU Money整合到swift中吗。。。。 我正在使用这个sdk:这个答案来自PayU文档本身,我在这里回答这个问题只是因为我花了几个小时来实现他们的文档 嗨,我可以指导你进行非无缝集成。 在非无缝集成中,PayU已经提供UI,并将处理卡类型和所有支付流程,最后将通知您的交易状态以及失败原因和所有详细信息 从此处下载SDK: 从示例代码中,从“BusinessLayer”文件夹复制文件 因此,我希望您现在拥有所有必需的文件,我们可以进一步进行集成 您正在将
我正在使用这个sdk:这个答案来自PayU文档本身,我在这里回答这个问题只是因为我花了几个小时来实现他们的文档 嗨,我可以指导你进行非无缝集成。 在非无缝集成中,PayU已经提供UI,并将处理卡类型和所有支付流程,最后将通知您的交易状态以及失败原因和所有详细信息 从此处下载SDK: 从示例代码中,从“BusinessLayer”文件夹复制文件 因此,我希望您现在拥有所有必需的文件,我们可以进一步进行集成 您正在将PayU与swift集成,因为PayU团队没有swift SDK,我们必须继续与Objective-C进行绑定。 您可以在此处找到有关此的信息: 在build设置中创建并配置头文件后,导入SDK的以下头文件
#import "PayU_iOS_CoreSDK.h"
#import <CommonCrypto/CommonHMAC.h>
#import "PUUIPaymentOptionVC.h"
#import "PUSAWSManager.h"
#import "PUSAWSManager.h"
#import "PUSAHelperClass.h"
这是我为进一步处理而创建的函数
func continueWithCardPayment() {
paymentParam.key = "gtKFFx"
paymentParam.transactionID = "umangtxn123"
paymentParam.amount = "100.0"
paymentParam.productInfo = "Nokia"
paymentParam.SURL = "https://google.com/"
paymentParam.FURL = "https://facebook.com/"
paymentParam.firstName = "Umang"
paymentParam.email = "umangarya336@gmail.com"
paymentParam.environment = ENVIRONMENT_MOBILETEST
paymentParam.udf1 = "udf1"
paymentParam.udf2 = "udf2"
paymentParam.udf3 = "udf3"
paymentParam.udf4 = "udf4"
paymentParam.udf5 = "udf5"
paymentParam.offerKey = "" // Set this property if you want to give offer:
paymentParam.userCredentials = ""
PUSAhelper.generateHashFromServer(self.paymentParam) { (hashes, errorString) in
self.hashes = hashes
self.paymentParam.hashes = hashes
self.callPaymentGateway()
}
}
func callPaymentGateway() {
let webServiceResponse :PayUWebServiceResponse = PayUWebServiceResponse()
webServiceResponse.getPayUPaymentRelatedDetailForMobileSDK(paymentParam) { (paymentDetail, errString, extraParam) in
if errString == nil {
let payOptionVC: PUUIPaymentOptionVC = loadVC("PUUIMainStoryBoard", strVCId: VC_IDENTIFIER_PAYMENT_OPTION) as! PUUIPaymentOptionVC
payOptionVC.paymentParam = self.paymentParam
payOptionVC.paymentRelatedDetail = paymentDetail
runOnMainThread({
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.paymentResponseReceived(_:)), name: kPUUINotiPaymentResponse, object: nil)
self.navigationController?.pushViewController(payOptionVC, animated: true)
})
}
else{
print("Failed to proceed for payment : \(errString)")
}
}
}
有一些我的自定义功能,将通过错误在您的身边复制粘贴,我在这里提到他们。一定要照顾他们
1) loadVC(“PUUIMainStoryBoard”,strVCId:VC\u标识符\u支付选项)
//Loadvc函数是我为加载视图控制器而创建的,您必须在调用视图控制器时对其进行更改
2) RunnonMainThread({
//此函数用于在主线程上运行代码
我使用了PayU团队提供的所有测试凭证
您可以在他们的文档中找到更多信息:
//通过这一行,我们添加了支付网关发送的通知,通知我们支付过程的状态,让我们兑现通知
func paymentResponseReceived(notify:NSNotification) {
print(notify)
}
您将在notify.object中获得响应。
您可以在他们的文档中找到更复杂的语言和方式:
希望这个答案能对您有所帮助。这个答案取自PayU文档本身,我在这里回答这个问题只是因为我花了几个小时来实现他们的文档 嗨,我可以指导你进行非无缝集成。 在非无缝集成中,PayU已经提供UI,并将处理卡类型和所有支付流程,最后将通知您的交易状态以及失败原因和所有详细信息 从此处下载SDK: 从示例代码中,从“BusinessLayer”文件夹复制文件 因此,我希望您现在拥有所有必需的文件,我们可以进一步进行集成 您正在将PayU与swift集成,因为PayU团队没有swift SDK,我们必须继续与Objective-C进行绑定。 您可以在此处找到有关此的信息: 在build设置中创建并配置头文件后,导入SDK的以下头文件
#import "PayU_iOS_CoreSDK.h"
#import <CommonCrypto/CommonHMAC.h>
#import "PUUIPaymentOptionVC.h"
#import "PUSAWSManager.h"
#import "PUSAWSManager.h"
#import "PUSAHelperClass.h"
这是我为进一步处理而创建的函数
func continueWithCardPayment() {
paymentParam.key = "gtKFFx"
paymentParam.transactionID = "umangtxn123"
paymentParam.amount = "100.0"
paymentParam.productInfo = "Nokia"
paymentParam.SURL = "https://google.com/"
paymentParam.FURL = "https://facebook.com/"
paymentParam.firstName = "Umang"
paymentParam.email = "umangarya336@gmail.com"
paymentParam.environment = ENVIRONMENT_MOBILETEST
paymentParam.udf1 = "udf1"
paymentParam.udf2 = "udf2"
paymentParam.udf3 = "udf3"
paymentParam.udf4 = "udf4"
paymentParam.udf5 = "udf5"
paymentParam.offerKey = "" // Set this property if you want to give offer:
paymentParam.userCredentials = ""
PUSAhelper.generateHashFromServer(self.paymentParam) { (hashes, errorString) in
self.hashes = hashes
self.paymentParam.hashes = hashes
self.callPaymentGateway()
}
}
func callPaymentGateway() {
let webServiceResponse :PayUWebServiceResponse = PayUWebServiceResponse()
webServiceResponse.getPayUPaymentRelatedDetailForMobileSDK(paymentParam) { (paymentDetail, errString, extraParam) in
if errString == nil {
let payOptionVC: PUUIPaymentOptionVC = loadVC("PUUIMainStoryBoard", strVCId: VC_IDENTIFIER_PAYMENT_OPTION) as! PUUIPaymentOptionVC
payOptionVC.paymentParam = self.paymentParam
payOptionVC.paymentRelatedDetail = paymentDetail
runOnMainThread({
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.paymentResponseReceived(_:)), name: kPUUINotiPaymentResponse, object: nil)
self.navigationController?.pushViewController(payOptionVC, animated: true)
})
}
else{
print("Failed to proceed for payment : \(errString)")
}
}
}
有一些我的自定义功能,将通过错误在您身边复制粘贴,我在这里提到他们。一定要照顾他们
1) loadVC(“PUUIMainStoryBoard”,strVCId:VC\u标识符\u支付选项)
//Loadvc函数是我为加载视图控制器而创建的,您必须在调用视图控制器时对其进行更改
2) RunnonMainThread({
//此函数用于在主线程上运行代码
我使用了PayU团队提供的所有测试凭证
您可以在他们的文档中找到更多信息:
//通过这一行,我们添加了支付网关发送的通知,通知我们支付过程的状态,让我们兑现通知
func paymentResponseReceived(notify:NSNotification) {
print(notify)
}
您将在notify.object中获得响应。
您可以在他们的文档中找到更复杂的语言和方式:
希望这个答案能对您有所帮助。以下是解决方案的源代码,包括所有步骤 首先,从这个链接下载框架,并按照安装步骤进行操作 完成框架安装步骤后,此处是代码 导入此框架 ** 1)导入插件显示 2) 导入CommonCrypto ** 添加此函数,并在需要ex-like on按钮或特定事件时调用它
func continueWithCardPayment()
{
var paymentParam = PUMTxnParam()
paymentParam.key = "your merhcant key"
paymentParam.merchantid = " merchant id"
paymentParam.txnID = "xyz"
paymentParam.phone = "982412345"
paymentParam.amount = "500"
paymentParam.productInfo = "Nokia"
paymentParam.surl = "https://test.payumoney.com/mobileapp/payumoney/success.php"
paymentParam.furl = "https://test.payumoney.com/mobileapp/payumoney/failure.php"
paymentParam.firstname = "john"
paymentParam.email = "john@john.com"
paymentParam.environment = PUMEnvironment.test
paymentParam.udf1 = "udf1"
paymentParam.udf2 = "udf2"
paymentParam.udf3 = "udf3"
paymentParam.udf4 = "udf4"
paymentParam.udf5 = "udf5"
paymentParam.udf6 = ""
paymentParam.udf7 = ""
paymentParam.udf8 = ""
paymentParam.udf9 = ""
paymentParam.udf10 = ""
paymentParam.hashValue = self.getHashForPaymentParams(paymentParam)
// paymentParam.offerKey = "" // Set this property if you want to give offer:
// paymentParam.userCredentials = ""
PlugNPlay.presentPaymentViewController(withTxnParams: paymentParam, on: self, withCompletionBlock: { paymentResponse, error, extraParam in
if error != nil {
UIUtility.toastMessage(onScreen: error?.localizedDescription)
} else {
var message = ""
if paymentResponse?["result"] != nil && (paymentResponse?["result"] is [AnyHashable : Any]) {
print(paymentResponse!)
message = "Hello Asad sucess"
// message = paymentResponse?["result"]?["error_Message"] as? String ?? ""
// if message.isEqual(NSNull()) || message.count == 0 || (message == "No Error") {
// message = paymentResponse?["result"]?["status"] as? String ?? ""
// }
} else {
message = paymentResponse?["status"] as? String ?? ""
}
UIUtility.toastMessage(onScreen: message)
}
})
//PlugNPlay.presentPaymentViewController(withTxnParams: paymentParam, on: self, withCompletionBlock: )
}
然后添加这两个生成hash的函数&SHA512
func sha512(_ str: String) -> String {
let data = str.data(using:.utf8)!
var digest = [UInt8](repeating: 0, count: Int(CC_SHA512_DIGEST_LENGTH))
data.withUnsafeBytes({
_ = CC_SHA512($0, CC_LONG(data.count), &digest)
})
return digest.map({ String(format: "%02hhx", $0) }).joined(separator: "")
}
func getHashForPaymentParams(_ txnParam: PUMTxnParam?) -> String? {
let salt = "your salt key"
var hashSequence: String? = nil
if let key = txnParam?.key, let txnID = txnParam?.txnID, let amount = txnParam?.amount, let productInfo = txnParam?.productInfo, let firstname = txnParam?.firstname, let email = txnParam?.email, let udf1 = txnParam?.udf1, let udf2 = txnParam?.udf2, let udf3 = txnParam?.udf3, let udf4 = txnParam?.udf4, let udf5 = txnParam?.udf5, let udf6 = txnParam?.udf6, let udf7 = txnParam?.udf7, let udf8 = txnParam?.udf8, let udf9 = txnParam?.udf9, let udf10 = txnParam?.udf10 {
hashSequence = "\(key)|\(txnID)|\(amount)|\(productInfo)|\(firstname)|\(email)|\(udf1)|\(udf2)|\(udf3)|\(udf4)|\(udf5)|\(udf6)|\(udf7)|\(udf8)|\(udf9)|\(udf10)|\(salt)"
}
let hash = self.sha512(hashSequence!).description.replacingOccurrences(of: "<", with: "").replacingOccurrences(of: ">", with: "").replacingOccurrences(of: " ", with: "")
return hash
}
func-sha512(str:String)->String{
让data=str.data(使用:.utf8)!
变量摘要=[UInt8](重复:0,计数:Int(抄送摘要长度))
data.withUnsafeBytes({
_=CC_SHA512($0,CC_LONG(data.count)和摘要)
})
return digest.map({String(格式:'%02hhx',$0)})。已加入(分隔符:“”)
}
func getHashForPaymentParams(xnParam:PUMTxnParam?->字符串{
让salt=“你的盐钥匙”
var hashSequence:字符串?=nil
如果让key=txnParam?.key,让txnID=txnParam?.txnID,让amount=txnParam?.amount,让productInfo=txnParam?.productInfo,让firstname=txnParam?.firstname,让email=txnParam?.email,让udf1=txnParam?.udf1,让udf2=txnParam?.udf2,让udf3=txnParam?.udf3,让udf4=txnParam?.udf5=txnParam?.udf5,让udf6=txnParam?.udf6,让udf7=txnParam?.udf7,让udf8=txnParam?.udf8,让udf9=txnParam?.udf9,让udf10=txnParam?.udf10{
hashSequence=“\(键)\(txnID)\(金额)\(产品信息)\(名字)\(电子邮件)\(udf1)\(udf2)\(udf3)\(udf4)\(udf5)\(udf6)\(udf7)\(udf8)\(udf9)\(udf10)\(盐)”
}
让hash=self.sha512(hashSequence!)。说明。replacingOccurrences(of:,with:)。replacingOccurrences(of:,with:)
返回散列
}
立即运行代码以下是解决方案的源代码,包括所有步骤 首先,从这个链接下载框架,并按照安装步骤进行操作 完成框架安装步骤后,此处是代码 导入此框架 ** 1)导入插件显示 2) 导入CommonCrypto ** 添加此函数并在需要时调用它