Con Amazon Pay para Alexa Skills, puedes vender productos físicos y servicios (como entradas para películas o conciertos, servicios de recogida de coches, comida y mucho más). Puedes llegar a clientes de todo el mundo a través de una interacción tan natural como la voz, potenciada por un sencillo flujo de proceso de pago gestionado por Amazon Pay.

Los desarrolladores ya usan Amazon Pay para ofrecer una gran variedad de productos reales por voz. Por ejemplo, la compañía de ferrocarril británica, Virgin Trains, puede vender billetes de tren a los clientes directamente desde su dispositivo compatible con Alexa.

Después de desarrollar una experiencia de voz atractiva, estás listo para aprender más sobre cómo ganar dinero con tu skill de Alexa usando Amazon Pay para Alexa Skills. Esta publicación te mostrará cómo añadir Amazon Pay a tu skill en solo unos pocos pasos. Antes de empezar, inscríbete como vendedor en Amazon Pay. Consulta cómo hacerlo en nuestra guía.

La API de Amazon Pay para Alexa Skills solo consta de dos operaciones: Setup y Charge. A continuación, te explicaremos en qué consisten los dos.

Setup

En la operación Setup se crea un acuerdo entre tu cuenta de vendedor y el comprador, llamado BillingAgreement (Acuerdo de facturación), que se utiliza para cobrar al cliente en un paso posterior. Amazon Pay usa Alexa Skill Connections (conexiones de skills de Alexa) para que tus skills interaccionen con los servicios de Amazon Pay. Para iniciar la creación de un acuerdo, creamos una Connections directive (Directiva de conexiones) correspondiente para llamar a la operación de configuración.

let setupDirective = {
    'type': 'Connections.SendRequest',
    'name': 'Setup',
    'payload': {
        '@type': 'SetupAmazonPayRequest',
        '@version': '2',
        'sellerId': 'AEMGQXXXKD154',
        'countryOfEstablishment': 'US',
        'ledgerCurrency': 'USD',
        'checkoutLanguage': 'en-US',
        'needAmazonShippingAddress': true,
        'billingAgreementAttributes': {
            '@type': 'BillingAgreementAttributes',
            '@version': '2',
            'sellerNote': 'Gracias por afeitarte con No Nicks',
            'sellerBillingAgreementAttributes': {
                '@type': 'SellerBillingAgreementAttributes',
                '@version': '2'
            }
        }
    },
    'token': 'IK1yRWd8VWfF'
};

 

Primero, definimos la directiva Connections.SendRequest para la operación de Setup de Amazon Pay. La carga (payload) dentro de la directiva define toda la información correspondiente de Amazon Pay. Las más esenciales son sellerId, que define quién está iniciando el cobro, el countryOfEstablishment y ledgerCurrency, que definen cómo cobrar al cliente. Para ver definiciones de los demás campos, consulta nuestra guía completa, para la que tienes un enlace en los recursos.

Observarás que todavía no hemos definido cuánto se va a cobrar. Esto está sujeto a la operación Charge, si cobras dentro de tu skill, o cualquier otro servicio usando nuestras API de backend, estás cobrando «offline».

Añadir la directiva a tu respuesta es bastante fácil:

 return handlerInput.responseBuilder
            .addDirective(setupDirective)
            .withShouldEndSession(true)
            .getResponse();

Nota: El motivo por el que terminamos la sesión es porque la Connection.Request cerrará la sesión de tu skill y la llamará de nuevo con una Connections.Response. Si no finalizas tu sesión o añades una nueva instrucción, se producirá un error.

Para capturar la respuesta, simplemente define un puntero para la solicitud Connections.Response

canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === "Connections.Response"
    && handlerInput.requestEnvelope.request.name === "Setup";
}

La carga (payload) de la respuesta contendrá el billingAgreementId necesario para cobrar al cliente.

Charge

Amazon Pay puede ayudarte con numerosos casos de uso. Los clasificamos según los flujos de trabajo, Charge Now (cobrar ahora) y Charge Later (Cobrar luego). 

Charge Now te permite vender productos físicos (por ejemplo, billetes, ropa, etc.) y cobrar al comprador mientras están interaccionando con tu skill. Es la solución perfecta para los que compran una vez cuando sabes exactamente el importe que cobrar. El kit de inicio en la demostración «No Nicks» es un ejemplo del tipo Charge Now.

Charge Later te permite configurar un BillingAgreement que representa las preferencias de pago y la dirección de entrega del comprador, si están disponibles, y usa este acuerdo para cobrar al cliente posteriormente a través de las API de backend de Amazon Pay. Es la solución perfecta cuando todavía no sabes exactamente el total del pedido. Por ejemplo, para oportunidades de upsell, casos de pago por uso o suscripciones, donde se cobrará al comprador en intervalos regulares.

En el flujo del tipo chargeNow, puedes ejecutar igualmente una solicitud de charge usando el billingAgreementId recibido en la respuesta de setup.

const billingAgreementId = responsePayload.billingAgreementDetails.billingAgreementId;
let directiveObject = {
    'type': 'Connections.SendRequest',
    'name': 'Charge',
    'payload': {
        '@type': 'ChargeAmazonPayRequest',
        '@version': '2',
        'sellerId': 'AEMGQXXXKD154',
        'billingAgreementId': billingAgreementId,
        'paymentAction': 'AuthorizeAndCapture',
        'authorizeAttributes': {
            '@type': 'AuthorizeAttributes',
            '@version': '2',
            'authorizationReferenceId': 'ml3qPJG3nC6c65UE',
            'authorizationAmount': {
                '@type': 'Price',
                '@version': '2',
                'amount': '9',
                'currencyCode': 'USD'
            },
            'transactionTimeout': 0,
            'sellerAuthorizationNote': '',
            'softDescriptor': 'No Nicks'
        },
        'sellerOrderAttributes': {
            '@type': 'SellerOrderAttributes',
            '@version': '2',
            'storeName': 'No Nicks',
            'sellerNote': 'Gracias por afeitarte con No Nicks'
        }
    },
    'token': 'WASv2lk4pdfI'
}

La operación charge requiere que por lo menos especifiques el importe total y la moneda que solicitar del cliente. Para ver más información, consulta la guía completa en el apartado de recursos, más adelante.

Igual que con la fase setup, añadiremos la directiva a responseBuilder al preparar la respuesta.

 return handlerInput.responseBuilder
            .addDirective(directiveObject)
            .withShouldEndSession(true)
            .getResponse();

De nuevo, define un puntero para la solicitud Connections.Response

canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === "Connections.Response"
    && handlerInput.requestEnvelope.request.name === "Charge";
}

La respuesta de la solicitud de conexiones te dirá si el cobro ha tenido éxito o si hubo algún problema para recolectar los pagos.

Tras una compra satisfactoria, deberías enviar una tarjeta a la aplicación Alexa del cliente a modo de confirmación del pedido, donde se incluyan los detalles del pedido.

var confirmationCardResponse = 'Tu pedido ha sido procesado.\n' +
                                                            'Productos: 1 kit de inicio\n' +
                                                            'Importe total: 9,00 USD\n' + 
                                                            'Gracias por afeitarte con No Nicks\n' +
                                                            'www.nonicks.com' 
return handlerInput.responseBuilder
                                                            .speak( config.confirmationIntentResponse )
                                                            .withStandardCard( 'Order Confirmation Details', 
                                                              confirmationCardResponse, config.logoURL )
                                                            .withShouldEndSession( true )
                                                            .getResponse( );

Con unos pocos pasos, puedes recolectar pagos de productos físicos o servicios en una skill de Alexa.

Empieza hoy mismo a integrar Amazon Pay en tu skill de Alexa y súmate a la lista cada vez mayor de vendedores que priorizan la voz. Estamos deseando ver lo que vas a desarrollar.

Recursos