Skip to content

Set Up the Amazon Pay SDK

Follow these steps to set up the Amazon Pay SDK.

  1. Open the application module's build.gradle file and the dependencies.

    implementation 'com.amazon.android.amazonpay:apay-android-super-sdk-wallet:1.3.2'
    implementation 'com.amazon.android.amazonpay:apay-android-sdk-common-lib:1.3.4'
    implementation 'com.amazon.android.amazonpay:apay-identity-mobile-android-sdk-sso:3.2.3'
    
  2. To support Chrome Custom tabs in case it is not present, update your AndroidManifest.xml with the following code snippet:

    <queries>
     <intent>
      <action android:name="android.support.customtabs.action.CustomTabsService" />
     </intent>
    </queries>
    
  3. Sync Project with gradle files.

  4. Generate and validate your API keys. For more information, see Obtain API Keys.

  5. Generate a Code Challenge.

Initialize the Amazon Pay SDK

Follow these steps to initialize the Amazon Pay SDK.

  1. Initialize the SDK in an activity that gets launched before a user selects Amazon Pay Later as an option on the checkout screen.

    AmazonPay.init(String MERCHANT_ID, Context context);
    

    Request Parameters

    Parameter Type Description
    Merchant_ID String Merchant ID provided by Amazon Pay Later
    Context Context Application context
  2. Get the list of available instruments on the user’s device and send the response to initiate a charge request.

    AmazonPay.getPaymentMetaData(AmazonPayTransactionMetadataRequest amazonPayTransactionMetadataRequest, Activity activity);
    

    Request Parameters

    Parameter Type Description
    amazonPayTransactionMetadataRequest amazonPayTransactionMetadataRequest Contains information like MerchantID
    Activity Activity Activity calling the method

    amazonPayTransactionMetadataRequest

    Parameter Type Description
    HashMap<String, Object> HashMap Container for additional transaction information, e.g., MerchantID. For now, it only accepts the MerchantID, as demonstrated in the sample code.

    Response Parameters

    Type Description
    String Response is a Base64 encoded string.
    String paymentMetaData = AmazonPay.getPaymentMetaData(amazonPayTransactionMetadataRequest, Activity.this);
    

Sample Code

import com.amazon.android.amazonpay.api.AmazonPay; 
import com.amazon.android.apay.commonlibrary.interfaces.model.AmazonPayError; 
import com.amazon.android.apay.commonlibrary.interfaces.model.AmazonPayTransactionMetadataRequest; 
import com.amazon.android.apay.commonlibrary.interfaces.model.AmazonPayTransactionRequest; 
import static com.amazon.android.apay.commonlibrary.interfaces.external.MerchantConstants.MERCHANT_ID; 

private String getEncodedPaymentMetaData() { 
    AmazonPayTransactionMetadataRequest amazonPayTransactionMetadataRequest = createAmazonPaymentMetadataRequest(); 

    // pass this paymentMetaData value to your backend, as it’s required for the charge API call. 
    String paymentMetaData = ""; 

    try { 
        paymentMetaData = AmazonPay.getPaymentMetaData (amazonPayTransactionMetadataRequest, Activity.this);
    } 
    catch (AmazonPayError e) { 
        // Exception will be thrown in case of wrong Input only. 
        // API failure will never lead to any exceptions. 
        // All internal exceptions are caught and handled. 
    } 

    return paymentMetaData; 
} 

//Convert Enum and move it inside Map. 
public static AmazonPayTransactionMetadataRequest createAmazonPaymentMetadataRequest() { 
    return new AmazonPayTransactionMetadataRequest(new HashMap<String, Object>() {{ 
            put (MERCHANT_ID, BuildConfig.MERCHANT_ID); 
}});