Avec Amazon Pay pour les Skills Alexa, vous pouvez vendre de vrais biens et services tels que des billets de cinéma ou de concert, des services de ramassage en voiture, de la nourriture et plus encore. Vous pouvez atteindre des clients du monde entier via une interaction aussi naturelle que la voix, alimentée par un flux de traitement des paiements fluide géré par Amazon Pay.

Les développeurs utilisent déjà Amazon Pay pour proposer divers produits physiques via la voix. Par exemple, l'entreprise ferroviaire britannique Virgin Trains peut vendre des billets de train à des clients directement via leur appareil doté d'Alexa.

Après avoir créé une expérience vocale stimulante, vous êtes prêt à en savoir plus sur la monétisation de votre Skill Alexa à l'aide d'Amazon Pay pour les Skills Alexa. Grâce à cet article, vous saurez comment ajouter Amazon Pay à votre Skill en quelques étapes simples. Avant de commencer, inscrivez-vous comme marchand Amazon Pay. En savoir plus dans notre guide.

Les API Amazon Pay pour les Skills Alexa sont composées de deux opérations seulement : Setup et Charge. Nous allons vous guider à travers ces deux opérations ci-dessous.

Setup

Setup crée un accord entre votre compte marchand et l’acheteur, appelé BillingAgreement, qui sera utilisé pour facturer le client à une étape ultérieure. Amazon Pay utilise les connexions de Skills Alexa pour que votre Skill interagisse avec les services Amazon Pay. Pour initier la création de l’accord, il faut créer une directive Connections correspondante pour appeler l’opération de configuration.

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': 'Thanks for shaving with No Nicks',
'sellerBillingAgreementAttributes': {
'@type': 'SellerBillingAgreementAttributes',
'@version': '2'
}
}
},
'token': 'IK1yRWd8VWfF'
}; 

 

Il faut d'abord définir la directive Connections.SendRequest pour l’opération Setup Amazon Pay. La charge dans la directive définit toutes les informations Amazon Pay pertinentes. Les plus importantes sont sellerId, qui définit qui initie la facturation, ainsi que countryOfEstablishment et ledgerCurrency, qui définissent comment facturer le client. Pour connaître la définition de tous les autres champs, référez-vous à notre guide complet indiqué en lien dans la section des ressources.

Vous noterez que le montant à facturer n'a pas encore été défini. Il est soumis à l'opération Charge, si vous facturez dans votre Skill, ou à tout autre service en utilisant nos API en back-end si vous facturez « hors ligne ».

L'ajout de la directive à votre réponse est relativement simple :

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

Remarque : la session est terminée, car Connection.Request mettra fin à votre session de Skill et l’invoquera à nouveau avec une Connections.Response. Si vous ne mettez pas fin à votre session ou si vous n’ajoutez pas un re-prompt, une erreur sera générée.

Pour récupérer la réponse, définissez simplement un handler pour la request Connections.Response.

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

La charge de la réponse contiendra le billingAgreementId nécessaire pour facturer le client.

Charge

Amazon Pay peut vous aider grâce à divers scénarios d’utilisation. Ils sont classés de la manière suivante : workflows de paiement, Charge Now (À facturer maintenant) et Charge Later (À facturer ultérieurement).

Charge Now vous permet de vendre des biens réels (ex. : billets, vêtements, etc.) et de débiter l’acheteur alors qu’il est encore en train d’interagir avec votre Skill. C’est une solution parfaite pour les achats uniques dont vous connaissez le montant exact à facturer. Le starter kit dans la Skill démo « No Nicks » est un exemple de Charge Now.

Charge Later vous permet de configurer un BillingAgreement, qui représente les préférences de l’acheteur en matière de paiement et d’adresse de livraison, le cas échéant, et d’utiliser cet accord pour facturer le client ultérieurement via les API en back-end d’Amazon Pay. C’est la solution idéale quand vous ne connaissez pas encore le montant total de la commande (ex. : pour les opportunités de vente incitative, les scénarios ou les abonnements prépayés), lorsq'un acheteur est débité à des intervalles réguliers).

Dans le workflow chargeNow, vous pouvez également exécuter une request charge, en utilisant le billingAgreementId reçu dans la réponse 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': 'Thanks for shaving with No Nicks'
}
},
'token': 'WASv2lk4pdfI'

L’opération charge nécessite que vous spécifiiez au moins le montant total et la devise à récupérer auprès du client. Pour une référence complète, consultez le guide complet dans les ressources ci-dessous.

Tout comme pour la phase setup, il faut ajouter la directive à responseBuilder lors de la préparation de la réponse.

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

Une fois encore, définissez simplement un handler pour la request Connections.Response.

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

La réponse de la request Connections vous dira si la facturation a été réalisée avec succès ou si une erreur est survenue lors des paiements.

Après un achat réussi, vous devez envoyer une carte à l’application Alexa du client en guise de confirmation de commande, y compris les détails de la commande.

var confirmationCardResponse = 'Your order has been placed.\n' +
                                                            'Products: 1 Starter Kit \n' +
                                                            'Total amount: $9.00\n' + 
                                                            'Thanks for shaving with No Nicks\n' +
                                                            'www.nonicks.com' 
return handlerInput.responseBuilder
                                                            .speak( config.confirmationIntentResponse )
                                                            .withStandardCard( 'Order Confirmation Details', 
                                                              confirmationCardResponse, config.logoURL )
                                                            .withShouldEndSession( true )
                                                            .getResponse( );

En seulement quelques étapes simples, vous pouvez accepter des paiements pour de vrais biens et services dans une Skill Alexa.

Commencez dès aujourd’hui en intégrant Amazon Pay à votre Skill Alexa et rejoignez la liste croissante de marchands qui utilisent la voix en première intention. Nous sommes impatients de découvrir vos créations !

Ressources