iOS PayUMoney SDK-ключ недействителен

У меня есть интегрированный платежный шлюз payumoney. И я могу создать правильный хэш с ключом, но в конце я получаю сообщение с предупреждением "ключ недействителен". В чем проблема?

Вот код Я использую ссылку " https://www.payumoney.com/payment-gateway-integration-guide.html", чтобы загрузить Payumoney SDK.

- (IBAction)startPaymentTapped:(id)sender {

    [self setPaymentParameters];

    //Start the payment flow
    PUMMainVController *paymentVC = [[PUMMainVController alloc] init];
    UINavigationController *paymentNavController = [[UINavigationController alloc] initWithRootViewController:paymentVC];

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

- (void)setPaymentParameters {
    self.params = [PUMRequestParams sharedParams];
    self.params.environment = PUMEnvironmentProduction;
    self.params.amount = self.amount.text;
    self.params.key = @"mykeyvalue";
    self.params.merchantid = @"merchantid";
    self.params.txnid = [self  getRandomString:2];
    self.params.surl = @"https://www.payumoney.com/mobileapp/payumoney/success.php";
    self.params.furl = @"https://www.payumoney.com/mobileapp/payumoney/failure.php";
    self.params.delegate = self;
    self.params.firstname = self.firstname.text;
    self.params.productinfo = self.productinfo.text;
    self.params.email = self.email.text;
    self.params.phone = @"";
    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 = @"";

    self.params.hashValue = [self getHash];

}

- (NSString *)getRandomString:(NSInteger)length {
    NSMutableString *returnString = [NSMutableString stringWithCapacity:length];
    NSString *numbers = @"0123456789";

    // First number cannot be 0
    [returnString appendFormat:@"%C", [numbers characterAtIndex:(arc4random() % ([numbers length]-1))+1]];

    for (int i = 1; i < length; i++) {
        [returnString appendFormat:@"%C", [numbers characterAtIndex:arc4random() % [numbers length]]];
    }
    return returnString;
}
- (NSString*)getHash {

    NSString *hashSequence = [NSString stringWithFormat:@"mykeyvalue|%@|%@|%@|%@|%@|||||||||||salt",self.params.txnid, self.params.amount, self.params.productinfo,self.params.firstname, self.params.email];

    NSString *rawHash = [[self createSHA512:hashSequence] description];
    NSString *hash = [[[rawHash stringByReplacingOccurrencesOfString:@"<" withString:@""]stringByReplacingOccurrencesOfString:@">" withString:@""]stringByReplacingOccurrencesOfString:@" " withString:@""];

    return hash;
}
- (NSData *) createSHA512:(NSString *)source {

    const char *s = [source cStringUsingEncoding:NSASCIIStringEncoding];
    NSData *keyData = [NSData dataWithBytes:s length:strlen(s)];
    uint8_t digest[CC_SHA512_DIGEST_LENGTH] = {0};
    CC_SHA512(keyData.bytes, (CC_LONG)keyData.length, digest);

    NSData *output = [NSData dataWithBytes:digest length:CC_SHA512_DIGEST_LENGTH];
    NSLog(@"out --------- %@",output);
    return output;
}

2 ответа

Решение

Пожалуйста, проверьте данные при отправке Payumoney для создания хеш-ключа с данными API сервера для создания вашего хеш-ключа.

self.params.environment = PUMEnvironmentProduction;

Through the above code you can pay using net banking successfully. If you want to test 
your payment gateway for dummy credit/debit card some changes are required. I am 
listing it down. Try it.

Instead of 
self.params.environment = PUMEnvironmentProduction; //write   
self.params.environment = PUMEnvironmentTest;

change the urls as
self.params.surl = @"https://test.payumoney.com/mobileapp/payumoney/success.php";
self.params.furl = @"https://test.payumoney.com/mobileapp/payumoney/failure.php";
// We need test url for testing purpose.

Make sure you have activated your payumoney account by clicking on link that you got in mail.
Use the below dummy master card details 

Test Card Name: any name
Test Card Number: 5123456789012346
Test CVV: 123
Test Expiry: May 2017
Другие вопросы по тегам