He intentado integrar Amazon Pay como método de pago para los clientes en mi sitio web, pero tengo problemas con algunos de los detalles en la documentación. Espero comprender mejor los encabezados de solicitud que se asociarán con una llamada a la API de pago de Amazon.
Estoy haciendo una solicitud a 'https://pay-api.amazon.com/v2/checkoutSessions/checkoutSessionId' y recibo un error de política de CORS.
El acceso para buscar en 'https://pay-api.amazon.com/v2/checkoutSessions/d9b4418d-0c6f-4085-8c37-08bef6da6807' desde el origen 'http://localhost:3000' ha sido bloqueado por la política CORS: Respuesta a la solicitud de verificación previa no pasa la verificación de control de acceso: No hay un encabezado 'Access-Control-Allow-Origin' en el recurso solicitado. Si una respuesta opaca satisface sus necesidades, establezca el modo de la solicitud en 'no-cors' para obtener el recurso con CORS deshabilitado.
Aquí está la solicitud de recuperación donde estoy tratando de hacer la solicitud
fetch(`https://pay-api.amazon.com/v2/checkoutSessions/${this.$route.query.amazonCheckoutSessionId}`, { method: 'GET', headers: { 'Content-Type': 'application/json', 'authorization': 'Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE', 'x-amz-pay-date': `${new Date()}` } })this.$route.query.amazonCheckoutSessionId hace referencia a la extensión de URL devuelta después de que el usuario crea una sesión de pago con el botón de pago de Amazon.
La documentación describe que una solicitud debe hacerse de la siguiente manera
curl "https://pay-api.amazon.com/:version/checkoutSessions/:checkoutSessionId" -X GET -H "authorization:Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE" -H "x-amz-pay-date:20201012T235046Z"¿Puede alguien explicarme dónde se supone que debo obtener la cadena de autorización y su formato? Además, ¿hay alguna manera de formatear fácilmente una cadena de fecha en el formato que se muestra en la documentación? ¿O no importa el formato de cadena de fecha?
He buscado bastante a través de las publicaciones de desbordamiento de pila asociadas con el pago de Amazon (de las cuales hay pocas), así como también busqué en otra documentación de Amazon y AWS para obtener detalles sobre cómo formatear la cadena de autenticación. Desafortunadamente, parece que no puedo encontrar una respuesta. También intenté pasar la firma de mi botón como mi cadena de autorización, pero eso no pareció ayudar.
Gracias por cualquier ayuda que pueda brindar.
Hay dos partes en su problema:

Las API de Amazon Pay no admiten solicitudes directas del lado del cliente, por lo que deberá realizar esas solicitudes del lado del servidor. Es por eso que está viendo un error CORS.
Puede encontrar un recorrido detallado sobre la generación de firmas requerida para firmar cada una de las solicitudes de API aquí: https://developer.amazon.com/docs/amazon-pay-api-v2/signing-requests.html
Debería poder aprovechar el SDK de Amazon Pay Node.js, que ahorrará bastante codificación: https://developer.amazon.com/docs/amazon-pay-checkout/get-set-up-for-integration .html#nodejstab
También recomendaría usar el bloc de notas del desarrollador como una forma de verificar la cordura de su trabajo y obtener consejos sobre el código requerido, ya que hará solicitudes por usted y generará fragmentos de código. https://pay-api.amazon.com/tools/scratchpad/index.html