Con Amazon Pay per Alexa Skills puoi vendere beni e servizi reali, come biglietti per film o concerti, servizi di ritiro di auto, alimenti e altro. Puoi raggiungere clienti in tutto il mondo con un’interazione naturale come quella vocale, supportata da un flusso immediato di elaborazione dei pagamenti gestito da Amazon Pay.

Gli sviluppatori utilizzano già Amazon Pay per offrire diversi prodotti reali attraverso la voce. Ad esempio, l’operatore ferroviario britannico Virgin Trains vende biglietti ai clienti direttamente tramite il loro dispositivo che supporta Alexa.

Dopo aver creato un’esperienza vocale coinvolgente, puoi passare a ulteriori informazioni sulla monetizzazione della tua competenza di Alexa utilizzando Amazon Pay per Alexa Skills. Questo articolo spiega come aggiungere Amazon Pay alla tua skill in pochi semplici passaggi. Prima di iniziare, registrati come venditore in Amazon Pay. Trovi ulteriori informazioni nella nostra guida.

Le API Amazon Pay per Alexa Skills richiedono due sole operazioni: Setup e Charge. Sono spiegate nei dettagli qui di seguito.

Setup

Durante la fase di Setup viene preparato un contratto tra il tuo account di venditore e l’acquirente, denominato BillingAgreement, che verrà utilizzato per gli addebiti al cliente in una fase successiva. Amazon Pay utilizza Alexa Skill Connections per consentire l’interazione tra le tue skill e i servizi di Amazon Pay. Per avviare la preparazione del contratto, creiamo una direttiva chiamata Connections corrispondente, per richiamare l’operazione di configurazione.

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': 'Grazie per aver scelto No Nicks',
            'sellerBillingAgreementAttributes': {
                '@type': 'SellerBillingAgreementAttributes',
                '@version': '2'
            }
        }
    },
    'token': 'IK1yRWd8VWfF'
};

 

Innanzitutto definiamo la direttiva Connections.SendRequest per l’operazione Setup di Amazon Pay. Il parametro del payload all’interno della direttiva definisce tutte le informazioni rilevanti di Amazon Pay. Le più importanti sono sellerId, che definisce chi avvia l’addebito, oltre a countryOfEstablishment e ledgerCurrency che definiscono come avviene l’addebito al cliente. Per le definizioni di tutti gli altri campi, consulta la nostra guida dettagliata selezionando il link corrispondente nella sezione delle risorse.

Come avrai notato non abbiamo ancora definito l’importo da addebitare. Il suo valore dipende dall’operazione Charge, se l’addebito avviene all’interno della skill, oppure dall’eventuale altro servizio che utilizza le nostre API di back-end, se l’addebito avviene “offline”.

Aggiungere la direttiva alla risposta è piuttosto semplice:

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

Nota: concludiamo la sessione perché la richiesta Connection.Request interromperà la sessione della skill e la richiamerà in seguito con la richiesta Connections.Response. Se non si conclude la sessione o si aggiunge una nuova richiesta, si verificherà un errore.

Per ricevere la risposta è sufficiente definire un handler per la richiesta Connections.Response

canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === "Connections.Response"

    && handlerInput.requestEnvelope.request.name === "Setup";
}

 

Il payload della risposta conterrà il billingAgreementId necessario per l’addebito al cliente.

Charge

Amazon Pay può aiutarti con diversi casi pratici. Li classifichiamo come workflow di pagamento: Charge Now e Charge Later. 

Charge Now consente di vendere beni materiali (ad esempio biglietti, abbigliamento e così via) e di addebitarne l’importo all’acquirente mentre ancora interagisce con la skill. È l’ideale per gli acquisti una-tantum, per i quali si conosce l’importo esatto del pagamento. Lo starter kit nella skill dimostrativa “No Nicks” è un esempio di Charge Now.

Charge Later consente di configurare una richiesta BillingAgreement che rappresenta le preferenze dell’acquirente per quanto riguarda il pagamento e l’indirizzo di consegna, se disponibili; consente di addebitare l’importo al cliente in un momento successivo tramite le API di back-end di Amazon Pay. È la soluzione perfetta se ancora non si conosce l’importo esatto complessivo dell’ordine, ad esempio per opportunità di upselling, situazioni di tipo pay-as-you-go o abbonamenti, in cui si addebitano le somme all’acquirente a intervalli regolari.

Il flusso di lavoro chargeNow consente di eseguire in modo analogo una richiesta charge utilizzando il parametro billingAgreementId ricevuto nella risposta 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': 'Grazie per aver scelto No Nicks'
        }
    },
    'token': 'WASv2lk4pdfI'
}

L’operazione charge impone di specificare almeno l’importo totale e la valuta da richiedere al cliente. Per informazioni più complete, puoi consultare la guida dettagliata linkata fra le risorse di seguito.

Proprio come nella fase setup, aggiungeremo la direttiva a responseBuilder durante la preparazione della risposta.

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

Definiamo ancora una volta un handler per la richiesta Connections.Response

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

La risposta alla richiesta Connections indicherà se l’addebito è riuscito o se si è verificato un problema nell’incasso.

Dopo il completamento di un acquisto, è necessario inviare all’app Alexa del cliente una conferma dell’ordine, contenete i dettagli dell’ordine.

var confirmationCardResponse = 'Il tuo ordine è stato inoltrato.\n' +
                                                            'Prodotti: 1 Starter Kit \n' +
                                                            'Importo totale: $9,00\n' +
                                                            'Grazie per aver scelto No Nicks\n' +
                                                            'www.nonicks.com'
return handlerInput.responseBuilder
                                                            .speak( config.confirmationIntentResponse )
                                                            .withStandardCard( 'Dettagli di conferma dell'ordine')                                        
                                                confirmationCardResponse, config.logoURL )                                                                                                 .withShouldEndSession( true )                                                                                                                 .getResponse( );

Con pochi semplici passaggi puoi ricevere il pagamento di prodotti o servizi utilizzando una skill di Alexa.

Inizia subito a integrare Amazon Pay nella tua skill di Alexa ed entra a far parte dei sempre più numerosi venditori che si dedicano al commercio vocale. Ci auguriamo di vedere presto quello che realizzerai!

Risorse