From 08cd7164cb7cf60156b79b5590a3e1a9156b3c6a Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Mon, 23 Mar 2026 02:49:57 +0200 Subject: [PATCH] fix(ancpi): GET CheckoutConfirmationSubmit after EditCartSubmit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- .../parcel-sync/services/epay-client.ts | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/modules/parcel-sync/services/epay-client.ts b/src/modules/parcel-sync/services/epay-client.ts index eb89c4c..ef9a0dd 100644 --- a/src/modules/parcel-sync/services/epay-client.ts +++ b/src/modules/parcel-sync/services/epay-client.ts @@ -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);