From 1b82280853d5938efeaf1d8517b937e8cbde5583 Mon Sep 17 00:00:00 2001 From: c0mrade Date: Thu, 28 May 2026 15:51:20 +0300 Subject: [PATCH] feat(yandex-conv): forward CID through subscription purchase requests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pair-commit with the bot's #558449 fix. On the user's first cabinet visit, the separate POST /yandex-cid that Metrika init fires may not finish before the user clicks Buy. Pass the locally-cached CID directly in every purchase request body — renewSubscription, purchaseTraffic, purchaseDevices, submitPurchase, purchaseTariff — so the backend can persist it synchronously and the offline-conversion event fires reliably. --- src/api/subscription.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/api/subscription.ts b/src/api/subscription.ts index 83b103c..165f1ee 100644 --- a/src/api/subscription.ts +++ b/src/api/subscription.ts @@ -1,4 +1,5 @@ import apiClient from './client'; +import { getYandexCid } from '../utils/yandexCid'; import type { Subscription, SubscriptionStatusResponse, @@ -83,7 +84,10 @@ export const subscriptionApi = { }> => { const response = await apiClient.post( '/cabinet/subscription/renew', - ...bodyWithSubId({ period_days: periodDays }, subscriptionId), + ...bodyWithSubId( + { period_days: periodDays, yandex_cid: getYandexCid() || undefined }, + subscriptionId, + ), ); return response.data; }, @@ -108,7 +112,7 @@ export const subscriptionApi = { }> => { const response = await apiClient.post( '/cabinet/subscription/traffic', - ...bodyWithSubId({ gb }, subscriptionId), + ...bodyWithSubId({ gb, yandex_cid: getYandexCid() || undefined }, subscriptionId), ); return response.data; }, @@ -181,7 +185,7 @@ export const subscriptionApi = { }> => { const response = await apiClient.post( '/cabinet/subscription/devices/purchase', - ...bodyWithSubId({ devices }, subscriptionId), + ...bodyWithSubId({ devices, yandex_cid: getYandexCid() || undefined }, subscriptionId), ); return response.data; }, @@ -389,7 +393,7 @@ export const subscriptionApi = { }> => { const response = await apiClient.post( '/cabinet/subscription/purchase', - ...bodyWithSubId({ selection }, subscriptionId), + ...bodyWithSubId({ selection, yandex_cid: getYandexCid() || undefined }, subscriptionId), ); return response.data; }, @@ -420,6 +424,7 @@ export const subscriptionApi = { period_days: periodDays, traffic_gb: trafficGb, subscription_id: subscriptionId, + yandex_cid: getYandexCid() || undefined, }); return response.data; },