Re: Actualización: Como contestado por debajo de este código todavía puede ser útil para la compra de bienes físicos
Actualización:
Aunque este código funciona, términos App Store no permitirá para usar este código dentro de una aplicación.
respuesta original:
me cuenta de esto después de algunas investigaciones API pesada. A continuación se muestra un método que crea un HTTP POST para enviar a Paypal y realiza una solicitud de NSURL. Puede completar las variables de formato de cadena apropiadas. Usé HTTP Client para verificar lo que estaba haciendo.
- (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");
}
}
Después de ello, tiene que analizar la respuesta, agarrar la clave de sesión y crear un UIWebView para llevarlos al sitio de PayPal móvil. Paypal te permite especificar una "URL de retorno" en la que puedes hacer lo que quieras. Simplemente siga revisando UIWebview en el método delegado para esta dirección y luego sabrá que la transacción está completa.
Luego, envía una publicación HTTP más (similar a la anterior) a Paypal para finalizar la transacción. Puede encontrar la información de la API en los documentos de la API de Paypal Mobile Checkout.
¿Significa esto que no es posible comprar bienes del mundo real dentro de una aplicación? ¿Quiere decir que uno debe abrir Safari para completar la transacción, o se puede hacer en un UIWebView? – ustun
de acuerdo con una respuesta a continuación, esto puede estar bien para bienes físicos. El safari de apertura es, por supuesto, siempre posible. Si usa la API de paypal, solo necesita abrir WebView para "completar" la tansaction. Todo lo demás puede ser nativo. –
DEBE usar en compras de aplicaciones solo para bienes virtuales. NO puede utilizar en compras de aplicaciones para bienes del mundo real. Sin embargo, puede usar un método externo (como PayPal o Stripe) para bienes del mundo real. – jsherk