保持"在应用程序中"的唯一方法是给他们一个paypal移动网站的UIWebView并让他们在那里完成交易,否则用户需要使用他们的API密钥.
这听起来不错,有没有人有或看过任何示例代码?我不得不认为这是一段很常见的代码.
更新:Apple会允许吗?这是一个慈善机构的应用程序,所以我假设没有问题.
重新更新:我认为错了.Apple不允许使用paypal在应用内直接付款.您必须重定向到Web界面.
重新更新:如下所述,此代码对于购买实物商品可能仍然有用
更新:
虽然此代码有效,但App Store条款不允许您在应用程序中使用此代码.
原答案:
经过一些重要的API研究,我发现了这一点.下面是一个创建HTTP POST以发送到Paypal并进行NSURLRequest的方法.您可以填写适当的字符串格式变量.我使用HTTP Client检查我在做什么.
- (void)sendPayPalRequestPOST{ perfomingSetMobileCheckout=YES; recordResults = FALSE; NSString *parameterString = [NSString stringWithFormat:@"USER=%@&PWD=%@&SIGNATURE=%@&VERSION=57.0&METHOD=SetMobileCheckout&AMT=%.2f&CURRENCYCODE=USD&DESC=%@&RETURNURL=%@", userName, password, signature, self.donationAmount, @"Some Charge", returnCallURL]; NSLog(parameterString); NSURL *url = [NSURL URLWithString:paypalUrlNVP]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; NSString *msgLength = [NSString stringWithFormat:@"%d", [parameterString length]]; [theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; [theRequest setHTTPMethod:@"POST"]; [theRequest setHTTPBody: [parameterString dataUsingEncoding:NSUTF8StringEncoding]]; NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; if( theConnection ){ webData = [[NSMutableData data] retain]; [self displayConnectingView]; }else{ NSLog(@"theConnection is NULL"); } }
在此之后,您需要解析响应,获取会话密钥并创建UIWebView以将其带到移动paypal站点.Paypal允许您指定"返回URL",您可以随意制作任何内容.只需继续检查此地址的委托方法中的UIWebview,然后您就知道事务已完成.
然后您再向Paypal发送一个HTTP Post(类似于上面的那个)以完成交易.您可以在Paypal Mobile Checkout API文档中找到API信息.