Skip to content
Vipin Aggarwal edited this page Apr 3, 2017 · 11 revisions

Technical Integration

Drag and drop the ‘PayUmoney_SDK.framework’ into your project

In your target’s general settings, make sure you have entry ‘PayUmoney_SDK.framework’ in Embedded Binaries and ‘Linked Frameworks and Libraries’.

Import umbrella header file into the View Controller from where you to initiate the payment

    #import <PayUmoney_SDK/PayUmoney_SDK.h>

Please identify your checkout View Controller and add below property

    @property(nonatomic,strong) PUMRequestParams * params;

To start the payment process, you need to create an object of type ‘PUMRequestParams’

    self.params = [PUMRequestParams sharedParams];

Set the mandatory properties of ‘params’ object

    self.params.environment = PUMEnvironmentProduction;
    self.params.surl = @“https://www.payumoney.com/mobileapp/payumoney/success.php”
    self.params.furl = @“https://www.payumoney.com/mobileapp/payumoney/failure.php”
    self.params.amount = @"100";
    self.params.key = @"pass your own key here";
    self.params.merchantid = @"pass your unique id here";
    self.params.txnid =@"pass random transaction id each time";
    self.params.delegate = self;

Set below params as per your requirement

    self.params.firstname = @"Ashish";
    self.params.productinfo = @"iPhone";
    self.params.email = @"[email protected]";
    self.params.phone = @"9876543210";
    self.params.udf1 = @"";
    self.params.udf2 = @"";
    self.params.udf3 = @"";
    self.params.udf4 = @"";
    self.params.udf5 = @"";
    self.params.udf6 = @"";
    self.params.udf7 = @"";
    self.params.udf8 = @"";
    self.params.udf9 = @"";
    self.params.udf10 = @"";

get hash from your server self.params.hashValue = @“hash from server”; HASH CALCULATION

    hashSequence = key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5||||||salt.

Calculate the hash at your server side by using the above format of hash sequence. Encrypt it in SHA-512 and pass in params.hash.

Please Note – udf1 to udf5 are user-defined fields. These are meant to send any additional valuesthat you need to post. However, if you don’t feel the need to post any additional params, even then you will need post these params with blank values. Create a view controller of type PUMMainVController Create a UINavigationController with controller created in step 7 as root view controller Present the navigation controller created in step 8.

    PUMMainVController *paymentVC = [[PUMMainVController alloc] init];
    UINavigationController *paymentNavController = [[UINavigationController alloc]         initWithRootViewController:paymentVC];    

    [self presentViewController:paymentNavController
    animated:YES
    completion:nil];

PAYMENT COMPLETION

To know when the payment has completed, implement the following methods in your controller and get success/failure response:

    -(void)transactionCompletedWithResponse:(NSDictionary*)response
    errorDescription:(NSError* )error {    
    }
    -(void)transactinFailedWithResponse:(NSDictionary* )response
    errorDescription:(NSError* )error {
    }
    -(void)transactinExpiredWithResponse: (NSString *)msg {
    }
    -(void)transactinCanceledByUser {    
    }

USING SDK IN TEST MODE

For using SDK in test mode you need to follow the below mentioned steps.

    self.params.environment = PUMEnvironmentTest;

Send the SURL/FURL, MerchantId and key accordingly for test and live mode.

Important Note

Apple has started complaining if app contains simulator architectures during distribution. There is a quick fix to this issue. Be careful though as after doing following steps, you will not be able to run app on simulator. Do it just before deploying the app on Testflight/App-store

Go inside the PayUmoney_SDK.framework folder of your project from terminal. Run following commands:
lipo -remove i386 PayUmoney_SDK -o PayUmoney_SDK
lipo -remove x86_64 PayUmoney_SDK -o PayUmoney_SDK

Now the binary is thinned

We know the solution is not very elegant. We are making a script which should automate this process for merchants.

Clone this wiki locally