Set Up the Amazon Pay SDK
Follow these steps to set up the Amazon Pay SDK.
-
Open the application module's
build.gradle
file and the dependencies. -
To support Chrome Custom tabs in case it is not present, update your
AndroidManifest.xml
with the following code snippet: -
Sync Project with gradle files.
-
Generate and validate your API keys. For more information, see Obtain API Keys.
-
Generate a Code Challenge.
Initialize the Amazon Pay SDK
Follow these steps to initialize the Amazon Pay SDK.
-
Initialize the SDK in an activity that gets launched before a user selects Amazon Pay Later as an option on the checkout screen.
Request Parameters
Parameter Type Description Merchant_ID String Merchant ID provided by Amazon Pay Later Context Context Application context -
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.
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);
}});