ios 发生 Payumoney 网关错误
Payumoney getway error occur in ios
我已经集成了 payumoney 支付通道。但是我在 webView 中遇到错误,无法加载此 https://test.payu.in/_payment 测试 url.
我的代码:
int i = arc4random() % 9999999999;
NSString *strHash = [self createSHA512:[NSString stringWithFormat:@"%d%@",i,[NSDate date]]];
NSString *txnid1 = [strHash substringToIndex:20];
NSLog(@"tnx1 id %@",txnid1);
NSString *key = @"xxxxx"; // my key
NSString* salt = @"xxxxxx"; // my salt key
NSString *amount = @"1.00";
NSString *productInfo = @"Nice product";
NSString *firstname = @"Mani";
NSString *email = @"mani.ingenius@gmail.com";
NSString *phone = @"1234566";
NSString *surl = @"http://www.google.com/";
NSString *furl = @"http://www.github.in/";
NSString *serviceprovider = @"payu_paisa";
NSString *hashValue = [NSString stringWithFormat:@"%@|%@|%@|%@|%@|%@|||||||||||%@",key,txnid1,amount,productInfo,firstname,email,salt];
NSString *hash = [self createSHA512:hashValue];
NSDictionary *parameters = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:txnid1,key,amount,productInfo,firstname,email,phone,surl,furl,hash,serviceprovider
, nil] forKeys:[NSArray arrayWithObjects:@"txnid",@"key",@"amount",@"productinfo",@"firstname",@"email",@"phone",@"surl",@"furl",@"hash",@"service_provider", nil]];
__block NSString *post = @"";
[parameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([post isEqualToString:@""]) {
post = [NSString stringWithFormat:@"%@=%@",key,obj];
}else{
post = [NSString stringWithFormat:@"%@&%@=%@",post,key,obj];
}
}];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://test.payu.in/_payment"]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
[request setHTTPBody:postData];
[web_view_PayU loadRequest:request];
我已经参考了这个 link 。我已经正确传递了所有参数。我不明白我错了什么。
我通过以下路径获取我的商家和盐密钥
Seller Dashboard -> Settings -> My account -> Merchant Key - Salt
对于测试代码,使用这些键:
NSString *key = @"JBZaLc";
NSString* salt = @"GQs7yium";
还有你的 Url
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://test.payu.in/_payment"]]];
注意:对于实时使用,请将 KEY 和 SALT 值替换为您自己的值。
& setURL
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@" https://secure.payu.in/_payment"]]];
NSString *serviceprovider = @"";
将服务提供商字段留空。
应该可以。
我在上面找到了我的问题解决方案。我没有在 forHTTPHeaderField
字段值中传递 "charset=utf-8"。
在url请求中通过这种方式传递参数。
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Current-Type"];
没有 "charset=utf-8" 的旧版本工作正常但最新代码在 url.
中添加 "charset=utf-8"
我已经集成了 payumoney 支付通道。但是我在 webView 中遇到错误,无法加载此 https://test.payu.in/_payment 测试 url.
我的代码:
int i = arc4random() % 9999999999;
NSString *strHash = [self createSHA512:[NSString stringWithFormat:@"%d%@",i,[NSDate date]]];
NSString *txnid1 = [strHash substringToIndex:20];
NSLog(@"tnx1 id %@",txnid1);
NSString *key = @"xxxxx"; // my key
NSString* salt = @"xxxxxx"; // my salt key
NSString *amount = @"1.00";
NSString *productInfo = @"Nice product";
NSString *firstname = @"Mani";
NSString *email = @"mani.ingenius@gmail.com";
NSString *phone = @"1234566";
NSString *surl = @"http://www.google.com/";
NSString *furl = @"http://www.github.in/";
NSString *serviceprovider = @"payu_paisa";
NSString *hashValue = [NSString stringWithFormat:@"%@|%@|%@|%@|%@|%@|||||||||||%@",key,txnid1,amount,productInfo,firstname,email,salt];
NSString *hash = [self createSHA512:hashValue];
NSDictionary *parameters = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:txnid1,key,amount,productInfo,firstname,email,phone,surl,furl,hash,serviceprovider
, nil] forKeys:[NSArray arrayWithObjects:@"txnid",@"key",@"amount",@"productinfo",@"firstname",@"email",@"phone",@"surl",@"furl",@"hash",@"service_provider", nil]];
__block NSString *post = @"";
[parameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([post isEqualToString:@""]) {
post = [NSString stringWithFormat:@"%@=%@",key,obj];
}else{
post = [NSString stringWithFormat:@"%@&%@=%@",post,key,obj];
}
}];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://test.payu.in/_payment"]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
[request setHTTPBody:postData];
[web_view_PayU loadRequest:request];
我已经参考了这个 link
我通过以下路径获取我的商家和盐密钥
Seller Dashboard -> Settings -> My account -> Merchant Key - Salt
对于测试代码,使用这些键:
NSString *key = @"JBZaLc";
NSString* salt = @"GQs7yium";
还有你的 Url
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://test.payu.in/_payment"]]];
注意:对于实时使用,请将 KEY 和 SALT 值替换为您自己的值。 & setURL
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@" https://secure.payu.in/_payment"]]];
NSString *serviceprovider = @"";
将服务提供商字段留空。 应该可以。
我在上面找到了我的问题解决方案。我没有在 forHTTPHeaderField
字段值中传递 "charset=utf-8"。
在url请求中通过这种方式传递参数。
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Current-Type"];
没有 "charset=utf-8" 的旧版本工作正常但最新代码在 url.
中添加 "charset=utf-8"