Re-Update: Jak odpowiedział poniżej tego kodu mogą nadal być przydatne do zakupu dóbr fizycznych
Aktualizacja:
Chociaż ten kod działa, warunki App Store nie pozwoli ci używać tego kodu w aplikacji.
Original Odpowiedź:
I zdobione to po jakimś ciężkim badań API. Poniżej znajduje się metoda, która tworzy HTTP POST do wysłania do Paypal i tworzy NSURLRequest. Możesz wpisać odpowiednie zmienne formatu ciągu. Użyłem HTTP Client, aby sprawdzić, co robiłem.
- (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");
}
}
Po tym trzeba przeanalizować odpowiedź, chwyć klucz sesyjny i stworzyć UIWebView wziąć je do mobilnego serwisu PayPal. Paypal pozwala ci określić "zwrotny URL", który możesz zrobić, co chcesz. Po prostu sprawdzaj UIWebview w metodzie delegata dla tego adresu, a następnie wiesz, że transakcja jest zakończona.
Następnie wysyłasz jeszcze jeden wpis HTTP (podobny do powyższego) do Paypal, aby sfinalizować transakcję. Informacje API można znaleźć w dokumentach API Paypal Mobile Checkout.
Czy to oznacza, że nie można kupować towarów w ramach aplikacji? Czy masz na myśli, że należy otworzyć Safari, aby ukończyć transakcję, czy może to zrobić w UIWebView? – ustun
zgodnie z odpowiedzią poniżej, może to być dobre dla towarów fizycznych. Otwarcie safari jest oczywiście zawsze możliwe. Jeśli korzystasz z paypal API, wystarczy otworzyć WebView, aby "ukończyć" tansaction. Cała reszta może być natywna. –
MUSISZ używać w zakupach aplikacji tylko do towarów wirtualnych. NIE MOŻNA używać w zakupach aplikacji do towarów rzeczywistych. Możesz jednak użyć zewnętrznej metody (np. PayPal lub Stripe) dla towarów rzeczywistych. – jsherk