Отправка ECommerce-событий на Android

В AppMetrica нет возможности сегментировать ECommerce-события на «тестовые» и «не тестовые». Если для отладки покупок вы используете основной API key, то тестовые события будут попадать в общую статистику. Поэтому, чтобы отладить отправку ECommerce-событий, используйте отправку статистики на дополнительный API key с помощью репортера.

Подробнее о работе репортера в разделе Примеры использования.

  1. Шаг 1. Создайте тестовое приложение в AppMetrica
  2. Шаг 2. Настройте отправку ECommerce-событий на тестовый API key
  3. Шаг 3. Проверьте отчет тестового приложения
  4. Шаг 4. Настройте отправку ECommerce на основной API Key

Шаг 1. Создайте тестовое приложение в AppMetrica

Заполните параметры приложения: ссылка в магазине приложений (если приложение еще не опубликовано — оставьте поле пустым), название, категория, часовой пояс для построения отчетов.

Чтобы добавить еще одно приложение, нажмите кнопку Добавить приложение в выпадающем списке в интерфейсе AppMetrica.

Шаг 2. Настройте отправку ECommerce-событий на тестовый API key

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

Ниже приведены примеры отправки конкретных типов событий (Java):

Открытие страницы
Map<String, String> payload = new HashMap<>();
payload.put("configuration", "landscape");
payload.put("full_screen", "true"); 
// Creating a screen object.
  ECommerceScreen screen = new ECommerceScreen()
	.setCategoriesPath(Arrays.asList( // Optional.
		"Акции", 
		"Красная цена" 
	)) 
	.setName("ProductCardActivity") // Optional.
	.setSearchQuery("даниссимо кленовый сироп") // Optional.
	.setPayload(payload); // Optional.
  ECommerceEvent showScreenEvent = ECommerceEvent.showScreenEvent(screen);
// Sending an e-commerce event.
  YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(showScreenEvent);
Просмотр карточки товара
Map<String, String> payload = new HashMap<>();
payload.put("configuration", "landscape");
payload.put("full_screen", "true"); 
// Creating a screen object.
  ECommerceScreen screen = new ECommerceScreen()
	.setCategoriesPath(Arrays.asList( // Optional.
		"Акции", 
		"Красная цена" 
	)) 
	.setName("ProductCardActivity") // Optional.
	.setSearchQuery("даниссимо кленовый сироп") // Optional.
	.setPayload(payload); // Optional.
// Creating an actualPrice object.
  ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD"))
	.setInternalComponents(Arrays.asList( // Optional. 
	new ECommerceAmount(30_570_000, "wood"), 
  new ECommerceAmount(26.89, "iron"), 
  new ECommerceAmount(new BigDecimal(5.1), "gold") 
	));
// Creating an originalPrice object.
  ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD"))
	.setInternalComponents(Arrays.asList( // Optional.
	new ECommerceAmount(30_590_000, "wood"),
  new ECommerceAmount(26.92, "iron"),
  new ECommerceAmount(new BigDecimal(5.5), "gold") 
	));
// Creating a product object. 
  ECommerceProduct product = new ECommerceProduct("779213")
	.setActualPrice(actualPrice) // Optional.
	.setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional.
	.setPayload(payload) // Optional.
	.setOriginalPrice(originalPrice) // Optional.
	.setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional.
	.setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional.
                      ECommerceEvent showProductCardEvent = ECommerceEvent.showProductCardEvent(product, screen);
// Sending an e-commerce event.
  YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(showProductCardEvent);
Скопировано
Просмотр страницы товара
Map<String, String> payload = new HashMap<>();
payload.put("configuration", "landscape");
payload.put("full_screen", "true"); 
// Creating a screen object.
  ECommerceScreen screen = new ECommerceScreen()
	.setCategoriesPath(Arrays.asList( // Optional.
		"Акции", 
		"Красная цена" 
	)) 
	.setName("ProductCardActivity") // Optional.
	.setSearchQuery("даниссимо кленовый сироп") // Optional.
	.setPayload(payload); // Optional.

// Creating an actualPrice object.
  ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD"))
	.setInternalComponents(Arrays.asList( // Optional. 
	new ECommerceAmount(30_570_000, "wood"), 
  new ECommerceAmount(26.89, "iron"), 
  new ECommerceAmount(new BigDecimal(5.1), "gold") 
	));
// Creating an originalPrice object.
  ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD"))
	.setInternalComponents(Arrays.asList( // Optional.
	new ECommerceAmount(30_590_000, "wood"),
  new ECommerceAmount(26.92, "iron"),
  new ECommerceAmount(new BigDecimal(5.5), "gold") 
	));
// Creating a product object. 
  ECommerceProduct product = new ECommerceProduct("779213")
	.setActualPrice(actualPrice) // Optional.
	.setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional.
	.setPayload(payload) // Optional.
	.setOriginalPrice(originalPrice) // Optional.
	.setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional.
	.setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional.
// Creating a referrer object.
  ECommerceReferrer referrer = new ECommerceReferrer()
	.setType("button") // Optional.
	.setIdentifier("76890") // Optional.
	.setScreen(screen); // Optional.
                      ECommerceEvent showProductDetailsEvent = ECommerceEvent.showProductDetailsEvent(product, referrer); // Referrer is optional — can be null.
// Sending an e-commerce event.
  YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(showProductDetailsEvent);
Скопировано
Добавление или удаление товара из корзины
Map<String, String> payload = new HashMap<>();
payload.put("configuration", "landscape");
payload.put("full_screen", "true"); 
// Creating a screen object.
  ECommerceScreen screen = new ECommerceScreen()
	.setCategoriesPath(Arrays.asList( // Optional.
		"Акции", 
		"Красная цена" 
	)) 
	.setName("ProductCardActivity") // Optional.
	.setSearchQuery("даниссимо кленовый сироп") // Optional.
	.setPayload(payload); // Optional.
// Creating an actualPrice object.
  ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD"))
	.setInternalComponents(Arrays.asList( // Optional. 
	new ECommerceAmount(30_570_000, "wood"), 
  new ECommerceAmount(26.89, "iron"), 
  new ECommerceAmount(new BigDecimal(5.1), "gold") 
	));
// Creating an originalPrice object.
  ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD"))
	.setInternalComponents(Arrays.asList( // Optional.
	new ECommerceAmount(30_590_000, "wood"),
  new ECommerceAmount(26.92, "iron"),
  new ECommerceAmount(new BigDecimal(5.5), "gold") 
	));
// Creating a product object. 
  ECommerceProduct product = new ECommerceProduct("779213")
	.setActualPrice(actualPrice) // Optional.
	.setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional.
	.setPayload(payload) // Optional.
	.setOriginalPrice(originalPrice) // Optional.
	.setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional.
	.setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional.
// Creating a referrer object.
  ECommerceReferrer referrer = new ECommerceReferrer()
	.setType("button") // Optional.
	.setIdentifier("76890") // Optional.
	.setScreen(screen); // Optional.
// Creating a cartItem object. 
  ECommerceCartItem addedItems1 = new ECommerceCartItem(product, actualPrice, 1.0)
	.setReferrer(referrer); // Optional.
                      ECommerceEvent addCartItemEvent = ECommerceEvent.addCartItemEvent(addedItems1);
                      // Sending an e-commerce event.
  YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(addCartItemEvent);
                      ECommerceEvent removeCartItemEvent = ECommerceEvent.removeCartItemEvent(addedItems1);
// Sending an e-commerce event.
  YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(removeCartItemEvent);
Скопировано
Начало оформления и завершение покупки
Map<String, String> payload = new HashMap<>();
payload.put("configuration", "landscape");
payload.put("full_screen", "true"); 
// Creating a screen object.
  ECommerceScreen screen = new ECommerceScreen()
	.setCategoriesPath(Arrays.asList( // Optional.
		"Акции", 
		"Красная цена" 
	)) 
	.setName("ProductCardActivity") // Optional.
	.setSearchQuery("даниссимо кленовый сироп") // Optional.
	.setPayload(payload); // Optional.
// Creating an actualPrice object.
  ECommercePrice actualPrice = new ECommercePrice(new ECommerceAmount(4.53, "USD"))
	.setInternalComponents(Arrays.asList( // Optional. 
	new ECommerceAmount(30_570_000, "wood"), 
  new ECommerceAmount(26.89, "iron"), 
  new ECommerceAmount(new BigDecimal(5.1), "gold") 
	));
// Creating an originalPrice object.
  ECommercePrice originalPrice = new ECommercePrice(new ECommerceAmount(5.78, "USD"))
	.setInternalComponents(Arrays.asList( // Optional.
	new ECommerceAmount(30_590_000, "wood"),
  new ECommerceAmount(26.92, "iron"),
  new ECommerceAmount(new BigDecimal(5.5), "gold") 
	));
// Creating a product object. 
  ECommerceProduct product = new ECommerceProduct("779213")
	.setActualPrice(actualPrice) // Optional.
	.setPromocodes(Arrays.asList("BT79IYX", "UT5412EP")) // Optional.
	.setPayload(payload) // Optional.
	.setOriginalPrice(originalPrice) // Optional.
	.setName("Продукт творожный «Даниссимо» 5.9%, 130 г.") // Optional.
	.setCategoriesPath(Arrays.asList("Продукты", "Молочные продукты", "Йогурты")); // Optional.
// Creating a referrer object.
  ECommerceReferrer referrer = new ECommerceReferrer()
	.setType("button") // Optional.
	.setIdentifier("76890") // Optional.
	.setScreen(screen); // Optional.
// Creating a cartItem object. 
  ECommerceCartItem addedItems1 = new ECommerceCartItem(product, actualPrice, 1.0)
	.setReferrer(referrer); // Optional.
// Creating an order object.
ECommerceOrder order = new ECommerceOrder("88528768", Arrays.asList(addedItems1))
        .setPayload(payload); // Optional.
                      ECommerceEvent beginCheckoutEvent = ECommerceEvent.beginCheckoutEvent(order);
// Sending an e-commerce event.
  YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(beginCheckoutEvent);
                      ECommerceEvent purchaseEvent = ECommerceEvent.purchaseEvent(order);
// Sending an e-commerce event.
  YandexMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(purchaseEvent);
Скопировано

Шаг 3. Проверьте отчет тестового приложения

Совершите тестовые покупки в приложении. Через некоторое время в интерфейсе AppMetrica проверьте отчет «Анализ покупок». Убедитесь, что ECommerce-события отображаются в отчете.

Подробнее об отчете в разделе Анализ покупок.

Шаг 4. Настройте отправку ECommerce на основной API Key

После успешного тестирования настройте отправку ECommerce-событий на основной API key.

Чтобы отправить объект ECommerceEvent на основной API key, используйте метод YandexMetrica.reportECommerce(@NonNull ECommerceEvent event).

...
// Sending an e-commerce event.
YandexMetrica.reportECommerce(ecommerceEvent);
Скопировано

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