在iOS中实施自适应付款方面遇到困难,不幸的是PayPal的网站或响应文件很少.这是代码:
- (void)makePaymentSandBox{ NSError *error; //NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; //NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil]; NSURL *url = [NSURL URLWithString:@"https://svcs.sandBox.paypal.com/AdaptivePayments/Pay"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]; //setting [request setHTTPMethod:@"POST"]; //headers [request addValue:@"alex.rietmann-facilitator_api1.fastwebnet.it" forHTTPHeaderField:@"X-PAYPAL-SECURITY-USERID"]; [request addValue:@"FW79EZXPFP69NE8X" forHTTPHeaderField:@"X-PAYPAL-SECURITY-PASSWORD"]; [request addValue:@"ABSua9nnv9nnkoN4MwVt15YdgetaJHcyzqOHjkLbuM-bGRoI7WRS" forHTTPHeaderField:@"X-PAYPAL-SECURITY-SIGNATURE"]; //NV [request addValue:@"JSON" forHTTPHeaderField:@"X-PAYPAL-REQUEST-DATA-FORMAT"]; [request addValue:@"JSON" forHTTPHeaderField:@"X-PAYPAL-RESPONSE-DATA-FORMAT"]; [request addValue:@"APP-80W284485P519543T" forHTTPHeaderField:@"X-PAYPAL-APPLICATION-ID"]; [request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request addValue:@"en_US" forHTTPHeaderField:@"Accept-Language"]; //data /*NSString *userUpdate =[NSString stringWithFormat:@"clientDetails.applicationId=%@&actionType=%@",@"APP-80W284485P519543T",@"PAY",nil]; NSData *data1 = [userUpdate dataUsingEncoding:NSUTF8StringEncoding]; [request setHTTPBody:data1]; [request setValue: [NSString stringWithFormat:@"%lu",(unsigned long)[data1 length]] forHTTPHeaderField:@"Content-Length"];*/ NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys: @"PAY",@"actionType",@"USD",@"currencyCode",@"http:\\www.cleverlyapp.com",@"cancelUrl",@"returnUrl",@"ReturnAll",@"requestEnvelope.detailLevel",@"en_US",@"requestEnvelope.errorLanguage",@"seneder@email.com",@"senderEmail",@"0.1",@"receiverList.receiver(0).amount",@"a-buyer@fastwebnet.it",@"receiverList.receiver(0).email",@"receiverList.receiver(1).amount",@"a-facilitator@fastwebnet.it",@"receiverList.receiver(1).email",@"clientDetails.applicationId",nil]; NSData *postData = [NSJSONSerialization dataWithJSONObject:mapData options:0 error:&error]; [request setHTTPBody:postData]; [NSURLConnection connectionWithRequest:request delegate:self]; }
这是响应:
String: { error = ( { category = Application; domain = PLATFORM; errorId = 580001; message = "Invalid request: {0}"; severity = Error; subdomain = Application; } ); responseEnvelope = { ack = Failure; build = 17325060; correlationId = e82ede718b929; timestamp = "2015-07-14T09:50:06.222-07:00"; }; }
解决方法
请检查:
> Adaptive Payments Pay API Error 580001
> 580001 Invalid request: {0} PayPal (PHP)
> Error 580001
一些与编码有关,设置为JSON,但实际发送为URL编码等,其他与使用的货币和货币格式有关(例如发送的值不应包含货币符号等)