HTTP define el código de estado 202 para exactamente su escenario:
202 Aceptado
La solicitud ha sido admitida a trámite, pero el tratamiento no se ha completado. Eventualmente se puede actuar sobre la solicitud o no, ya que podría no autorizarse cuando el procesamiento realmente tenga lugar. No hay ninguna posibilidad de volver a enviar un código de estado de una operación asíncrona como esta.
La respuesta 202 es intencionalmente no comprometida. Su propósito es permitir que un servidor acepte una solicitud para algún otro proceso (tal vez un proceso orientado por lotes que solo se ejecuta una vez al día) sin requerir que la conexión del agente de usuario con el servidor persista hasta que se complete el proceso. La entidad devuelta con esta respuesta DEBERÍA incluir una indicación del estado actual de la solicitud y un puntero a un monitor de estado o alguna estimación de cuándo el usuario puede esperar que se cumpla la solicitud.
Fuente: HTTP 1.1 Status Code Definition
Esto es similar a 201 Creado, excepto que usted está indicando que la solicitud no se ha completado y la entidad aún no ha sido creado. Su respuesta contendría una URL al recurso que representa la "solicitud de pedido", para que los clientes puedan verificar el estado del pedido a través de esta URL.
Para responder a su pregunta más directa: No hay manera de "prueba" si una solicitud tendrá éxito antes de hacerlo, porque que está pidiendo la clarividencia.
No es posible prever la gama de problemas técnicos que podrían ocurrir cuando intente realizar una solicitud en el futuro. La red puede no estar disponible, el servidor puede no ser capaz de acceder a su base de datos o sistemas externos de los que depende para funcionar, puede haber un corte de energía y el servidor está fuera de línea, un neutrino extraviado podría entrar en su memoria y chocar con un 0 a un 1 causando una falla catastrófica del kernel.
Para consumir un servicio remoto debe tener en cuenta las posibles fallas de cualquier solicitud independientemente de cualquier otro proceso.
Para su problema específico, si los servicios no tienen seguridad transaccional, no puede hornear ninguno allí y tiene que lidiar con esto de una manera más real. Unas pocas opciones de la parte superior de mi cabeza:
Obtener la empresa camiseta para darle un mecanismo de "prueba", para que pueda ver si van a procesar cualquier orden dada sin llegar a colocarla. Podría ser que realizar un pedido con ellos es una operación de dos fases, en la que construyes el pedido en la primera fase (momento en el que validan su creación) y luego solicitas que se procese el pedido (después de haber recibido el pago) exitosamente).
Primero tome el pago con tarjeta de crédito y cambie su orden a "pago". Luego intente cumplir el orden con el servicio de camiseta como un proceso asincrónico. Si falla el cumplimiento y puede identificar que el cliente intentó imprimir algo que la empresa no está preparada para producir, deberá ponerse en contacto con ellos para cambiar su pedido o producir un reembolso.
La mayoría de las organizaciones adoptarán el segundo enfoque, debido a su simplicidad técnica y la reducción del riesgo para el negocio. También tiene el beneficio de poder hacer frente al servicio de camisetas que no está disponible; el proceso asíncrono simplemente espera hasta que el servicio esté disponible y completa el pedido en ese momento.
Otro enfoque: un 'POST' con' persist = false' o 'efhemeral = true'. (Se siente un poco hacky, pero no requiere un cambio subsiguiente de 'status' - cuando realmente quiere que suceda' POST', emita nuevamente.) – mjs