Покупки из приложения и пробные версии

Пакет SDK для Windows предоставляет API-интерфейсы, которые можно использовать для реализации следующих функций для получения дополнительных средств от приложения универсальная платформа Windows (UWP):

  • Покупки в приложении независимо от того, является ли ваше приложение бесплатным или нет, вы можете продавать содержимое или новые функции приложения (например, разблокировать следующий уровень игры) прямо в приложении.

  • Пробная версия приложения, если вы настраиваете приложение в качестве бесплатной пробной версии в Центре партнеров, вы можете заставить клиентов приобрести полную версию приложения, исключив или ограничив некоторые функции в течение пробного периода. Вы также можете включить такие функции, как баннеры или подложки, которые отображаются только во время пробной версии, прежде чем клиент покупает приложение.

В этой статье представлен обзор работы покупок и пробных версий в приложениях UWP.

Выбор используемого пространства имен

Существует два разных пространства имен, которые можно использовать для добавления покупок в приложении и пробной версии приложений UWP в зависимости от целевой версии Windows 10 или Windows 11. Хотя API в этих пространствах имен служат одинаковым целям, они разработаны совершенно по-разному, и код не совместим между двумя API.

  • Windows.Services.Store начиная с Windows 10 версии 1607 приложения могут использовать API в этом пространстве имен для реализации покупок и пробных версий в приложении. Рекомендуется использовать элементы в этом пространстве имен, если проект приложения предназначен для Windows 10 Anniversary Edition (10.0; Сборка 14393) или более поздняя версия в Visual Studio. Это пространство имен поддерживает последние типы надстроек, такие как управляемые магазином потребляемые надстройки, и предназначены для обеспечения совместимости с будущими типами продуктов и функций, поддерживаемых Центром партнеров и Магазином. Дополнительные сведения об этом пространстве имен см. в статьях о покупках и пробных версиях в приложении с помощью раздела пространства имен Windows.Services.Store в этой статье.

  • Windows.ApplicationModel.Store Все версии Windows 10 и Windows 11 также поддерживают более старый API для покупок и пробных версий в этом пространстве имен. Сведения о пространстве имен Windows.ApplicationModel.Store см. в разделе покупки и пробные версии в приложении с помощью пространства имен Windows.ApplicationModel.Store.

Внимание

Пространство имен Windows.ApplicationModel.Store больше не обновляется с новыми функциями, и мы рекомендуем вместо этого использовать пространство имен Windows.Services.Store , если это возможно для вашего приложения. Пространство имен Windows.ApplicationModel.Store не поддерживается в классических приложениях Windows, использующих мост для классических приложений или в приложениях или играх, использующих песочницу разработки в Центре партнеров (например, это относится к любой игре, которая интегрируется с Xbox Live).

Основные понятия

Каждый элемент, предлагаемый в Магазине, обычно называется продуктом. Большинство разработчиков работают только со следующими типами продуктов: приложениями и надстройками.

Надстройка — это продукт или функция, которую вы предоставляете клиентам в контексте приложения: например, валюту, используемую в приложении или игре, новые карты или оружие для игры, возможность использовать приложение без рекламы или цифрового содержимого, например музыки или видео для приложений, имеющих возможность предлагать этот тип контента. Каждое приложение и надстройка имеют связанную лицензию, которая указывает, имеет ли пользователь право использовать приложение или надстройку. Если пользователь имеет право использовать приложение или надстройку в качестве пробной версии, лицензия также предоставляет дополнительные сведения о пробной версии.

Чтобы предложить надстройку клиентам в приложении, необходимо определить надстройку для приложения в Центре партнеров, чтобы Магазин знал об этом. Затем приложение может использовать API в пространстве имен Windows.Services.Store или Windows.ApplicationModel.Store , чтобы предложить надстройку для продажи пользователю в качестве покупки в приложении.

Приложения UWP могут предлагать следующие типы надстроек.

Тип надстройки Description
Стабильность Надстройка, которая сохраняется в течение всего времени существования, указанного в Центре партнеров.

По умолчанию срок действия устойчивых надстроек никогда не истекает, в этом случае их можно приобрести только один раз. Если указать определенную длительность надстройки, пользователь может повторно выкупить надстройку после истечения срока его действия.
Использование, управляемое разработчиком Надстройка, которую можно приобрести, использовать, а затем снова приобрести после ее использования. Вы несете ответственность за отслеживание баланса пользователей элементов, представленных надстройкой.

Когда пользователь потребляет все элементы, связанные с надстройкой, вы несете ответственность за поддержание баланса пользователя и отчеты о покупке надстройки, как выполнено в Магазине после того, как пользователь использовал все элементы. Пользователь не может снова приобрести надстройку, пока ваше приложение не сообщило о предыдущей покупке надстройки, как выполнено.

Например, если надстройка представляет 100 монет в игре, а пользователь потребляет 10 монет, ваше приложение или служба должны поддерживать новый оставшийся баланс 90 монет для пользователя. После того как пользователь использовал все 100 монет, ваше приложение должно сообщить о надстройке как выполненную, а затем пользователь может приобрести надстройку 100 монет еще раз.
Использование, управляемое магазином Надстройка, которую можно приобрести, использовать и приобрести снова в любое время. Магазин отслеживает баланс элементов, которые представляет надстройка.

Когда пользователь использует все элементы, связанные с надстройкой, вы несете ответственность за отчеты об этих элементах, как выполненные в Магазине, и Магазин обновляет баланс пользователя. Пользователь может приобрести надстройку столько раз, сколько они хотят (сначала им не нужно использовать элементы). Приложение может запрашивать текущий баланс для пользователя в любое время.

Например, если ваша надстройка представляет начальное количество 100 монет в игре, а пользователь потребляет 50 монет, ваше приложение сообщает Магазину, что 50 единиц надстройки были выполнены, и Магазин обновляет оставшийся баланс. Если пользователь затем повторно выкупает надстройку, чтобы получить 100 больше монет, они теперь будут иметь 150 монет в общей сложности.

Примечание. Чтобы использовать управляемые Магазином расходные материалы, приложение должно быть предназначено для Windows 10 Anniversary Edition (10.0; Сборка 14393) или более поздней версии в Visual Studio, и она должна использовать пространство имен Windows.Services.Store вместо пространства имен Windows.ApplicationModel.Store .
Отток подписок Устойчивая надстройка, в которой клиент продолжает взиматься с повторяющихся интервалов, чтобы сохранить использование надстройки. Клиент может отменить подписку в любое время, чтобы избежать дальнейших расходов.

Примечание. Чтобы использовать надстройки подписки, приложение должно быть предназначено для Windows 10 Anniversary Edition (10.0; Сборка 14393) или более поздней версии в Visual Studio, и она должна использовать пространство имен Windows.Services.Store вместо пространства имен Windows.ApplicationModel.Store .

Примечание.

Другие типы надстроек, такие как устойчивые надстройки с пакетами (также известные как скачиваемое содержимое или DLC), доступны только для ограниченного набора разработчиков и не рассматриваются в этой документации.

Покупки и пробные версии в приложении с помощью пространства имен Windows.Services.Store

В этом разделе представлен обзор важных задач и концепций для пространства имен Windows.Services.Store . Это пространство имен доступно только для приложений, предназначенных для Windows 10 Anniversary Edition (10.0; Сборка 14393) или более поздняя версия в Visual Studio (это соответствует Windows 10 версии 1607). Мы рекомендуем приложениям использовать пространство имен Windows.Services.Store вместо пространства имен Windows.ApplicationModel.Store , если это возможно. Сведения о пространстве имен Windows.ApplicationModel.Store см . в этой статье.

В этом разделе

Начало работы с классом StoreContext

Основная точка входа в пространство имен Windows.Services.Storeкласс StoreContext . Этот класс предоставляет методы, которые можно использовать для получения сведений о текущем приложении и его доступных надстройках, получения сведений о лицензии для текущего приложения или его надстроек, приобретения приложения или надстройки для текущего пользователя и выполнения других задач. Чтобы получить объект StoreContext , выполните одно из следующих действий:

  • В однопользовательском приложении (то есть приложение, которое выполняется только в контексте пользователя, запускающего приложение), используйте статический метод GetDefault для получения объекта StoreContext , который можно использовать для доступа к данным, связанным с Microsoft Store для пользователя. Большинство приложений универсальная платформа Windows (UWP) — это однопользовательские приложения.

    Windows.Services.Store.StoreContext context = StoreContext.GetDefault();
    
  • В многопользовательском приложении используйте статический метод GetForUser , чтобы получить объект StoreContext , который можно использовать для доступа к данным, связанным с Microsoft Store, для конкретного пользователя, вошедшего в систему с учетной записью Майкрософт при использовании приложения. В следующем примере возвращается объект StoreContext для первого доступного пользователя.

    var users = await Windows.System.User.FindAllAsync();
    Windows.Services.Store.StoreContext context = StoreContext.GetForUser(users[0]);
    

Примечание.

Классические приложения Windows, использующие мост для классических приложений, должны выполнить дополнительные действия, чтобы настроить объект StoreContext, прежде чем они смогут использовать этот объект. Дополнительные сведения см. в этом разделе.

После того как у вас есть объект StoreContext , можно начать вызывать методы этого объекта, чтобы получить сведения о продукте Store для текущего приложения и его надстроек, получить сведения о лицензии для текущего приложения и его надстройки, приобрести приложение или надстройку для текущего пользователя и выполнить другие задачи. Дополнительные сведения о распространенных задачах, которые можно выполнить с помощью этого объекта, см. в следующих статьях:

Пример приложения, демонстрирующего использование StoreContext и других типов в пространстве имен Windows.Services.Store , см. в примере Магазина.

Реализация покупок в приложении

Чтобы предложить клиентам в приложении покупку в приложении с помощью пространства имен Windows.Services.Store :

  1. Если ваше приложение предлагает надстройки, которые клиенты могут приобрести, создайте отправки надстроек для вашего приложения в Центре партнеров.

  2. Напишите код в приложении, чтобы получить сведения о продукте для приложения или надстройки, предлагаемой приложением , а затем определить, активна ли лицензия (т. е. имеет ли пользователь лицензию на использование приложения или надстройки). Если лицензия не активна, отобразите пользовательский интерфейс, который предлагает приложение или надстройку для продажи пользователю в качестве покупки в приложении.

  3. Если пользователь решит приобрести приложение или надстройку, используйте соответствующий метод для покупки продукта:

  4. Протестируйте реализацию, следуя инструкциям по тестированию в этой статье.

Реализация функциональных возможностей пробной версии

Чтобы исключить или ограничить функции в пробной версии приложения с помощью пространства имен Windows.Services.Store :

  1. Настройте приложение в качестве бесплатной пробной версии в Центре партнеров.

  2. Напишите код в приложении, чтобы получить сведения о продукте для приложения или надстройки, предлагаемой приложением, а затем определить, является ли лицензия, связанная с приложением, является пробной лицензией.

  3. Исключите или ограничьте некоторые функции в приложении, если это пробная версия, а затем включите функции, когда пользователь приобретает полную лицензию. Дополнительные сведения и пример кода см. в статье "Реализация пробной версии приложения".

  4. Протестируйте реализацию, следуя инструкциям по тестированию в этой статье.

Тестирование реализации покупки или пробной версии в приложении

Если приложение использует API в пространстве имен Windows.Services.Store для реализации функций покупки или пробной версии приложения, необходимо опубликовать приложение в Магазине и скачать приложение на устройство разработки, чтобы использовать ее лицензию для тестирования. Выполните этот процесс, чтобы проверить код:

  1. Если ваше приложение еще не опубликовано и доступно в Магазине, убедитесь, что ваше приложение соответствует минимальным требованиям комплекта сертификации приложений Для Windows, отправьте приложение в Центр партнеров и убедитесь, что ваше приложение проходит сертификационный процесс. Вы можете настроить приложение так, чтобы оно было недоступно для обнаружения в Магазине во время его тестирования. Обратите внимание на правильную конфигурацию пакетов. Неправильно настроенные рейсы пакетов могут быть не в состоянии скачать.

  2. Затем убедитесь, что вы выполнили следующее:

  3. Открыв проект в Visual Studio, щелкните меню "Проект", наведите указатель на Магазин и выберите пункт "Связать приложение с Магазином". Выполните инструкции в мастере, чтобы связать проект приложения с приложением в учетной записи Центра партнеров, которую вы хотите использовать для тестирования.

    Примечание.

    Если проект не связан с приложением в Магазине, методы StoreContext задают свойство ExtendedError возвращаемых значений значением кода ошибки 0x803F6107. Это значение указывает, что в Магазине нет знаний о приложении.

  4. Если это еще не сделано, установите приложение из Магазина, указанного на предыдущем шаге, запустите приложение один раз и закройте это приложение. Это гарантирует, что на устройстве разработки установлена действительная лицензия для приложения.

  5. В Visual Studio запустите или отладите проект. Код должен получать данные приложения и надстройки из приложения Store, связанного с локальным проектом. Если вам будет предложено переустановить приложение, следуйте инструкциям, а затем запустите или отладите проект.

    Примечание.

    После выполнения этих действий можно продолжить обновление кода приложения, а затем выполнить отладку обновленного проекта на компьютере разработки без отправки новых пакетов приложений в Магазин. Чтобы получить локальную лицензию, которая будет использоваться для тестирования, необходимо скачать только версию приложения Store на компьютер разработки. После завершения тестирования необходимо отправить новые пакеты приложений в Магазин, и вы хотите приобрести в приложении или пробные возможности, доступные вашим клиентам.

Если приложение использует пространство имен Windows.ApplicationModel.Store , можно использовать класс CurrentAppSimulator в приложении для имитации сведений о лицензии во время тестирования перед отправкой приложения в Магазин. Дополнительные сведения см. в статье "Начало работы с классами CurrentApp и CurrentAppSimulator".

Примечание.

Пространство имен Windows.Services.Store не предоставляет класс, который можно использовать для имитации сведений о лицензии во время тестирования. Если вы используете пространство имен Windows.Services.Store для реализации покупок или пробных версий в приложении, необходимо опубликовать приложение в Магазине и скачать приложение на устройство разработки, чтобы использовать его лицензию для тестирования, как описано выше.

Квитанции для покупок в приложении

Пространство имен Windows.Services.Store не предоставляет API, который можно использовать для получения квитанции о транзакциях для успешных покупок в коде приложения. Это отличается от приложений, использующих пространство имен Windows.ApplicationModel.Store , которое может использовать клиентский API для получения квитанции о транзакциях.

Если вы реализуете покупки в приложении с помощью пространства имен Windows.Services.Store и хотите проверить, приобрел ли данный клиент приложение или надстройку, можно использовать запрос к продуктам в REST API коллекции Microsoft Store. Возвращаемые данные для этого метода подтверждают, имеет ли указанный клиент право на определенный продукт и предоставляет данные для транзакции, в которой пользователь приобрел продукт. API коллекции Microsoft Store использует проверку подлинности Azure AD для получения этих сведений.

Использование класса StoreContext с мост для классических приложений

Классические приложения, использующие мост для классических приложений, могут использовать класс StoreContext для реализации покупок и пробных версий в приложении. Однако если у вас есть классическое приложение Win32 или классическое приложение с дескриптором окна (HWND), связанное с платформой отрисовки (например, приложением WPF или windows App SDK), приложение должно настроить объект StoreContext , чтобы указать, какое окно приложения является окном владельца для модальных диалогов, отображаемых объектом.

Многие члены StoreContext (и члены других связанных типов, к которым обращается объект StoreContext), отображают модальное диалоговое окно пользователю для операций, связанных с Магазином, таких как покупка продукта. Если классическое приложение не настраивает объект StoreContext для указания окна владельца для модальных диалогов, этот объект вернет неточные данные или ошибки.

Чтобы настроить объект StoreContext в классическом приложении, использующее мост для классических приложений, выполните следующие действия.

Для .NET 6 или более поздней версии

Если приложение написано на C# с .NET 6 или более поздней версии, выполните следующие действия.

  1. Убедитесь, что TargetFramework для свойства в файле проекта задана определенная версия пакета SDK для Windows для доступа к API среда выполнения Windows, которая предоставляет доступ к пространству имен WinRT.Interop. Например:

    <PropertyGroup>
      <!-- You can also target other versions of the Windows SDK and .NET, e.g. "net6.0-windows10.0.19041.0" -->
      <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework>
    </PropertyGroup>
    
  2. Получите объект StoreContext с помощью метода GetDefault (или GetForUser, если приложение является многопользовательским приложением), как описано ранее в этой статье. Чтобы инициализировать диалоговое окно с указанным дескриптором окна, используйте методы WinRT.Interop.WindowNative.GetWindow.GetWindow.Interop.Initialize (см. дескриптор окна (HWND) и объекты пользовательского интерфейса WinRT, зависящие от CoreWindow.

    StoreContext context = StoreContext.GetDefault();
    // Obtain window handle by passing in pointer to the window object
    var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(windowObject);
    // Initialize the dialog using wrapper function for IInitializeWithWindow
    WinRT.Interop.InitializeWithWindow.Initialize(context, hwnd); 
    

Для более ранних версий .NET или C++

Если приложение написано с более ранней версией .NET или C++, выполните следующие действия.

  1. Выполните одно из следующих действий, чтобы разрешить приложению доступ к интерфейсу IInitializeWithWindow :

    • Если приложение написано на управляемом языке, например C# или Visual Basic (до .NET 6), объявите интерфейс IInitializeWithWindow в коде приложения с атрибутом ComImport , как показано в следующем примере C#. В этом примере предполагается, что файл кода содержит инструкцию using для пространства имен System.Runtime.InteropServices .

      [ComImport]
      [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")]
      [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
      public interface IInitializeWithWindow
      {
          void Initialize(IntPtr hwnd);
      }
      
    • Если приложение написано на языке C++, добавьте ссылку на файл заголовка shobjidl.h в коде. Этот файл заголовка содержит объявление интерфейса IInitializeWithWindow .

  2. Получите объект StoreContext с помощью метода GetDefault (или GetForUser, если приложение является мультипользовательским приложением), как описано ранее в этой статье, и приведение этого объекта к объекту IInitializeWithWindow. Затем вызовите метод IInitializeWithWindow.Initialize и передайте дескриптор окна, который вы хотите быть владельцем для любых модальных диалогов, отображаемых методами StoreContext . В следующем примере C# показано, как передать дескриптор главного окна приложения методу. См. также статью Получение дескриптора окна (HWND) и Отображение объектов пользовательского интерфейса WinRT, зависящих от CoreWindow.

    StoreContext context = StoreContext.GetDefault();
    IInitializeWithWindow initWindow = (IInitializeWithWindow)(object)context;
    initWindow.Initialize(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle);
    

Продукты, номера SKU и доступность

Каждый продукт в Магазине имеет по крайней мере один номер SKU, и каждый номер SKU имеет по крайней мере одну доступность. Эти понятия абстрагируются от большинства разработчиков в Центре партнеров, и большинство разработчиков никогда не определяют номера SKU или доступность для своих приложений или надстроек. Однако, поскольку объектная модель для продуктов Store в пространстве имен Windows.Services.Store включает номера SKU и доступность, базовое понимание этих понятий может оказаться полезным для некоторых сценариев.

Объект Description
Продукт Продукт относится к любому типу продукта, доступного в Магазине, включая приложение или надстройку.

Каждый продукт в Магазине имеет соответствующий объект StoreProduct . Этот класс предоставляет свойства, которые можно использовать для доступа к данным, таким как идентификатор магазина продукта, изображения и видео для описания Магазина и сведения о ценах. Он также предоставляет методы, которые можно использовать для покупки продукта.
Номер SKU Номер SKU — это конкретная версия продукта с собственным описанием, ценой и другими уникальными сведениями о продукте. Каждое приложение или надстройка имеет номер SKU по умолчанию. Единственный раз, когда большинство разработчиков будут иметь несколько номеров SKU для приложения, если они публикуют полную версию своего приложения и пробную версию (в каталоге Магазина каждая из этих версий — это другой номер SKU одного приложения).

Некоторые издатели могут определять собственные номера SKU. Например, крупный издатель игр может выпустить игру с одним номером SKU, который показывает зеленую кровь на рынках, которые не позволяют красной крови и другой номер SKU, который показывает красную кровь во всех других рынках. Кроме того, издатель, который продает цифровое видеоконтент, может опубликовать два номера SKU для видео, один номер SKU для версии высокого определения и другой номер SKU для стандартной версии определения.

Каждый номер SKU в Магазине имеет соответствующий объект StoreSku . Каждый StoreProduct имеет свойство Skus , которое можно использовать для доступа к номерам SKU для продукта.
Availability Доступность — это определенная версия SKU с собственными уникальными сведениями о ценах. Каждый номер SKU имеет доступность по умолчанию. У некоторых издателей есть возможность определять свои собственные доступности, чтобы ввести различные варианты цен для заданного номера SKU.

Каждая доступность в Магазине имеет соответствующий объект StoreAvailability . Каждый StoreSku имеет свойство Availabilities , которое можно использовать для доступа к доступности номера SKU. Для большинства разработчиков каждый номер SKU имеет одну доступность по умолчанию.

Идентификаторы магазина

Каждое приложение, надстройка или другой продукт в Магазине имеет связанный идентификатор Магазина (это также иногда называется идентификатором магазина продуктов). Для выполнения операции с приложением или надстройкой требуется идентификатор Магазина.

Идентификатор магазина любого продукта в Магазине — 12-символьная буквенно-числовая строка, например 9NBLGGH4R315. Существует несколько различных способов получения идентификатора Магазина для продукта в Магазине:

  • Для приложения можно получить идентификатор Магазина на странице удостоверений приложения в Центре партнеров.
  • Для надстройки можно получить идентификатор Магазина на странице обзора надстройки в Центре партнеров.
  • Для любого продукта можно также получить идентификатор Магазина программным способом с помощью свойства StoreId объекта StoreProduct, представляющего продукт.

Для продуктов с номерами SKU и доступностью номера SKU и доступности также имеют собственные идентификаторы Магазина с различными форматами.

Object Формат идентификатора хранилища
Номер SKU Идентификатор магазина для SKU имеет формат <product Store ID>/xxxx, где xxxx имеется 4-символьная буквенно-числовая строка, которая определяет номер SKU для продукта. Например, 9NBLGGH4R315/000N. Этот идентификатор возвращается свойством StoreId объекта StoreSku и иногда называется идентификатором хранилища SKU.
Availability Идентификатор магазина для доступности имеет формат <product Store ID>/xxxx/yyyyyyyyyyyy, где xxxx имеется 4-символьная альфа-числовая строка, которая определяет номер SKU для продукта и yyyyyyyyyyyy представляет собой 12-символьную буквенно-числовую строку, которая определяет доступность номера SKU. Например, 9NBLGGH4R315/000N/4KW6QZD2VN6X. Этот идентификатор возвращается свойством StoreId объекта StoreAvailability, который иногда называется идентификатором хранилища доступности.

Использование идентификаторов продуктов для надстроек в коде

Если вы хотите сделать надстройку доступной для клиентов в контексте приложения, необходимо ввести уникальный идентификатор продукта для надстройки при создании отправки надстройки в Центре партнеров. Этот идентификатор продукта можно использовать для ссылки на надстройку в коде, хотя конкретные сценарии, в которых можно использовать идентификатор продукта, зависят от пространства имен, используемого для покупок в приложении.

Примечание.

Идентификатор продукта, который вы вводите в Центре партнеров для надстройки, отличается от идентификатора магазина надстройки. Идентификатор Магазина создается Центром партнеров.

Приложения, использующие пространство имен Windows.Services.Store

Если приложение использует пространство имен Windows.Services.Store , можно использовать идентификатор продукта, чтобы легко определить StoreProduct , представляющий надстройку или StoreLicense , представляющую лицензию надстройки. Идентификатор продукта предоставляется свойствами StoreProduct.InAppOfferToken и StoreLicense.InAppOfferToken .

Примечание.

Хотя идентификатор продукта является полезным способом идентификации надстройки в коде, большинство операций в пространстве имен Windows.Services.Store используют идентификатор магазина надстройки вместо идентификатора продукта. Например, чтобы программным способом получить одну или несколько известных надстроек для приложения, передайте идентификаторы Магазина (а не идентификаторы продуктов) надстройки методу GetStoreProductsAsync . Аналогичным образом, чтобы сообщить о выполненной потребляемой надстройке, передайте идентификатор магазина надстройки (а не идентификатор продукта) в метод ReportConsumableFulfillmentAsync .

Приложения, использующие пространство имен Windows.ApplicationModel.Store

Если приложение использует пространство имен Windows.ApplicationModel.Store , необходимо использовать идентификатор продукта, назначенный надстройке в Центре партнеров для большинства операций. Например: