Amazon Alexa

Integration published by Jovo | 12,825 downloads

Build apps for Amazon's Alexa assistant platform

Amazon Pay

Learn how to sell physical goods and services in your Alexa Skills using Amazon Pay and Jovo.

Introduction

The Amazon Pay integration allows you to sell physical goods and services through Alexa with the whole purchase flow being handled inside the voice experience.

The following documentation will only contain Jovo specific features like helper functions or project.js modifications. Please use the official Amazon documentation for the JSON interfaces, guidelines, etc. You can find them here

Permissions

To use Amazon Pay you have to add it to the permissions your skill needs. For that add the following to your project.js file:

After that build and deploy the files:

To check whether the user granted you the permission you can use the following helper methods:

If the user didn't provide the permission you can prompt them to grant the permission by showing them a card in the Alexa app:

Buyer Id

To get the user's buyer id, you can use the getBuyerId() helper method.

You have to parse the method an options object with the following properties:

Name Description Value Required
host Depending on the user's region, you have to send the api request to different hosts. For NA it's pay-api.amazon.com, for EU & UK it's pay-api.amazon.eu and for JP it's pay-api.amazon.jp String Yes

If your request was successful, you will receive a response object with the following structure:

Name Description Value
buyerId The user's buyer id String

Buyer Address

To access the user's buyer address, you can use the getBuyerAddress() helper method.

You have to parse the method an options object with the following properties:

Name Description Value Required
host Depending on the user's region, you have to send the api request to different hosts. For NA it's pay-api.amazon.com, for EU & UK it's pay-api.amazon.eu and for JP it's pay-api.amazon.jp String Yes
sellerId Your seller id String Yes
sandbox A boolean to specify wether you want to use the sandbox mode or not. The default value is false Boolean No
sandboxEmail The email address for the sandbox user account. Is only required, if sandbox is set to true String No

If your request was successful, you will receive a response object with an array containing all of the user's addresses:

Name Description Value
addresses Array of address objects Object[]
addresses[].address address object Object
addresses[].address.addressLine1 String
addresses[].address.city String
addresses[].address.countryCode String
addresses[].address.name String
addresses[].address.phone String
addresses[].address.postalCode String
addresses[].address.stateOrRegion String
addresses[].addressType String

Default Buyer Address

To get the buyer's default shipping address directly, use getDefaultBuyerAddress().

The function expects the same object as a parameter as getBuyerAddress(). As a response you get the default shipping addresses' object.

Send the Directive

Both the Setup and Charge directive are simply JS objects which you can add to the response using the addDirective() method:

The request you will receive as the response to the directive, Connections.Response will be mapped to the Jovo built-in ON_PURCHASE intent:

For the reference for both the Setup and Charge directive, please use the official Amazon documentation which you can find here.

Payload Builder

For both the Setup and Charge we offer a payload builder. It takes care of all the default values of the payload.

After building the payload using the respective helper methods, you call the build() method, which will return you the final object.

Setup Payload Builder

Name Param
setSellerId() String
setCountryOfEstablishment() Enum - DE, ES, US, UK, etc.
setLedgerCurrency() Enum - USD, EUR, GBP, or JPY
setCheckoutLanguage() Enum - de_DE, en_GB, en_US, es_ES, fr_FR, it_IT, ja_JP
setSellerBillingAgreementId() String
setBillingAgreementType() Enum - CustomerInitiatedTransaction or MerchantInitiatedTransaction
setSubscriptionAmount() String
setSubscriptionCurrencyCode() Enum - USD, EUR, GBP, or JPY
setStoreName() String
setCustomInformation() String
setNeedAmazonShippingAddress() Boolean
setSandboxMode() Boolean
setSandboxEmail() String

Charge Payload Builder

Name Param
setSellerId() String
setBillingAgreementId() String
setPaymentAction() Enum - Authorize or AuthorizeAndCapture
setAuthorizationReferenceId() String
setAuthorizationAmount() String
setAuthorizationCurrencyCode() Enum - USD, EUR, GBP, or JPY
setSoftDescriptor() String
setTransactionTimeout() String
setSellerAuthorizationNote() String
setStoreName() String
setCustomInformation() String
setSellerNote() String
setSellerOrderId() String

Amazon Alexa Changelog

Jovo Marketplace | GitHub | npm

Current version might be higher than the latest changes displayed below because of updates of dependencies.

2021-10-27 [3.5.5]

2021-02-22 [3.5]

  • #901 Move setResponse from response to after.response middleware (@aswetlow)
  • #901 Route Alexa.Presentation.APLA.RuntimeError requests to ON_ERROR (@aswetlow)

2020-11-10 [3.2.1]

2020-08-21 [3.0.30]

3.0.17 (2020-05-13)

🐛 Bug fix

  • jovo-platform-alexa Fix http status in ReminderAPI

Committers: 1

3.0.13 (2020-05-04)

💅 Enhancements

  • jovo-platform-alexa #734 Add getPermissionIsCardThrown (@rmtuckerphx)
  • jovo-platform-alexa Add types for skill event body objects

Committers: 2

3.0.11 (2020-04-06)

  • Updated Typescript to 3.8.x
  • Updated Prettier to 2.x

Committers: 2

2.x

Find the 2.x changelog here.

Join Our Newsletter

Be the first to get our free tutorials, courses, and other resources for voice app developers.