Ti ringraziamo per la visita. Questa pagina è per il momento disponibile solo in inglese.

Call finalizeCheckoutSession API

To confirm the buyer has returned to your website, use finalizeCheckoutSession. AmazonPay will append CheckoutSessionId as a parameter to your Universal link or App link checkoutResultReturnUrl. In your delegate function (where you handle Universal link/App link), you’ll need to handle checkoutResultReturnUrl and retrieve CSId. Then call finalizeCheckoutSession API to validate button params & get CPId, buyer details, paymentDescriptor and billingAddress.

Sample code to retrieve the checkout-session id:

Android

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // Get the Intent that started this activity and extract the data
    val data: Uri? = intent?.data

    data?.let { uri ->
        when (uri.host) {
            "[your url of checkoutResultReturnUrl]" -> {
                // 1. retrieve CheckoutSessionId
                // 2. pass CheckoutSessionId to your backend service, 
                // and call finalizeCheckoutSession API with CSId in backend
            }
            "[your url of checkoutCancelUrl]" -> {
                // redirect buyer to your App's page for cancel flow
            }
            else -> {
                // redirect buyer to your App's page for error flow
            }
        }
    }
}

iOS

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    guard let url = userActivity.webpageURL else {
        return false
    }
    
    // Handle checkoutResultReturnUrl for happy path
    if url.host == "[your url of checkoutResultReturnUrl]" {
        // 1. retrieve CheckoutSessionId
        // 2. pass CheckoutSessionId to your backend service, 
        // and call finalizeCheckoutSession API with CSId in backend
    } else if url.host == "[your url of checkoutCancelUrl]" {
        // redirect buyer to your App's page for cancel flow
    } else {
        // redirect buyer to your App's page for error flow
    }
    
    return true
}

Finalize Checkout Session Request

Request

curl "https://pay-api.amazon.com/:version/checkoutSessions/:checkoutSessionId/finalize" \
-X POST
-H "authorization:Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-H "x-amz-pay-date:20201012T235046Z"
-d @request_body

Request body

{
    "shippingAddress": {
        "name": "Susy S",
        "addressLine1": "11 Ditka Ave",
        "addressLine2": "Suite 2500",
        "city": "Chicago",
        "county": null,
        "district": null,
        "stateOrRegion": "IL",
        "postalCode": "60602",
        "countryCode": "US",
        "phoneNumber": "800-000-0000"
    },
    {
    "chargeAmount": {
        "amount": "14",
        "currencyCode": "USD"
    },
    "paymentIntent": "AuthorizeWithCapture",
    "canHandlePendingAuthorization": "false"
}

Request parameters

Name
Location
Description
checkoutSessionId
(required)

Type: string
Path parameter
Checkout Session identifier
paymentIntent
(required)

Type: string
Body
Payment flow for charging the buyer
chargeAmount
(required)

Type: price
Body
Amount to be processed using paymentIntent during checkout. Must match Checkout Session object paymentDetails.chargeAmount
totalOrderAmount

Type: price
Body
Total order amount. Must match Checkout Session object paymentDetails.totalOrderAmount if a value was provided
canHandlePendingAuthorization

Type: boolean
Body
Boolean that indicates whether merchant can handle pending response

See asynchronous processing for more info
shippingAddress
(required*)

Type: address
Body
Shipping address provided by Amazon for validation

*required for `PayAndShip` use cases
billingAddress
(required*)

Type: address
Body
Billing address provided by Amazon for validation

*required for `PayOnly` use cases
supplementaryData

Type: string
Body
Supplementary data about your order

Finalize Checkout Session Response

Returns HTTP 200 status response code if paymentIntent was successful. Returns HTTP 202 status response code if authorization is still pending.

{
    "checkoutSessionId": "bd504926-f659-4ad7-a1a9-9a747aaf5275",
    "webCheckoutDetails": null,
    "chargePermissionType": "OneTime",   
    "recurringMetadata": null,
    "productType": null,
    "paymentDetails": null,
    "merchantMetadata": null,
    "supplementaryData":null, // Amazon Pay system data 
    "billingAddress": {
        "name": "Work",
        "addressLine1": "440 Terry Ave",
        "addressLine2": "",
        "addressLine3": "",
        "city": "Seattle",
        "county": "King",
        "district": "Seattle",
        "stateOrRegion": "WA",
        "postalCode": "98121",
        "countryCode": "US",
        "phoneNumber": "800-000-0000"
    },
    "paymentDescriptor": "Amazon Pay Visa (1111)",
    "buyer": {
        "buyerId": "buyerId",
        "name": "name-1",
        "email": "name@amazon.com",
        "phoneNumber": "800-000-0000"
    },
    "paymentPreferences": [
        null
    ],
    "statusDetails": {
        "state": "Completed",
        "reasonCode": null,
        "reasonDescription": null,
        "lastUpdatedTimestamp": "20191015T204327Z"
    },
    "shippingAddress": null,
    "platformId":null,
    "chargePermissionId": "S01-5105180-3221187",
    "chargeId": "S01-5105180-3221187-C056351",
    "constraints": [
        null
    ],
    "creationTimestamp": "20191015T204313Z",
    "expirationTimestamp": null,
    "storeId": null,
    "deliverySpecifications": null,
    "providerMetadata": null,
    "checkoutButtonText": null,
    "releaseEnvironment": null
}