17 de Octubre de 2024
Si usted es un desarrollador de aplicaciones y desea agregar PayPal como opción de pago en su aplicación de Android, este es el artículo para usted. En esta guía paso a paso, lo guiaremos a través del proceso de Cómo integrar PayPal en Android aplicación de forma rápida y sencilla. Cubriremos todo, desde la creación de una cuenta PayPal hasta la configuración del botón de pago dentro de su aplicación. ¡Entonces empecemos!
¿Qué es PayPal?
PayPal es una empresa estadounidense fundada en 1998 que permite pagos y transferencias de dinero en línea. Una de las empresas de pagos en línea más grandes del mundo es PayPal. la empresa que procesa pagos para minoristas de Internet, sitios de subastas y otros usuarios comerciales. Acepta 26 monedas de 193 países diferentes.
SDK de Android de PayPal:
PayPal ofrece su SDK de Android para que los desarrolladores puedan integrar métodos de pago dentro de la aplicación para cualquier servicio que utilicen los usuarios o compras que realicen a través de su aplicación. Las aplicaciones móviles pueden aceptar fácilmente pagos mediante PayPal o tarjetas de crédito gracias al SDK de Android. Los fondos se acreditarán inmediatamente en su cuenta PayPal.
Lea también | Configurar el SDK de Android 14
Pasos de cómo integrar PayPal en Android
Paso 1:
Visite la página de desarrollador de PayPal y regístrese para crear una cuenta de PayPal.
El botón "Registrarse" iniciará el formulario de registro. Regístrese en línea completando el formulario. Recuerde que sólo son necesarias direcciones en Estados Unidos y códigos postales de cinco dígitos. Los campos de código de país y nombre de ciudad se completan automáticamente cuando ingresa un código postal válido para EE. UU.
Después de crear una cuenta de PayPal, haga clic en el botón "Iniciar sesión" en la esquina superior derecha del sitio web para desarrolladores de PayPal para iniciar sesión. Para crear una aplicación, vaya a la pestaña "Panel" después de iniciar sesión y haga clic en el botón "Crear aplicación". .
Haga clic en el botón "Crear aplicación" después de completar el formulario de creación de la aplicación. Generará su aplicación y, de forma predeterminada, una cuenta de desarrollador de Sandbox que no se puede modificar. Sin embargo, puedes crear otras cuentas para probar tu aplicación. Durante el período de desarrollo, su aplicación se probará utilizando esta cuenta. Se la conoce como cuenta de desarrollador sandbox porque se utiliza para realizar pruebas. Esta cuenta puede actualizarse a una cuenta de producción para usarla con aplicaciones activas en el futuro.
Cuando hace clic en el botón "Crear aplicación", se creará una aplicación con un "ID de cliente" y una clave "Secreta". Su aplicación de Android utilizará el "ID de cliente" para realizar transacciones y la clave "Secreta" para validarlas. Además, podrá solicitar el consentimiento del usuario antes de realizar futuras transacciones directas o acceder a cualquiera de los datos personales de su cuenta PayPal, incluida su dirección de correo electrónico o fecha de nacimiento.
En el menú "Mis aplicaciones", puede ver todos sus programas.
Paso 2:
Descargue el SDK de Android de PayPal alojado en Github.
Se debe descomprimir el archivo PayPal-Android-SDK-master.zip y el contenido de la carpeta lib se debe copiar y pegar en la carpeta lib de su proyecto de Android. Nota: Si su proyecto aún no tiene una carpeta lib, debe crear una. Si la tiene, simplemente pegue el contenido de la carpeta lib del SDK en la carpeta lib existente. Si la carpeta lib de su proyecto ya tiene “armeabi” y otros directorios similares, copie y pegue manualmente su contenido en las carpetas apropiadas en la carpeta lib de su proyecto.
Para comprender cómo se implementa el código, el SDK contiene una aplicación de Android de muestra. Ejecute el programa para ver su flujo de trabajo e intentar comprender su código. Está debidamente descrito en forma de comentarios para que cualquiera pueda comprenderlo.
Abra el archivo Android.manifest de su proyecto de Android ahora y agregue los siguientes elementos allí:
Paso 3:
Este SDK tiene tres escenarios de uso.
1. Pago Único:
2. Pagos futuros:
3. Compartir perfil
1. Pago Único:
Obtenga un pago instantáneo desde su aplicación utilizando una cuenta PayPal, una tarjeta de débito o una tarjeta de crédito.
Cuando inicia un pago único, el SDK muestra una interfaz de usuario (UI) para recopilar la información de su cuenta PayPal, la información de su tarjeta de crédito o la información de su tarjeta de débito, completar la transacción y proporcionar un comprobante de pago con una identificación de pago para que pueda confirmar. la transacción de pago. Podemos utilizar las API web de PayPal para la verificación de pagos configurando nuestro propio servidor.
El usuario tiene la opción de pagar con tarjeta de crédito o débito, PayPal o ambas.
Dentro de la actividad
1. Crear un Configuración de PayPal Objeto :
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
Configuración de PayPalConfiguration estática privada = nueva PayPalConfiguration()
// Comience con un entorno simulado. Cuando esté listo, cambie a Sandbox (ENVIRONMENT_SANDBOX)
// o en vivo (ENVIRONMENT_PRODUCTION)
.entorno(Configuración de PayPal.ENVIRONMENT_NO_NETWORK)
.Identificación del cliente(" ”);
[/código fuente]
2. Inicie PayPalService al comienzo de su acción y finalícelo cuando finalice:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
@Anular
protected void onCreate (Bundle SavedInstanceState) {
super.onCreate (SavedInstanceState);
setContentView (R.layout.activity_main);
Intención intención = nueva Intención (este, PayPalService.class);
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, configuración);
startService(intención);
}
@Anular
vacío público enDestroy() {
stopService(new Intent(this, PayPalService.class));
super.onDestroy();
}
[/código fuente]
3.Inicie la intención PaymentActivity y cree el objeto PayPalPayment, por ejemplo, cuando se presiona un botón:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
public void onBuyPressed (Ver presionado) {
// PAYMENT_INTENT_SALE hará que el pago se complete inmediatamente.
// Cambia PAYMENT_INTENT_SALE a
// – PAYMENT_INTENT_AUTHORIZE para autorizar solo el pago y capturar fondos más tarde.
// – PAYMENT_INTENT_ORDER para crear un pago por autorización y captura
// luego mediante llamadas desde su servidor.
Pago de PayPalPago = nuevo Pago de PayPal(nuevo BigDecimal(“1.75”), “USD”, “jeans hipster”,
Pago por PayPal.PAYMENT_INTENT_SALE);
Intención intención = nueva Intención (este, PaymentActivity.class);
// envía la misma configuración para reiniciar la resiliencia
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, configuración);
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, pago);
startActivityForResult(intención, 0);
}
[/código fuente]
4. Implementar onActivityResult():
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
@Anular
void protegido enActivityResult (int requestCode, int resultCode, datos de intención) {
if (códigoresultado == Actividad.RESULT_OK) {
Confirmación de confirmación de pago = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
si (confirmar! = nulo) {
tratar {
Log.i(“ejemplo de pago”, confirm.toJSONObject().toString(4));
// TODO: envía 'confirmar' a tu servidor para su verificación.
// ver https://developer.paypal.com/webapps/developer/docs/integration/mobile/verify-mobile-paid/
// para más detalles.
} captura (JSONException e) {
Log.e ("ejemplo de pago", "se produjo una falla extremadamente improbable:", e);
}
}
}
de lo contrario si (códigoresultado == Actividad.RESULT_CANCELED) {
Log.i(“ejemplo de pago”, “El usuario canceló.”);
}
else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
Log.i(“Ejemplo de pago”, “Se envió un pago o una configuración de PayPal no válidos. Consulte los documentos.”);
}
}
[/código fuente]
5. Envíe el recibo de pago a sus servidores para que puedan verificarlo y hacer todo lo necesario para finalizar su negocio.
2. Pagos futuros:
Esta sección explica cómo obtener el permiso expreso de un usuario para utilizar su cuenta PayPal para pagos futuros.
Antes de aceptar pagos de la cuenta PayPal de un cliente, debe obtener su permiso. Para aprovechar PayPal para pagos adicionales, el SDK de Android de PayPal proporciona una interfaz de usuario para que su usuario se autentique utilizando su cuenta de PayPal y otorgue el alcance del token de acceso (UI) de OAuth.
Como respuesta, se devuelve un código de autorización OAuth2 a su aplicación. Después de obtener el código de permiso para el acceso a OAuth2 y los tokens de actualización, su servidor lo intercambiará.
Se requerirá una identificación de metadatos del cliente más adelante, cuando comience un pago con consentimiento previo. El SDK de PayPal para Android proporciona un ID de metadatos del cliente. Envíe el ID de metadatos del cliente y los detalles de la transacción a su servidor. Su servidor utiliza su ID de metadatos del cliente, credenciales OAuth2 e información de transacción para crear un pago.
Dentro de su código de actividad
1. Crear un Configuración de PayPal objeto. Este objeto le permite personalizar una serie de funciones del SDK.
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
Configuración de PayPalConfiguration estática privada = nueva PayPalConfiguration()
// Comience con un entorno simulado. Cuando esté listo, cambie a Sandbox (ENVIRONMENT_SANDBOX)
// o en vivo (ENVIRONMENT_PRODUCTION)
.entorno(Configuración de PayPal.ENVIRONMENT_NO_NETWORK)
.Identificación del cliente(" ”)
// Deberá configurar al menos tres propiedades sobre el comerciante.
// Estos deben coincidir con la información que le diste a PayPal cuando registraste tu aplicación. .merchantName(“Tienda Hipster”)
.merchantPrivacyPolicyUri(Uri.parse(“https://www.example.com/privacy”))
.merchantUserAgreementUri(Uri.parse(“https://www.example.com/legal”));
[/código fuente]
2.Cuando se cree su actividad, inicie el Servicio PayPal y, cuando se destruya, finalícelo:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
@Anular
protected void onCreate (Bundle SavedInstanceState) {
super.onCreate (SavedInstanceState);
setContentView (R.layout.activity_main);
Intención intención = nueva Intención (este, PayPalService.class);
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, configuración);
startService(intención);
}
@Anular
vacío público enDestroy() {
stopService(new Intent(this, PayPalService.class));
super.onDestroy();
}
[/código fuente]
3. Por ejemplo, cuando se presiona un botón, se iniciará PayPalFuturePaymentActivity:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
public void onFuturePaymentPressed (Ver presionado) {
Intención intención = nueva Intención (SampleActivity.this, PayPalFuturePaymentActivity.class);
//Para reinicios confiables, envíe siempre la misma configuración.
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, configuración);
startActivityForResult(intención, REQUEST_CODE_FUTURE_PAYMENT);
}
[/código fuente]
4. Implementar onActivityResult():
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
@Anular
void protegido enActivityResult (int requestCode, int resultCode, datos de intención) {
if (códigoresultado == Actividad.RESULT_OK) {
Autenticación de autorización de PayPal = datos
.getParcelableExtra(PayPalFuturePaymentActivity.EXTRA_RESULT_AUTHORIZATION);
si (autenticación! = nulo) {
tratar {
Cadena código_autorización = auth.getAuthorizationCode();
enviarAutorizaciónAlServidor(autenticación);
} captura (JSONException e) {
Log.e(“FuturePaymentExample”, “se produjo una falla extremadamente improbable:”, e);
}
}
} más si (códigoresultado == Actividad.RESULT_CANCELED) {
Log.i(“FuturePaymentExample”, “El usuario canceló.”);
} más si (resultCode == PayPalFuturePaymentActivity.RESULT_EXTRAS_INVALID) {
Log.i(“Ejemplo de pago futuro”,
“Probablemente el intento de iniciar previamente el servicio PayPal tenía una configuración de PayPal no válida. Consulte los documentos.”);
}
}
[/código fuente]
5. Envíe a su servidor la respuesta de autorización para completar el proceso.
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
privado vacío sendAuthorizationToServer (autorización de PayPalAuthorization) {
// HACER:
// Envíe la respuesta de autorización a su servidor, donde se puede intercambiar el código de autorización.
// para acceso OAuth y tokens de actualización.
//
// Luego, estos tokens deben almacenarse en su servidor para que el código de su servidor pueda procesar los pagos.
// para este usuario en el futuro.
}
[/código fuente]
6.Obtenga una ID de metadatos del cliente:
Su aplicación móvil necesita un ID de metadatos del cliente del SDK móvil para entregárselo a su servidor al iniciar un pago con consentimiento previo (un "pago futuro") desde un dispositivo móvil. Este ID de metadatos del cliente debe estar incluido en la solicitud de pago de su servidor a PayPal. PayPal utiliza este ID de metadatos del cliente para verificar que el pago se origina desde una aplicación y dispositivo válido y autorizado por el usuario.
Ejemplo:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
public void onFuturePaymentPurchasePressed (Ver presionado) {
// Obtener el ID de metadatos del cliente del SDK
Cadena metadataId = PayPalConfiguration.getClientMetadataId(esto);
// TODO: envía el ID de metadatos y los detalles de la transacción a tu servidor para procesarlos
// Paypal…
}
[/código fuente]
Su servidor debe incluir un encabezado HTTP PayPal-Client-Metadata-Id con el valor de ID de metadatos del cliente obtenido del SDK cuando envía una solicitud de pago a PayPal.
Integración del lado del servidor de Future Payments:
Cuando un usuario otorga permiso a su aplicación para acceder a su cuenta PayPal, puede utilizar ese permiso para obtener tokens que le permitirán crear pagos futuros de ese usuario.
Para intercambiar el código de autorización para tokens OAuth2 y establecer pagos con un token de acceso y un ID de metadatos, consulte Integración del lado del servidor de Future Payments.
3. Compartir perfil:
Esta sección explica cómo obtener el acuerdo expreso de un usuario para compartir la información del perfil de su cuenta PayPal.
Cuando su cliente se conecta a PayPal y le da permiso a PayPal para compartir información con usted:
Para compartir información de la cuenta PayPal de un cliente, debe obtener su permiso.
Cómo funciona
- En el sitio para desarrolladores de PayPal...
1. Identifique los detalles que desea que sus clientes compartan con usted.
- El SDK de PayPal para Android...
1. Muestra la interfaz de usuario para permitir a los usuarios iniciar sesión con sus cuentas de PayPal.
2. Solicita la aprobación del token de acceso de OAuth al usuario antes de usar PayPal para compartir el perfil.
3. Proporciona a su aplicación un código de permiso OAuth2.
Tu aplicación...
1. Indica los alcances necesarios en la solicitud del SDK.
2. El SDK transmite el código de autorización OAuth2.
3. Haga clic en Opciones avanzadas después de seleccionar Iniciar sesión con PayPal en CAPACIDADES DE LA APLICACIÓN.
4. Luego, su servidor se comunica con PayPal para solicitar los datos pertinentes del cliente utilizando sus tokens OAuth2.
Indique la información que le gustaría compartir en el sitio para desarrolladores de PayPal:
1. Inicie sesión en Sitio para desarrolladores de PayPal.
2. Seleccione su aplicación.
3. En CAPACIDADES DE LA APLICACIÓN, seleccione Iniciar sesión con PayPal y haga clic en Opciones avanzadas.
4. En Información solicitada a los clientes, seleccione los elementos (“atributos de alcance”) que desea compartir.
5. Si proporciona las URL de la Política de privacidad y del Acuerdo de usuario en los Enlaces que se muestran en la página de consentimiento del cliente, estas anularán las URL correspondientes que proporcione a continuación en el objeto Configuración de PayPal.
Obtener el consentimiento del cliente
1. Cree un objeto de configuración de PayPal. Con este objeto, puede personalizar una serie de funciones del SDK, que incluyen:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
Configuración de PayPalConfiguration estática privada = nueva PayPalConfiguration()
// Comience con un entorno simulado. Cuando esté listo, cambie a Sandbox (ENVIRONMENT_SANDBOX)
// o en vivo (ENVIRONMENT_PRODUCTION)
.entorno(Configuración de PayPal.ENVIRONMENT_NO_NETWORK)
.Identificación del cliente(" ”)
// Debe establecer un mínimo de tres propiedades de información del comerciante.
// Estos deben coincidir con los datos que envió a PayPal cuando registró su solicitud.
.merchantName(“Tienda Hipster”)
.merchantPrivacyPolicyUri(Uri.parse(“https://www.example.com/privacy”))
.merchantUserAgreementUri(Uri.parse(“https://www.example.com/legal”));
[/código fuente]
2. Inicie PayPalService cuando se cree la actividad y finalícelo cuando se destruya la actividad:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
@Anular
protected void onCreate (Bundle SavedInstanceState) {
super.onCreate (SavedInstanceState);
setContentView (R.layout.activity_main);
Intención intención = nueva Intención (este, PayPalService.class);
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, configuración);
startService(intención);
}
@Anular
vacío público enDestroy() {
stopService(new Intent(this, PayPalService.class));
super.onDestroy();
}
[/código fuente]
3. Lanza el PayPalCompartir perfil actividad, por ejemplo, cuando se presiona un botón:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
public void onProfileSharingPressed (Ver presionado) {
Intención intención = nueva Intención (SampleActivity.this, PayPalProfileSharingActivity.class);
// transmitir la configuración idéntica para la resistencia al reinicio
intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, configuración);
intent.putExtra(PayPalProfileSharingActivity.EXTRA_REQUESTED_SCOPES, getOauthScopes());
startActivityForResult(intención, REQUEST_CODE_PROFILE_SHARING);
}
[/código fuente]
La PayPalOAuthScopes se inicializan utilizando una colección de nombres de ámbito:
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
privado PayPalOAuthScopes getOauthScopes() {
/* crea el conjunto de alcances requeridos
* Nota: consulte https://developer.paypal.com/docs/integration/direct/identity/attributes/ para ver el mapeo entre
* Los atributos que elige para esta aplicación en la interfaz de desarrollador de PayPal y los alcances requeridos se muestran aquí.
*/
Colocar alcances = nuevo HashSet (
Arrays.asList(PayPalOAuthScopes.PAYPAL_SCOPE_EMAIL, PayPalOAuthScopes.PAYPAL_SCOPE_ADDRESS));
devolver nuevos PayPalOAuthScopes(ámbitos);
}
[/código fuente]
4. Implementar onActivityResult():
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
@Anular
void protegido enActivityResult (int requestCode, int resultCode, datos de intención) {
if (códigoresultado == Actividad.RESULT_OK) {
Autenticación de autorización de PayPal = datos
.getParcelableExtra(PayPalProfileSharingActivity.EXTRA_RESULT_AUTHORIZATION);
si (autenticación! = nulo) {
tratar {
Cadena código_autorización = auth.getAuthorizationCode();
enviarAutorizaciónAlServidor(autenticación);
} captura (JSONException e) {
Log.e(“ProfileSharingExample”, “se produjo una falla extremadamente improbable:”, e);
}
}
} más si (códigoresultado == Actividad.RESULT_CANCELED) {
Log.i(“ProfileSharingExample”, “El usuario canceló.”);
} más si (resultCode == PayPalProfileSharingActivity.RESULT_EXTRAS_INVALID) {
Log.i(“Ejemplo de uso compartido de perfiles”,
“Lo más probable es que anteriormente se haya intentado iniciar el servicio PayPal con una configuración de PayPal incorrecta. Consulte los documentos.”);
}
}
[/código fuente]
5.El último paso requiere que transmita la respuesta de autorización a su servidor.
[lenguaje de código fuente =”java” wraplines =”falso” colapso =”falso”]
privado vacío sendAuthorizationToServer (autorización de PayPalAuthorization) {
// HACER:
// Para intercambiar el código de autorización, envíe la respuesta de autorización a su servidor.
// para acceso OAuth y tokens de actualización.
//
// Luego, su servidor necesita almacenar estos tokens para que el código de su servidor pueda usarlos.
// para obtener información sobre el perfil de un usuario en el futuro.
}
[/código fuente]
Integración del lado del servidor de perfil compartido:
Leer Integración del lado del servidor para compartir perfiles para intercambiar el código de autorización por tokens OAuth2 y recuperar la información del cliente de PayPal.
El entorno Sandbox:
PayPal proporciona un entorno de prueba, llamado Sandbox, mediante el cual un desarrollador puede simular transacciones para probar y depurar su aplicación.
Puede probar y depurar su aplicación sin hacer ninguna referencia a los usuarios reales de PayPal o sus cuentas activas de PayPal utilizando cuentas de prueba ficticias de Sandbox y las credenciales de autenticación relacionadas. Sandbox le permite operar su aplicación en un entorno seguro y le brinda una manera de ajustar sus rutinas de PayPal antes de pasar su producto a producción.
PayPal genera una transacción simulada que funciona exactamente como una transacción real cuando inicia una transacción utilizando cuentas de prueba Sandbox.
El entorno de PayPal Sandbox comprende lo siguiente:
- La Sitio de prueba de zona de pruebas (https://www.sandbox.paypal.com/)
- La Página de cuentas de Sandbox (se accede a través de https://developer.paypal.com)
Durante su fase de prueba, cree y administre su conjunto de cuentas de prueba desde Sandbox Página de cuentas. Utilice el sitio de prueba Sandbox para ver las transacciones relacionadas con las llamadas que realiza con sus cuentas de prueba. Inicie sesión en el sitio de prueba de Sandbox con las credenciales de cualquiera de sus cuentas de prueba para revisar el estado de las transacciones simuladas asociadas con esa cuenta.
Sitio de prueba de PayPal Sandbox:
Para acceder a la Prueba de zona de pruebas de PayPal sitio, inicie sesión utilizando una de sus cuentas personales. Por ejemplo, después de crear la cuenta personal "develope@gmail.com", me dirigieron a la página de detalles de la cuenta que se muestra a continuación después de iniciar sesión.
Va en directo
Comience a funcionar moviendo su aplicación al entorno de producción de PayPal una vez que haya terminado de desarrollarla y depurarla (incluidas las pruebas de cada llamada a la API de PayPal en Sandbox).
Tan pronto como haya terminado de llevar su aplicación a producción, también finalizará la integración del SDK de PayPal en su aplicación de Android.
+1 315 210 4488
+91 99888 06489