CCAvenue Gateway Integration kit for ios Application

后端 未结 6 1300
我寻月下人不归
我寻月下人不归 2020-12-13 07:44

Hi,
I have developed an application which needs payment gateway. I have already worked on \"Paypal\". It was successful and now i need to integrate another payment gate

6条回答
  •  佛祖请我去吃肉
    2020-12-13 08:16

    I have followed all the steps of Sagar Sukode and integrated CCAvenue SUCCESSFULLY.

    If anyone need CCWEBVIEWCONTROLER in swift 2.3 :-

    In ViewDidLoad :

        let rsaKey = getRsaKeyForCCAvenue()
    
        //Encrypting Card Details
        let myRequestString = "amount=\(AMOUNT)¤cy=\(CURRENCY)"
    
        let ccTool = CCTool()
    
        var encVal = ccTool .encryptRSA(myRequestString, key: rsaKey)
    
        let charset = NSCharacterSet(charactersInString: "!*'();:@&=+$,/?%#[]").invertedSet
        encVal = encVal.stringByAddingPercentEncodingWithAllowedCharacters(charset)
    
        //Preparing for a webview call
        let urlAsString = TRANS_URL
    
        let encryptedStr = "\(KEY_MERCHANT_ID)=\(MERCHANT_ID)&\(KEY_ORDER_ID)=\(ORDER_ID)&\(KEY_REDIRECT_URL)=\(REDIRECT_URL)&\(KEY_CANCEL_URL)=\(CANCEL_URL)&\(KEY_ENC_VAL)=\(encVal)&\(KEY_CC_ACCESS_CODE)=\(CC_ACCESS_CODE)&\(KEY_BILLING_NAME)=""&\(KEY_BILLING_ADDRESS)=""&\(KEY_BILLING_ZIP)=""&\(KEY_BILLING_CITY)=""&\(KEY_BILLING_STATE)=""&\(KEY_BILLING_COUNTRY)=""&\(KEY_BILLING_TEL)=""&\(KEY_BILLING_EMAIL)="""
    
        let myRequestData = encryptedStr.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
    
        let request = NSMutableURLRequest(URL: NSURL(string: urlAsString)!)
    
        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
    
        request.setValue("https://secure.ccavenue.com/", forHTTPHeaderField: "Referer")
    
        request.HTTPMethod = "POST"
    
        request.HTTPBody = myRequestData
    
        ccWebView .loadRequest(request)
    

    Method To get rsaKey :

        func getRsaKeyForCCAvenue() -> String {
    
        //Getting RSA Key
        let rsaKeyDataStr = "\(KEY_CC_ACCESS_CODE)=\(CC_ACCESS_CODE)&\(KEY_ORDER_ID)=\(ORDER_ID)"
    
        let requestData = rsaKeyDataStr.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
    
        let rsaRequest = NSMutableURLRequest(URL: NSURL(string: RSA_KEY_URL)!)
    
        rsaRequest .setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
    
        rsaRequest.HTTPMethod = "POST"
    
        rsaRequest.HTTPBody = requestData
    
        let rsaKeyData: NSData? = try? NSURLConnection.sendSynchronousRequest(rsaRequest, returningResponse: nil)
    
        var rsaKey =  NSString(data: rsaKeyData!, encoding: NSASCIIStringEncoding)
    
        let strNewRSA = rsaKey as! String
    
        let range: Range = strNewRSA.rangeOfString("<")!
        let index: Int = strNewRSA.startIndex.distanceTo(range.startIndex)
    
        rsaKey = strNewRSA.substringToIndex(range.startIndex)
    
        rsaKey = rsaKey?.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
    
        rsaKey = "-----BEGIN PUBLIC KEY-----\n\(rsaKey!)\n-----END PUBLIC KEY-----\n"
    
        return rsaKey as! String
    }
    

    Web View Delegate method to read the response :

        func webViewDidFinishLoad(webView: UIWebView) {
    
        let webString = webView.request?.URL?.absoluteString
        if (webString! as NSString).containsString("PaymentCCAvenue/ReturnAPI") {
    
            let html = webView .stringByEvaluatingJavaScriptFromString("document.documentElement.outerHTML")          
            if (html! as NSString).containsString("Success") {
            }
            else if (html! as NSString).containsString("Failure") {  
            }
            else {
            }
        }
    
    }
    

    Just check for the response strings from the back end developers to add conditions in webViewDidFinishLoad.

提交回复
热议问题