In my iOS app I need to check if a user's PayPal email address is valid. What is the easiest way of implementing this? Ive been looking at using the GetVerifiedStatus api and tried the following code:
NSDictionary *dict1 = [[NSDictionary alloc]initWithObjectsAndKeys:email, @"emailAddress", nil];
NSDictionary *postDict = [[NSDictionary alloc]initWithObjectsAndKeys: dict1,@"accountIdentifier",@"NONE",@"matchCriteria",
[[NSDictionary alloc] initWithObjectsAndKeys:@"en_US", @"errorLanguage", @"detailLevel", @"ReturnAll", nil], @"requestEnvelope", nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://svcs.sandbox.paypal.com/AdaptiveAccounts/GetVerifiedStatus"]] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
[request addValue:@"your_user_id" forHTTPHeaderField:@"X-PAYPAL-SECURITY-USERID"];
[request addValue:@"your_password" forHTTPHeaderField:@"X-PAYPAL-SECURITY-PASSWORD"];
[request addValue:@"your_signature" forHTTPHeaderField:@"X-PAYPAL-SECURITY-SIGNATURE"];
[request addValue:@"APP-80W284485P519543T" forHTTPHeaderField:@"X-PAYPAL-APPLICATION-ID"];
[request addValue:@"JSON" forHTTPHeaderField:@"X-PAYPAL-REQUEST-DATA-FORMAT"];
[request addValue:@"JSON" forHTTPHeaderField:@"X-PAYPAL-RESPONSE-DATA-FORMAT"];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"en_US" forHTTPHeaderField:@"Accept-Language"];
NSError *dError = nil;
NSData *postData = [NSJSONSerialization dataWithJSONObject:postDict options:0 error:&dError];
[request setHTTPBody:postData];
NSError *error = nil;
NSHTTPURLResponse *res = nil;
NSData *retData = [NSURLConnection sendSynchronousRequest:request returningResponse:&res error:&error];
if (error)
{
NSLog(@"Error getting paypal verification: %@", error);
}
else
{
NSError *jsonError = nil;
NSDictionary *details = [NSJSONSerialization JSONObjectWithData:retData options:kNilOptions error:&jsonError];
if (jsonError != nil) {
NSLog(@"Error parsing JSON %@", jsonError);
}
else {
NSLog(@"Paypal Verified: %@", details);
[self savePayPal];
}
}
But its not working correctly and I get the following response:
Paypal Verified: { error = ( { category = Application; domain = PLATFORM; errorId = 580023; message = "Cannot determine PayPal Account status"; severity = Error; subdomain = Application; } ); responseEnvelope = { ack = Failure; build = 21336090; correlationId = 96eea5ecc47fb; timestamp = "2016-04-26T13:41:52.437-07:00"; };
So does anyone know why I'm getting "Cannot determine PayPal Account status" and is this the best method for validating a PayPal email address?