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

{}

Request parameters

Name
Location
Description
checkoutSessionId
(required)

Type: string
Path parameter
Checkout Session identifier
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": "PaymentMethodOnFile",   
    "recurringMetadata": null,
    "productType": null,
    "paymentDetails": null,
    "merchantMetadata": null,
    "supplementaryData":null, // Amazon Pay system data 
    "paymentMethodOnFileMetadata": { 
        "setupOnly": true 
    },
    "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": "B01-5105180-3221187",
    "chargeId": "null",
    "constraints": [
        null
    ],
    "creationTimestamp": "20191015T204313Z",
    "expirationTimestamp": null,
    "storeId": null,
    "deliverySpecifications": null,
    "providerMetadata": null,
    "checkoutButtonText": null,
    "releaseEnvironment": null
}