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

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

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

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

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

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

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

Ниже приведены примеры отправки конкретных типов событий.

Открытие страницы
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.
  AppMetrica.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.
  AppMetrica.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.
  AppMetrica.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.
  AppMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(addCartItemEvent);
                      ECommerceEvent removeCartItemEvent = ECommerceEvent.removeCartItemEvent(addedItems1);
// Sending an e-commerce event.
  AppMetrica.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.
  AppMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(beginCheckoutEvent);
                      ECommerceEvent purchaseEvent = ECommerceEvent.purchaseEvent(order);
// Sending an e-commerce event.
  AppMetrica.getReporter(getApplicationContext(), "Testing API key").reportECommerce(purchaseEvent);
Открытие страницы
val payload = mapOf("configuration" to "landscape", "full_screen" to "true")
// Creating a screen object.
val screen = ECommerceScreen().apply { 
	categoriesPath = listOf("Акции", "Красная цена") // Optional.
	name = "ProductCardActivity" // Optional.
	searchQuery = "даниссимо кленовый сироп" // Optional.
	this.payload = payload // Optional.
	}
val showScreenEvent = ECommerceEvent.showScreenEvent(screen)
// Sending an e-commerce event.
AppMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(showScreenEvent)
Просмотр карточки товара
val payload = mapOf("configuration" to "landscape", "full_screen" to "true")
// Creating a screen object.
val screen = ECommerceScreen().apply { 
	categoriesPath = listOf("Акции", "Красная цена") // Optional.
	name = "ProductCardActivity" // Optional.
	searchQuery = "даниссимо кленовый сироп" // Optional.
	this.payload = payload // Optional.
	}// Creating an actualPrice object.
val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30570000, "wood"), 
			ECommerceAmount(26.89, "iron"),
			ECommerceAmount(BigDecimal(5.1), "gold") 
		) 
	}// Creating an originalPrice object.
val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30590000, "wood"),
			ECommerceAmount(26.92, "iron"),
			ECommerceAmount(BigDecimal(5.5), "gold") 
		) 
	}// Creating a product object.
val product = ECommerceProduct("779213")
	.apply {
		this.actualPrice = actualPrice // Optional.
		this.originalPrice = originalPrice // Optional.
		promocodes = listOf("BT79IYX", "UT5412EP") // Optional.
		name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional.
		categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional.
		this.payload = payload // Optional. 
	} 

val showProductCardEvent = ECommerceEvent.showProductCardEvent(product, screen)
// Sending an e-commerce event.
AppMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(showProductCardEvent)
Просмотр страницы товара
val payload = mapOf("configuration" to "landscape", "full_screen" to "true")
// Creating a screen object.
val screen = ECommerceScreen().apply { 
	categoriesPath = listOf("Акции", "Красная цена") // Optional.
	name = "ProductCardActivity" // Optional.
	searchQuery = "даниссимо кленовый сироп" // Optional.
	this.payload = payload // Optional.
	}// Creating an actualPrice object.
val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30570000, "wood"), 
			ECommerceAmount(26.89, "iron"),
			ECommerceAmount(BigDecimal(5.1), "gold") 
		) 
	}// Creating an originalPrice object.
val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30590000, "wood"),
			ECommerceAmount(26.92, "iron"),
			ECommerceAmount(BigDecimal(5.5), "gold") 
		) 
	}// Creating a product object.
val product = ECommerceProduct("779213")
	.apply {
		this.actualPrice = actualPrice // Optional.
		this.originalPrice = originalPrice // Optional.
		promocodes = listOf("BT79IYX", "UT5412EP") // Optional.
		name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional.
		categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional.
		this.payload = payload // Optional. 
	} 
// Creating a referrer object.
val referrer = ECommerceReferrer()
	.apply { 
		type = "button" // Optional.
		identifier = "76890" // Optional.
		this.screen = screen // Optional. 
	}
val showProductDetailsEvent = ECommerceEvent.showProductDetailsEvent(product, referrer) // Referrer is optional - can be null.
// Sending an e-commerce event.
AppMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(showProductDetailsEvent)
Добавление или удаление товара из корзины
val payload = mapOf("configuration" to "landscape", "full_screen" to "true")
// Creating a screen object.
val screen = ECommerceScreen().apply { 
	categoriesPath = listOf("Акции", "Красная цена") // Optional.
	name = "ProductCardActivity" // Optional.
	searchQuery = "даниссимо кленовый сироп" // Optional.
	this.payload = payload // Optional.
	}// Creating an actualPrice object.
val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30570000, "wood"), 
			ECommerceAmount(26.89, "iron"),
			ECommerceAmount(BigDecimal(5.1), "gold") 
		) 
	}// Creating an originalPrice object.
val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30590000, "wood"),
			ECommerceAmount(26.92, "iron"),
			ECommerceAmount(BigDecimal(5.5), "gold") 
		) 
	}// Creating a product object.
val product = ECommerceProduct("779213")
	.apply {
		this.actualPrice = actualPrice // Optional.
		this.originalPrice = originalPrice // Optional.
		promocodes = listOf("BT79IYX", "UT5412EP") // Optional.
		name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional.
		categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional.
		this.payload = payload // Optional. 
	} 
// Creating a referrer object.
val referrer = ECommerceReferrer()
	.apply { 
		type = "button" // Optional.
		identifier = "76890" // Optional.
		this.screen = screen // Optional. 
	}// Creating a cartItem object.
val addedItems1 = ECommerceCartItem(product, actualPrice, 1.0)
	.apply {
		this.referrer = referrer // Optional.
	}
val addCartItemEvent = ECommerceEvent.addCartItemEvent(addedItems1)
// Sending an e-commerce event.
AppMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(addCartItemEvent)

val removeCartItemEvent = ECommerceEvent.removeCartItemEvent(addedItems1)
// Sending an e-commerce event.
AppMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(removeCartItemEvent)
Начало оформления и завершение покупки
val payload = mapOf("configuration" to "landscape", "full_screen" to "true")
// Creating a screen object.
val screen = ECommerceScreen().apply { 
	categoriesPath = listOf("Акции", "Красная цена") // Optional.
	name = "ProductCardActivity" // Optional.
	searchQuery = "даниссимо кленовый сироп" // Optional.
	this.payload = payload // Optional.
	}// Creating an actualPrice object.
val actualPrice = ECommercePrice(ECommerceAmount(4.53, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30570000, "wood"), 
			ECommerceAmount(26.89, "iron"),
			ECommerceAmount(BigDecimal(5.1), "gold") 
		) 
	}// Creating an originalPrice object.
val originalPrice = ECommercePrice(ECommerceAmount(5.78, "USD"))
	.apply {
		internalComponents = listOf( // Optional.
			ECommerceAmount(30590000, "wood"),
			ECommerceAmount(26.92, "iron"),
			ECommerceAmount(BigDecimal(5.5), "gold") 
		) 
	}// Creating a product object.
val product = ECommerceProduct("779213")
	.apply {
		this.actualPrice = actualPrice // Optional.
		this.originalPrice = originalPrice // Optional.
		promocodes = listOf("BT79IYX", "UT5412EP") // Optional.
		name = "Продукт творожный «Даниссимо» 5.9%, 130 г." // Optional.
		categoriesPath = listOf("Продукты", "Молочные продукты", "Йогурты") // Optional.
		this.payload = payload // Optional. 
	} 
// Creating a referrer object.
val referrer = ECommerceReferrer()
	.apply { 
		type = "button" // Optional.
		identifier = "76890" // Optional.
		this.screen = screen // Optional. 
	}// Creating a cartItem object.
val addedItems1 = ECommerceCartItem(product, actualPrice, 1.0)
	.apply {
		this.referrer = referrer // Optional.
	}
// Creating an order object.
val order = ECommerceOrder("88528768", listOf(addedItems1))
        .apply { 
            this.payload = payload // Optional. 
        }
val beginCheckoutEvent = ECommerceEvent.beginCheckoutEvent(order)
// Sending an e-commerce event.
AppMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(beginCheckoutEvent)

val purchaseEvent = ECommerceEvent.purchaseEvent(order)
// Sending an e-commerce event.
AppMetrica.getReporter(applicationContext, "Testing API key").reportECommerce(purchaseEvent)

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

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

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

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

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

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

// ...
// Sending an e-commerce event.
AppMetrica.reportECommerce(ecommerceEvent);
// ...
// Sending an e-commerce event.
AppMetrica.reportECommerce(ecommerceEvent)

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

Написать в службу поддержки