Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
179 views
in Technique[技术] by (71.8m points)

ios - How to integrate PayU Money in swift

I'm new on swift Can any one help me to Integrate PayU Money in swift.... I am using this sdk: https://github.com/payu-intrepos/Documentations/wiki/8.1-NEW-iOS-Seamless-SDK-integration

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This answer is taken from PayU documentation itself, i am answering here just because it took me hours to implement with their documentation.

Hi i can guide you with NON seamless integration. https://github.com/payu-intrepos/Documentations/wiki/8.-iOS-SDK-integration#nonseamless

In non seamless integration PayU is already providing UI and will handle the card type and all payment process and at the end you will be notified for the status of your transaction with reason if failed and all details.

Download the SDK from Here:https://github.com/payu-intrepos/iOS-SDK-Sample-App/archive/3.8.1.zip

From Sample code copy file from "BusinessLayer" folder.

So i hope you have all required files now we can go further with integration.

You are integrating PayU with swift, as there is no swift SDK is not present from PayU team we have to proceed with Briding to Objective-C . You can find about this here:How to call Objective-C code from Swift

Once header file is created and configured in build setting, import the following Headers of SDK

#import "PayU_iOS_CoreSDK.h"
#import <CommonCrypto/CommonHMAC.h>
#import "PUUIPaymentOptionVC.h"
#import "PUSAWSManager.h"
#import "PUSAWSManager.h"
#import "PUSAHelperClass.h"

Now we are ready to use PayU SDK into our environment/project.

Create new instance of 3 main object used for payment 1)Payment parameters 2)Hash Values 2)Helperclass// to calculate hash value

paste this above your viewDidLoad()

let paymentParam: PayUModelPaymentParams  = PayUModelPaymentParams()
var hashes :PayUModelHashes  = PayUModelHashes()
let PUSAhelper:PUSAHelperClass = PUSAHelperClass()

Here is function i have created for further processing

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 = "[email protected]"
        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)")
            }
        }
    }

There are some My custom function that will through error at your side you copy paste, i am mentioning them here. Do take care of them

1)loadVC("PUUIMainStoryBoard", strVCId: VC_IDENTIFIER_PAYMENT_OPTION) //Loadvc function i have created to load view controller, you have to change it as you call your view controller

2)runOnMainThread({ // This function is for running code on main thread.

I have used all test credentials provided by PayU team you can find more in their doc :https://www.payumoney.com/pdf/PayUMoney-Technical-Integration-Document.pdf

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.paymentResponseReceived(_:)), name: kPUUINotiPaymentResponse, object: nil)

//With this line we are adding notification sent by payment gateway to notify us regarding the status of the payment process, lets cash the notification.

func paymentResponseReceived(notify:NSNotification) {
print(notify)
}

You will get the response in notify.object. You can find more sophisticated language and way at their document:https://github.com/payu-intrepos/Documentations/wiki/8.-iOS-SDK-integration.

Hope this answer may help you.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...