我已经整合了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;
}
答案 0 :(得分:1)
请在使用服务器api数据发送创建哈希密钥的payumoney时检查数据,以便创建哈希密钥。
答案 1 :(得分:0)
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