Amazon Pay – REST API

You are here:

Pay with Amazon as of version 1.6.0 exposes some functionalities through REST API.

The Pay with Amazon REST API allows you to authorize, capture, and close authorization. The endpoint is /wp-json/wc/v1/orders/<order_id>/amazon-payments-advanced/.

List of orders paid via Amazon Pay

There’s no custom endpoint to retrieve list of orders paid via Amazon Pay. The built-in orders point can be used with_payment_method=amazon_payments_advanced filter.

GET /wp-json/wc/v1/orders?filter[_payment_method]=amazon_payments_advanced
curl -g -X GET 'https://example.com/wp-json/wc/v1/orders?filter[_payment_method]=amazon_payments_advanced' -u consumer_key:consumer_secret

For CURL request that involves filter query ([]), you need to specify -g (to turn off URL globbing).

JSON response example:

[
  {
    "id": 132,
    "status": "on-hold",
    "order_key": "wc_order_57bb41b6eeb32",
    "number": 4606,
    "currency": "GBP",
    ...
    "amazon_reference": {
      "amazon_reference_state": "Open",
      "amazon_reference_id": "S02-0312204-2022855",
      "amazon_authorization_state": "",
      "amazon_authorization_id": "",
      "amazon_capture_state": "",
      "amazon_capture_id": "",
      "amazon_refund_ids": []
    },
    ...
  },
  ...
]

Orders paid via Amazon Pay will have amazon_reference on order item.

The filter parameter can be used with status parameter to retrieve list of orders that have been authorized but not captured yet.

curl -g -X GET 'https://example.com/wp-json/wc/v1/orders?filter[_payment_method]=amazon_payments_advanced&filter[amazon_authorization_state]=Open&status=on-hold' -u consumer_key:consumer_secret

Authorize the order

POST /wp-json/wc/v1/orders/<order_id>/amazon-payments-advanced/authorize 
curl -X GET 'https://example.com/wp-json/wc/v1/orders/123/amazon-payments-advanced/authorize ' -u consumer_key:consumer_secret

JSON response example:

{
  "authorized": true,
  "amazon_authorization_id": "S02-6972444-9928455-A066187"
}

Possible JSON response with error:

{
  "code": "TransactionAmountExceeded",
  "message": "OrderReference S02-6972444-9928455 has already been authorized for amount 21.85 GBP. A new Authorization with amount 21.85 GBP cannot be accepted as the total Authorization amount cannot exceed 25.13 GBP.",
  "data": null
}
{
  "code": "woocommerce_rest_order_invalid_id",
  "message": "Invalid order ID.",
  "data": {
    "status": 404
  }
}

Close authorization

POST /wp-json/wc/v1/orders/<order_id>/amazon-payments-advanced/close-authorization 
curl -X GET 'https://example.com/wp-json/wc/v1/orders/123/amazon-payments-advanced/close-authorization ' -u consumer_key:consumer_secret

JSON response example:

{
  "authorization_closed": true
}

Possible JSON response with error:

{
  "code": "woocommerce_rest_order_missing_amazon_authorization_id",
  "message": "Specified resource does not have Amazon authorization ID",
  "data": {
    "status": 400
  }
}

Capture the order

POST /wp-json/wc/v1/orders/<order_id>/amazon-payments-advanced/capture 
curl -X GET 'https://example.com/wp-json/wc/v1/orders/123/amazon-payments-advanced/capture ' -u consumer_key:consumer_secret

JSON response example:

{
  "captured": true,
  "amazon_capture_id": "S02-6972444-9928455-C066187"
}

Possible JSON response with error:

{
  "code": "InvalidAuthorizationStatus",
  "message": "Authorization S02-6972444-9928455-A066187 is currently in Closed state. Capture can only be requested in Open state.",
  "data": null
}

Authorize and capture the order

POST /wp-json/wc/v1/orders/<order_id>/amazon-payments-advanced/authorize-and-capture 
curl -X GET 'https://example.com/wp-json/wc/v1/orders/123/amazon-payments-advanced/authorize-and-capture ' -u consumer_key:consumer_secret

JSON response example:

{
  "authorized": true,
  "amazon_authorization_id": "S02-4966596-9591203-A079366",
  "captured": true,
  "amazon_capture_id": "S02-4966596-9591203-C079366"
}

Possible JSON response with error:

{
  "code": "InvalidAuthorizationStatus",
  "message": "Authorization S02-6972444-9928455-A066187 is currently in Closed state. Capture can only be requested in Open state.",
  "data": null
}

Refund the order

POST /wp-json/wc/v1/orders/<order_id>/amazon-payments-advanced/refund
curl -X GET 'https://example.com/wp-json/wc/v1/orders/123/amazon-payments-advanced/refund' 
  -u consumer_key:consumer_secret 
  -H 'Content-Type: application/json' 
  -d '{"amount": "20.00", "reason": "reason for refund"}'

JSON response example:

{
  "refunded": true,
  "amazon_refund_id": "S02-1228806-5112466-R043423"
}
Was this article helpful?
Dislike 0
Views: 6