fix(ancpi): GET CheckoutConfirmationSubmit after EditCartSubmit

EditCartSubmit returns 200 (not redirect) — Angular does client-side
redirect to CheckoutConfirmationSubmit.action. Added this step to
actually confirm the order before looking for the orderId.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
AI Assistant
2026-03-23 02:49:57 +02:00
parent 6c60572a3e
commit 08cd7164cb
@@ -446,23 +446,39 @@ export class EpayClient {
// No previous orders
}
// Step 1: POST EditCartSubmit (Angular does this, gets 200 back)
const body = new URLSearchParams();
body.set("goToCheckout", "true");
const response = await this.client.post(
await this.client.post(
`${BASE_URL}/EditCartSubmit.action`,
body.toString(),
{
headers: { "Content-Type": "application/x-www-form-urlencoded" },
timeout: DEFAULT_TIMEOUT_MS,
maxRedirects: 10,
validateStatus: () => true,
},
);
const finalUrl =
response.request?.res?.responseUrl ?? response.config?.url ?? "";
console.log(`[epay] EditCartSubmit: finalUrl=${finalUrl.slice(0, 100)}`);
// Step 2: GET CheckoutConfirmationSubmit (Angular redirects here client-side)
const confirmResponse = await this.client.get(
`${BASE_URL}/CheckoutConfirmationSubmit.action`,
{
timeout: DEFAULT_TIMEOUT_MS,
maxRedirects: 5,
validateStatus: () => true,
},
);
const confirmHtml = String(confirmResponse.data ?? "");
const hasConfirmation =
confirmHtml.includes("mulțumim") ||
confirmHtml.includes("multumim") ||
confirmHtml.includes("confirmare");
console.log(
`[epay] Checkout confirmation: ${hasConfirmation ? "OK" : "uncertain"} (${confirmHtml.length} chars)`,
);
// Find the NEW orderId (different from previous + not in knownOrderIds)
return this.findNewOrderId(previousOrderId, knownOrderIds);