Google adopta oficialmente la API de solicitud de pago, lo que le permite pagar con aplicaciones de terceros en Chrome

Google está adoptando oficialmente la API de solicitud de pago en Chrome, que se anunciará durante Google I/O, lo que le permitirá pagar con aplicaciones de terceros.

Listo para ser anunciado En la próxima conferencia de desarrolladores Google I/O, la API de solicitud de pago revolucionará la forma en que realizamos pagos en línea en nuestros dispositivos móviles. Los usuarios de Google Chrome en Android ya no tendrán que pasar por largos procesos de pago que implican ingresar la información de su tarjeta de crédito o iniciar sesión en PayPal. En cambio, la API permite a los desarrolladores de sitios web enviar intenciones a aplicaciones de pago de terceros compatibles para realizar un pago. A diferencia de muchos de los otras sorpresas que Google tiene reservado para nosotros, Ya hay un montón de información pública sobre cómo funcionará exactamente esta nueva forma de pago.. Nos hemos sumergido en todos estos documentos para brindarle información antes del anuncio oficial de Google esta semana.


Facilitar los pagos con la API de solicitud de pago

Primero recapitulemos cómo se manejan actualmente los pagos en los navegadores web. Cuando accede a la página de pago de cualquier comerciante en línea, se le solicita que ingrese su información de pago. Puede agregar una tarjeta de crédito respaldada por el comerciante o utilizar un servicio integrado como PayPal para completar su transacción. Ahora, a menos que ya haya guardado la información de su tarjeta de crédito en el sitio web (lo que muchas personas se resisten a hacer) o ya haya iniciado sesión Al ingresar a PayPal, puede ser complicado levantarse, ir a su billetera, encontrar su tarjeta y luego ingresar el número de la tarjeta, la fecha de vencimiento y los controles de seguridad. código. Cada vez que desee realizar una compra en un nuevo sitio web, deberá realizar alguna variación de este proceso. Para aquellos de nosotros que Me gusta buscar ofertas, esto puede resultar molesto con bastante rapidez.

Varias páginas de pago de comerciantes en línea

Muchas instituciones bancarias y de tarjetas de crédito tienen aplicaciones disponibles en Google Play Store. Dado que ya utilizamos estas aplicaciones para monitorear nuestras cuentas financieras, ¿por qué no podemos usarlas para autenticar pagos? Ese es exactamente el proceso de pensamiento detrás del Grupo de Trabajo de Pagos Web, formado por miembros como Google, Mozilla, Samsung, Alibaba, Microsoft y más. Este grupo ha estado trabajando detrás de escena para introducir una nueva API llamada API de solicitud de pago y un nuevo estándar en línea definido en la Propuesta de Manifiesto de Pago para facilitar la comunicación entre navegadores web y comerciantes en línea para que el comerciante en línea pueda utilizar aplicaciones existentes en el dispositivo de un usuario final para manejar pagos.

Cómo funciona

Para realizar esta tarea, los navegadores web debe admitir la API de solicitud de pago, los comerciantes en línea deben respaldar la API implementando lo que se llama una Identificador del método de pagoy aplicaciones de Android necesidad de implementar nuevos servicios. Sin entrar en demasiados detalles, explicaré brevemente lo que sucede durante el proceso de pago.

Suponiendo que su navegador web admita la API de solicitud de pago (más sobre esto más adelante), cuando navegue a la página de pago de un comerciante en línea tendrá la opción de pagar con uno de sus gestores de pago admitidos (tarjeta de crédito/PayPal/etc.) Cuando toca el botón para realizar una compra (como en la página de muestra a continuación utilizada por los empleados de Google para probar la API de solicitud de pago), luego la API de solicitud de pago envía una intención de Android a la aplicación de pago compatible para que esa aplicación autentique la cuenta del usuario. pago.

 Digamos que nuestra hipotética aplicación de tarjeta de crédito instalada en un hipotético dispositivo Android se llama Bob Pay. Bob Pay agregará lo siguiente a su archivo AndroidManifest.xml:

"font-weight: 400;"><manifestspan><spanstyle="font-weight: 400;">package=span><spanstyle="font-weight: 400;">"com.bobpay.app"span><spanstyle="font-weight: 400;">>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">".IsReadyToPayService"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: enabled=span><spanstyle="font-weight: 400;">"true"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: exported=span><spanstyle="font-weight: 400;">"true"span><spanstyle="font-weight: 400;">>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;"><intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.intent.action.IS_READY_TO_PAY"span><spanstyle="font-weight: 400;">/></span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">intent-filter>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">service>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">".PaymentActivity"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: exported=span><spanstyle="font-weight: 400;">"true"span><spanstyle="font-weight: 400;">>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;"><intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.intent.action.PAY"span><spanstyle="font-weight: 400;">/></span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.default_payment_method_name"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: value=span><spanstyle="font-weight: 400;">"https://bobpay.com/put/optional/path/here"span><spanstyle="font-weight: 400;">/>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">activity>span>
<spanstyle="font-weight: 400;">manifest>span>

Cuando se envía una intención dirigida a esta hipotética aplicación de tarjeta de crédito, se inicia el servicio de esta aplicación. Toda la información necesaria para que nuestra hipotética aplicación Bob Pay comprenda qué se está comprando, de qué proveedor y por cuánto dinero están contenidos en los extras del intent:

Bundle extras = new Bundle();
extras.putString("key", "value");
intent.putExtras(extras);

Una vez que Bob Pay haya validado el pago, la API de solicitud de pago recibe esta información en otro intent enviado por Bob Pay:

Intent result = new Intent();
Bundle extras = new Bundle();
extras.putString("key", "value");
result.putExtras(extras);
setResult(RESULT_OK, result); // Changeto RESULT_CANCELED on failure.
finish(); // Close the payment activity.

Pero, ¿cómo sabe el comerciante en línea que admite Bob Pay que el Bob Pay instalado en su teléfono es el Bob Pay real y no un malware destinado a cometer fraude? Lo logra creando un archivo JSON de identificador de manifiesto de método de pago que el navegador puede leer por máquina.

{
<span ><span >"span>name<span >"span>span><span >:span><span ><span >"span>BobPay - World's Greatest Payment Method<span >"span>span>,
<span ><span >"span>description<span >"span>span><span >:span><span ><span >"span>This payment method changes lives<span >"span>span>,
<span ><span >"span>short_name<span >"span>span><span >:span><span ><span >"span>BobPay<span >"span>span>,
<span ><span >"span>icons<span >"span>span><span >:span> [{
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/lowres.webp<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>64x64<span >"span>span>,
<span ><span >"span>type<span >"span>span><span >:span><span ><span >"span>image/webp<span >"span>span>
},{
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/lowres.png<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>64x64<span >"span>span>
}, {
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/hd_hi<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>128x128<span >"span>span>
}],
<span ><span >"span>serviceworker<span >"span>span><span >:span> {
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>payment-sw.js<span >"span>span>,
<span ><span >"span>scope<span >"span>span><span >:span><span ><span >"span>/pay<span >"span>span>,
<span ><span >"span>use_cache<span >"span>span><span >:span><span >falsespan>
}
<span ><span >"span>related_applications<span >"span>span><span >:span> [
{
<span ><span >"span>platform<span >"span>span><span >:span><span ><span >"span>play<span >"span>span>,
<span ><span >"span>url<span >"span>span><span >:span><span ><span >"span>https://play.google.com/store/apps/details? id=com.bobpay<span >"span>span>,
<span ><span >"span>fingerprints<span >"span>span><span >:span> [{
<span ><span >"span>type<span >"span>span><span >:span><span ><span >"span>sha256_cert<span >"span>span>,
<span ><span >"span>value<span >"span>span><span >:span><span ><span >"span>59:5C: 88:65:FF: C4:E8:20:CF: F7:3E: C8...<span >"span>span>
}], <span >//newspan>
<span ><span >"span>min_version<span >"span>span><span >:span><span ><span >"span>1<span >"span>span>, <span >// newspan>
<span ><span >"span>id<span >"span>span><span >:span><span ><span >"span>com.example.app1<span >"span>span>
}, {
<span ><span >"span>platform<span >"span>span><span >:span><span ><span >"span>itunes<span >"span>span>,
<span ><span >"span>url<span >"span>span><span >:span><span ><span >"span>https://itunes.apple.com/app/example-app1/id123456789<span >"span>span>,
}
]
}

Dentro de este archivo JSON hay una firma que se utiliza para verificar la integridad de la aplicación instalada en su dispositivo que dice ser la real Bob paga. Si esta verificación de firma falla, Bob Pay no será aceptado como manejador de pagos.

Por supuesto, estoy simplificando muchísimo, muchísimo, demasiado el proceso general involucrado aquí. Los pagos son un sistema increíblemente complejo que requiere múltiples capas de controles de seguridad para garantizar que solo se realicen pagos válidos. Los tres documentos a los que vinculé anteriormente describen cómo el navegador implementa completamente la API de solicitud de pago, cómo un El sitio web implementa el archivo de manifiesto JSON y cómo una aplicación de Android puede manejar la intención enviada por la solicitud de pago. API. Aquí hay un diagrama de flujo que describe el proceso general que resumí anteriormente:

Diagrama de flujo de pago. Fuente: Rouslan Solomakhin

Como puede ver, hay muchos pasos involucrados aquí. Todos estos cambios serán manejados por los desarrolladores de sitios web de comerciantes en línea, banca/crédito de Android aplicaciones de tarjetas y desarrolladores de navegadores web, por lo que es probable que el usuario final no tenga idea de lo que realmente está sucediendo aquí. Pero sepa que el resultado final es que sus pagos en línea serán mucho más simples si todas las partes involucradas implementar estos cambios, que gracias a los esfuerzos de estandarización del Grupo de Trabajo de Pagos Web se espera que se conviertan en realidad.


La historia detrás de la API de solicitud de pago

El World Wide Web Consortium (abreviado W3C) se fundó en 1994 con el fin de desarrollar plataformas estándares que permitirían que todos los sitios web y sus usuarios se beneficiaran de la intercompatibilidad y consistencia. Para abordar la creciente fragmentación de los pagos web, el W3C formó la Grupo de Trabajo de Pagos Web en 2015 con el fin de estandarizar algunos aspectos del flujo de pagos en línea. A partir de entonces, todos los miembros del Grupo de Trabajo de Pagos Web comenzaron a trabajar para encontrar formas de mejorar la forma en que funcionan los sistemas de pago en línea existentes.

El grupo propuso el API de solicitud de pago, una colección de métodos que permiten a los sitios web utilizar métodos de pago sin integrar el método de pago en su sitio. Los navegadores web deben actualizarse para admitir la API., pero la parte más difícil surge de Involucrar a los comerciantes en línea. Con ese fin, los miembros del Grupo de Trabajo se le ocurrió una propuesta sobre cómo los sitios web pueden crear identificadores para definir qué métodos de pago admiten. Esto implica crear un archivo JSON de manifiesto de pago que sea legible por máquina (el identificador del método de pago); debe ser leído por el navegador para que el La API de solicitud de pago puede identificar si el usuario tiene una o más de las aplicaciones correspondientes a los métodos de pago admitidos identificados en el JSON. archivo. Esta implementación está inspirada en Google Protocolo de enlaces de activos digitales Así es como los sitios web te redireccionan desde su sitio móvil a su aplicación si ya la tienes instalada.

Después de muchas idas y venidas internas por parte del grupo, finalmente el 25 de noviembre de 2016, Zach Koch de Google y Dapeng Liu de Alibaba presentaron un borrador inicial del Manifiesto de Medios de Pago para iniciar el proceso de estandarización de Identificadores de Métodos de Pago que todos los miembros puedan aceptar. Finalmente, los miembros del Grupo de Trabajo se reunió en persona en Chicago entre el 23 y 24 de marzo para analizar la API de solicitud de pago, la propuesta de manifiesto de pago y más. El grupo de trabajo votó para adoptar formalmente una nueva versión de la Propuesta de Manifiesto de Pago (versión 2), que es donde nos encontramos hoy.


Soporte para la API de solicitud de pago

El 10 de mayo, ya es compatible con aplicaciones de pago de Android de terceros. habilitado por defecto en Chromium desde que se aprobó el requisito previo del manifiesto de pago web en la rama de Blink-Dev (Blink es el nombre del motor de renderizado utilizado por Chrome). Tenga en cuenta que esta característica ha estado en prueba en Chrome durante meses, pero solo recientemente parece que el grupo está listo para seguir adelante con esto. Esta característica se enviará en todas las plataformas/versiones de Chromium excepto Android Webview (que no tiene una interfaz de usuario y, por lo tanto, no puede implementar la API de solicitud de pago).

Sólo después de meses de trabajo detrás de escena, veremos los beneficios de lo que el Grupo de Trabajo de Pagos Web ha estado trabajando. En Google I/O, es probable que la compañía anuncie que Google Chrome se enviará con la API de solicitud de pago habilitada, y Zach Koch mencionó anteriormente dará su charla el jueves sobre cómo los proveedores de pagos externos pueden respaldar la API mediante la creación del manifiesto de pago JSON. archivos.

Otros navegadores también están trabajando para agregar soporte para la API de solicitud de pago. Mozilla y Samsung han expresado su apoyo público para agregar la API, aunque según Googler Rouslan Solomakhin Aún no se sabe si el navegador Edge de Microsoft o Safari de Apple agregarán soporte. Debemos tener en cuenta que Microsoft es ya estoy probando la API de solicitud de pago para aplicaciones de la Plataforma universal de Windows (UWP) y en al menos un banco ya ha implementado el soporte (Monzo) en su aplicación.

En cuanto a otros comerciantes en línea y aplicaciones de Android que admitirán esta nueva especificación de pago, según el Googler Zach Koch:

El número de "proveedores de métodos de pago" que necesitarían implementar esta especificación es bastante pequeño. (cientos), y en este momento solo estamos trabajando directamente con un subconjunto muy pequeño de ellos (<5) para probar las aguas. Si nos encontráramos en una situación en la que necesitáramos cambiar uno de los campos, creo que podríamos hacerlo fácilmente y sin mucho (si es que hay alguno) riesgo de interoperabilidad. Todos nuestros primeros socios son conscientes de que esta especificación puede cambiar y están de acuerdo con ello.

Implementar esto es fundamental para permitir que otros jugadores participen en el ecosistema de relaciones públicas, al menos en Android. Realmente preferiría no seguir el camino propietario completo para habilitar aplicaciones nativas de Android. Hemos mantenido la huella en esto intencionalmente pequeña para dejar espacio para el crecimiento y casos de uso más avanzados.

Por lo tanto, podemos ver que, aunque Google es pionero en el soporte para la API de solicitud de pago, Pasará algún tiempo antes de que realmente veamos que esta nueva forma de pagar llegue a todos los navegadores., todos los comerciantes en línea y todas las aplicaciones. Personalmente, estoy muy emocionado de ver que Google admite la API de solicitud de pago. El ecosistema de comercio electrónico ha estado innecesariamente fragmentado con métodos de pago durante años, y si esta nueva API lo hará significa que nunca más tendré que ingresar la información de mi tarjeta de crédito manualmente en un sitio web, entonces estoy totalmente a favor él.


¿Qué opinas de este próximo estándar? ¡Habla en los comentarios y déjanos saber tu opinión!