Загрузка платежей
Для загрузки платежей на сервер MyTracker используйте следующие методы:
customRevenue
и customRevenueBatch
для передачи универсального дохода
googlePlayProductTransaction
, googlePlaySubscriptionTransaction
и googlePlaySubscriptionToken
для передачи покупок и подписок в приложениях Google Play
appStoreProductTransaction
, appStoreSubscriptionTransaction
и appStoreSubscriptionReceipt
для передачи покупок и подписок в приложениях App Store
Платежи Google Play
MyTracker может отслеживать in-app покупки и подписки в приложениях Google Play автоматически
(подробнее см. раздел Трекинг дохода).
Но если автоматического трекинга недостаточно, или с ним возникли проблемы,
вы можете загрузить недостающие платежи самостоятельно с помощью S2S API.
Рассмотрим несколько примеров использования методов S2S API:
Пример 1 — Загрузить исторические данные по покупкам
Если в MyTracker нет данных о совершённых в приложении покупках, например
когда покупки сделаны до подключения MyTracker SDK,
используйте метод googlePlayProductTransaction.
Пример 2 — Загрузить исторические данные по подпискам
Если в MyTracker нет данных по подпискам,
например когда подписки оформлены до подключения MyTracker SDK:
- Загрузите исторические данные с помощью метода googlePlaySubscriptionTransaction.
- Включите трекинг будущих продлений с помощью метода googlePlaySubscriptionToken.
Пример 3 — Отслеживать действующие подписки
Если MyTracker не отслеживает подписку автоматически,
например когда подписка оформлена до подключения MyTracker SDK:
- Загрузите исторические данные с помощью метода googlePlaySubscriptionTransaction.
- Включите трекинг продлений с помощью метода googlePlaySubscriptionToken.
Пример 4 — Загрузить данные после настройки верификации
Если вы не сразу передали ключ верификации в MyTracker
и первые платежи не прошли валидацию:
- Убедитесь, что вы загрузили Google Play credentials в MyTracker.
- Загрузите недостающие данные по покупкам через googlePlayProductTransaction.
- Загрузите недостающие данные по подпискам через googlePlaySubscriptionTransaction.
- Включите трекинг подписок с помощью метода googlePlaySubscriptionToken.
Пример 5 — Восстановить данные после сбоя трекинга
Если часть данных по покупкам или подпискам потеряна из-за сбитой настройки трекинга,
например в результате неудачного обновления приложения:
- Загрузите недостающие данные по покупкам через googlePlayProductTransaction.
- Загрузите недостающие данные по подпискам через googlePlaySubscriptionTransaction.
- Включите трекинг оформленных за это время подписок с помощью метода googlePlaySubscriptionToken.
Повторная передача данных или загрузка уже отслеженных ранее транзакций
не приведёт к ошибке,
так как на стороне MyTracker сработает дедупликация
googlePlayProductTransaction
Используйте метод googlePlayProductTransaction
, чтобы загрузить сведения
о покупках в приложении Google Play.
Чтобы верифицировать транзакцию используйте один из следующих параметров:
- token — MyTracker отправит запрос на подтверждение покупки в Google Play API.
Если платёж корректен, MyTracker отнесёт покупку к
верифицированным транзакциям,
если нет, то транзакция будет сохранена как неверифицированная.
- isVerified — MyTracker отнесёт покупку к верифицированным транзакциям по умолчанию.
Если не передан ни token
, ни isVerified
или переданы сразу оба эти параметра, то запрос обработан не будет.
Загружать исторические данные по покупкам следует в хронологическом порядке,
иначе сведения по первым платежам будут искажены
End-point: https://tracker-s2s.my.com/v1/googlePlayProductTransaction/?idApp=XXX
Обязательные параметры: идентификатор пользователя customUserId
и/или один из идентификаторов устройства: instanceId
, gaid
, androidId
, appSetId
(транзакции будут привязаны к пользователю и/или к устройству), время события eventTimestamp
,
а также параметры из таблицы ниже.
Название параметра |
Описание |
Тип |
Пример |
orderId* |
Идентификатор транзакции
|
Строка |
"orderId": "1234-1234-1234-12345"
|
productId* |
Идентификатор продукта в терминах Google Play (SKU)
|
Строка |
"productId": "com.some.thing.inapp1"
|
token |
Токен, предоставленный устройству при покупке продукта.
Может передаваться вместо параметра isVerified .
|
Строка |
"token": "ofjkingojelmkmedpgfkfelj"
|
currency* |
Валюта платежа
|
Строка |
"currency": "USD"
|
revenue* |
Сумма платежа в указанной валюте
|
Строка |
"revenue": "4.9"
|
isVerified |
Флаг для определения статуса верификации платежа.
Может передаваться вместо параметра token .
|
Целое число |
"isVerified": 1
|
* — обязательный параметр.
googlePlaySubscriptionTransaction
Используйте метод googlePlaySubscriptionTransaction
, чтобы загрузить сведения
об отдельных транзакциях по подпискам Google Play.
Загружать исторические данные по подпискам следует в хронологическом порядке,
иначе сведения по первым платежам будут искажены
End-point: https://tracker-s2s.my.com/v1/googlePlaySubscriptionTransaction/?idApp=XXX
Обязательные параметры: идентификатор пользователя customUserId
и/или один из идентификаторов устройства: instanceId
, gaid
, androidId
, appSetId
(транзакции будут привязаны к пользователю и/или к устройству), время события eventTimestamp
, а также параметры из таблицы ниже.
Название параметра |
Описание |
Тип |
Пример |
orderId* |
Идентификатор транзакции
|
Строка |
"orderId": "1234-1234-1234-12345"
|
priceCurrencyCode* |
Валюта платежа
|
Строка |
"priceCurrencyCode": "USD"
|
priceAmountMicros* |
Цена, в микроединицах,
где 1000000 микроединиц представляют собой одну денежную единицу.
Например, если цена подписки составляет 1,99 евро, то
priceAmountMicros составляет 1990000
|
Число |
"priceAmountMicros": "1990000"
|
subscriptionId* |
Идентификатор подписки в терминах Google Play
|
Строка |
"subscriptionId": "com.some.thing.monthly001"
|
paymentState |
Статус платежа:
1 — получен
2 — триал
По умолчанию: 1
|
Строка |
"paymentState": "1"
|
isIntroductory |
Льготный период:
0 — платёж по обычной цене
1 — платёж по льготной цене
По умолчанию: 0
|
Целое число |
"isIntroductory": 1
|
startTimeMillis |
Время начала подписки, в миллисекундах
|
Целое число |
"startTimeMillis": 1693242344000
|
expiryTimeMillis |
Время окончания подписки после совершения данной транзакции, в миллисекундах
|
Целое число |
"expiryTimeMillis": 1693242344000
|
* — обязательный параметр.
googlePlaySubscriptionToken
Используйте метод googlePlaySubscriptionToken
,
чтобы загрузить сведения о действующей подписке.
По переданному идентификатору подписки,
MyTracker сможет определить последнее продление
и в дальнейшем отслеживать продления автоматически.
Все будущие платежи по подписке будут
привязаны к одному и тому же устройству и пользователю,
которые вы укажите в методе
Рекомендуем передавать параметр subscriptionPeriod
—
период действия подписки. C помощью этого параметра MyTracker сможет
рассчитать время последнего продления,
и в будущем определять время продлений даже в случае задержки данных со стороны Google Play.
Без subscriptionPeriod
последнее продление и все дальнейшие будут записываться
на момент поступления данных из Google Play.
End-point: https://tracker-s2s.my.com/v1/googlePlaySubscriptionToken/?idApp=XXX
Обязательные параметры: идентификатор пользователя customUserId
и/или один из идентификаторов устройства: instanceId
, gaid
, androidId
, appSetId
(транзакции будут привязаны к пользователю и/или к устройству), а также параметры из таблицы ниже.
Название параметра |
Описание |
Тип |
Пример |
orderId* |
Идентификатор транзакции
|
Строка |
"orderId": "GPA.1234-1234-1234-12345"
|
subscriptionId* |
Идентификатор подписки в терминах Google Play
|
Строка |
"subscriptionId": "com.some.thing.monthly001"
|
token* |
Токен, предоставленный устройству пользователя при покупке подписки
|
Строка |
"token": "ofjkingojelmkmedpgfkfelj"
|
subscriptionPeriod |
Период подписки в формате ISO 8601, например:
P1W — одна неделя
P1M — один месяц
P3M — три месяца
P6M — шесть месяцев
P1Y — один год
|
Строка |
"subscriptionPeriod": "P6M"
|
* — обязательный параметр.
Платежи App Store
MyTracker может отслеживать in-app покупки и подписки в приложениях App Store автоматически
(подробнее см. раздел Трекинг дохода).
Но если автоматического трекинга недостаточно, или с ним возникли проблемы,
вы можете загрузить недостающие платежи самостоятельно с помощью S2S API.
Рассмотрим несколько примеров использования методов S2S API:
Пример 1 — Загрузить исторические данные по покупкам
Если в MyTracker нет данных о совершённых в приложении покупках,
например когда покупки сделаны до подключения MyTracker SDK,
используйте метод
appStoreProductTransaction.
Пример 2 — Загрузить исторические данные по подпискам
Если в MyTracker нет данных по подпискам, например,
когда подписки оформлены до подключения MyTracker SDK:
- Загрузите исторические данные с помощью метода
appStoreSubscriptionTransaction.
- Передайте чек по действующим подпискам с помощью метода appStoreSubscriptionReceipt.
Пример 3 — Отслеживать действующие подписки
Если MyTracker не отслеживает действующую подписку автоматически,
например когда подписка оформлена до подключения MyTracker SDK,
загрузите сведения по подписке с помощью метода
appStoreSubscriptionReceipt.
Пример 4 — Загрузить данные после настройки верификации
Если вы не сразу передали ключ верификации в MyTracker
и в результате пропустили часть продлений по подпискам:
- Убедитесь, что вы загрузили App Store credentials в MyTracker.
- Загрузите недостающие данные по подпискам через appStoreSubscriptionTransaction.
- Включите трекинг подписок с помощью метода appStoreSubscriptionReceipt.
Пример 5 — Восстановить данные после сбоя трекинга
Если часть данных по in-app покупкам или подпискам потеряна из-за сбитой настройки трекинга,
например в результате неудачного обновления приложения:
- Загрузите недостающие данные по покупкам через appStoreProductTransaction.
- Загрузите недостающие данные по подпискам через appStoreSubscriptionTransaction.
- Включите трекинг оформленных за это время подписок с помощью метода appStoreSubscriptionReceipt.
Повторная передача данных или загрузка уже отслеженных ранее транзакций
не приведёт к ошибке,
так как на стороне MyTracker сработает дедупликация
appStoreProductTransaction
Метод appStoreProductTransaction
в стадии бета-тестирования.
При возникновении вопросов, пожалуйста, обратитесь в нашу
службу поддержки
Используйте метод appStoreProductTransaction
, чтобы загрузить сведения
о покупках в приложении App Store.
Все загруженные платежи будут сохранены в MyTracker как верифицированные транзакции.
Загружать исторические данные по покупкам следует в хронологическом порядке,
иначе сведения по первым платежам будут искажены
End-point: https://tracker-s2s.my.com/v1/appStoreProductTransaction/?idApp=XXX
Обязательные параметры: идентификатор пользователя customUserId
и/или один из идентификаторов устройства: instanceId
, idfa
, iosVendorId
(транзакции будут привязаны к пользователю и/или к устройству), время события eventTimestamp
, а также параметры из таблицы ниже.
Название параметра |
Описание |
Тип |
Пример |
transactionId* |
Идентификатор транзакции
|
Строка |
"transactionId": "1234567890098765"
|
productId* |
Идентификатор продукта в терминах App Store.
См. документацию Apple
|
Строка |
"productId": "com.some.thing.inapp1"
|
price* |
Цена товара, где в качестве разделителя должна быть точка
|
Дробное число |
"price": "1.99"
|
currency* |
Валюта платежа
|
Строка |
"currency": "USD"
|
quantity |
Количество приобретённого товара
По умолчанию: 1
|
Целое число |
"quantity": 1
|
* — обязательный параметр.
appStoreSubscriptionTransaction
Метод appStoreSubscriptionTransaction
в стадии бета-тестирования.
При возникновении вопросов, пожалуйста, обратитесь в нашу
службу поддержки
Используйте метод appStoreSubscriptionTransaction
, чтобы загрузить сведения
об отдельных транзакциях по подпискам App Store.
Загружать исторические данные по подпискам следует в хронологическом порядке,
иначе сведения по первым платежам будут искажены
End-point: https://tracker-s2s.my.com/v1/appStoreSubscriptionTransaction/?idApp=XXX
Обязательные параметры: идентификатор пользователя customUserId
и/или один из идентификаторов устройства: instanceId
, idfa
, iosVendorId
(транзакции будут привязаны к пользователю и/или к устройству), время события eventTimestamp
, а также параметры из таблицы ниже.
Название параметра |
Описание |
Тип |
Пример |
transactionId* |
Идентификатор транзакции
|
Строка |
"transactionId": "1234567890098765"
|
productId* |
Идентификатор продукта в терминах App Store.
См. документацию Apple
|
Строка |
"productId": "com.some.thing.monthly001"
|
price* |
Цена товара, где в качестве разделителя должна быть точка
|
Дробное число |
"price": "1.99"
|
currency* |
Валюта платежа
|
Строка |
"currency": "USD"
|
transactionIdOriginal* |
Идентификатор оригинальной транзакции
(первой транзакции в подписке).
|
Строка |
"transactionIdOriginal": "1234567890098765"
|
isTrial |
Триальная подписка:
0 — нет
1 — да
По умолчанию: 0
|
Целое число |
"isTrial": 1
|
isIntroductory |
Льготный период:
0 — платёж по обычной цене
1 — платёж по льготной цене
По умолчанию: 0
|
Целое число |
"isIntroductory": 1
|
tsPaymentOriginal |
Время начала подписки
|
Целое число |
"tsPaymentOriginal": 1643453453
|
tsPaymentExpires |
Время окончания подписки после совершения данной транзакции
|
Целое число |
"tsPaymentExpires": 1643453453
|
quantity |
Количество приобретённого товара
По умолчанию: 1
|
Целое число |
"quantity": 1
|
* — обязательный параметр.
appStoreSubscriptionReceipt
Метод appStoreSubscriptionReceipt
в стадии бета-тестирования.
При возникновении вопросов, пожалуйста, обратитесь в нашу
службу поддержки
Используйте метод appStoreSubscriptionReceipt
,
чтобы загрузить сведения о действующей подписке.
По переданному чеку MyTracker отправит запрос на сервер App Store,
загрузит все прошлые транзакции по подписке
и будет отслеживать последующие продления автоматически.
Все транзакции по чеку будут привязаны
к одному и тому же устройству
и/или пользователю, которые вы укажите в методе
End-point: https://tracker-s2s.my.com/v1/appStoreSubscriptionReceipt/?idApp=XXX
Обязательные параметры: идентификатор пользователя customUserId
и/или один из идентификаторов устройства:instanceId
, idfa
, iosVendorId
(транзакции будут привязаны к пользователю и/или к устройству), а также параметры из таблицы ниже.
Название параметра |
Описание |
Тип |
Пример |
transactionId* |
Идентификатор транзакции
|
Строка |
"transactionId": "1234567890098765"
|
productId* |
Идентификатор продукта в терминах App Store.
См. документацию Apple
|
Строка |
"productId": "com.abc.def"
|
receipt* |
Чек платежа в формате base64
|
Строка |
"receipt": "aaabbcbcac=="
|
price* |
Цена товара, где в качестве разделителя должна быть точка
|
Дробное число |
"price": "9.99"
|
currency* |
Валюта платежа
|
Строка |
"currency": "USD"
|
* — обязательный параметр.
Универсальный доход
Универсальный доход — это любые финансовые поступления,
которые не могут быть переданы в MyTracker
как доход от рекламы, in-app платёж или платёж по подписке.
Например, это могут быть офлайн-платежи или покупки через сервис VK Pay.
То есть любой доход, для которого пока не предусмотрен специальный механизм сбора данных.
Передать информацию по универсальным доходам можно только через S2S API
с помощью методов customRevenue
и customRevenueBatch
.
customRevenue
Используйте метод customRevenue
, чтобы загрузить универсальный платёж.
End-point: https://tracker-s2s.my.com/v1/customRevenue/?idApp=XXX
Обязательные параметры: идентификатор пользователя customUserId
и/или один из идентификаторов устройства: instanceId
, lvid
, gaid
, androidId
, idfa
, iosVendorId
(транзакции будут привязаны к пользователю и/или к устройству), eventTimestamp
, а также параметры из таблицы ниже.
Название параметра |
Описание |
Тип |
Пример |
idTransaction* |
Идентификатор транзакции, уникальный в рамках
проекта
|
Строка, минимальная длина 1, максимальная длина 255 |
"idTransaction": "order1234"
|
currency* |
Код валют транзакции в стандарте ISO-4217
|
Строка, длина 3 символа |
"currency": "USD"
|
total* |
Сумма платежа
|
Дробное число, минимальное значение 0. |
"total": 1.99
|
* — обязательный параметр.
customRevenueBatch
Используйте метод customRevenueBatch
для пакетной передачи данных по доходу.
Метод аналогичен customRevenue
, но позволяет передать сразу несколько платёжных транзакций.
End-point: https://tracker-s2s.my.com/v1/customRevenueBatch/?idApp=XXX
Обязательные параметры:
Название параметра |
Описание |
Тип |
Пример |
|
Один параметр без названия.
Это массив, через который передают параметры из метода customRevenue .
Если хотя бы в одном наборе параметров нарушены правила валидации,
сервер вернет ошибку
|
Массив. Максимальный размер 20 |
[
{"customUserId": "1111", "lvid":"00000000000000000000000000000000", "idTransaction": "order1", "currency":"USD", "total": 1.99},
{"customUserId": "2222", "lvid":"00000000000000000000000000000000", "idTransaction": "order2", "currency":"USD", "total": 10.99}
]
|
Параметры
Все параметры передаются в теле POST запроса в формате json.
Ограничение на максимальный размер загружаемых данных — 10Кб.
Название параметра |
Описание |
Тип |
Пример |
Общие |
eventTimestamp |
Время события |
Число, минимальное 946674000, максимальное значение 4294967295.
По умолчанию берётся timestamp получения события
|
"eventTimestamp":"1577191920" |
customUserId |
Идентификатор пользователя в вашем приложении |
Строка, максимальный размер 1024 |
"customUserId":"1234" |
ipv4 |
ipv4-адрес |
Строка, максимальный размер 15 |
"ipv4":"125.125.125.125" |
ipv6 |
ipv6-адрес |
Строка, максимальный размер 45 |
"ipv6":"2001:0db8:85a3:0000:0000:8a2e:0370:7334" |
idGender |
Пол |
Число, возможные варианты:
- 0 — неизвестно
- 1 — мужчина
- 2 — женщина
|
"idGender":"1" |
age |
Возраст |
Число, максимальное значение 128 |
"age":"38" |
connectionType |
Тип соединения |
Число, возможные варианты:
- 0 — неизвестно
- 1 — мобильная
- 2 — wi-fi
По умолчанию 0 |
"connectionType":"1" |
bluetoothEnabled |
Bluetooth |
Число, возможные варианты:
- 0 — неизвестно
- 1 — включён
- 2 — выключен
По умолчанию 0 |
"bluetoothEnabled":"2" |
Для мобильных платформ |
instanceId |
S2S идентификатор устройства |
Строка, кол-во символов 36 |
"instanceId":"00000000-0000-0000-0000-000000000000" |
adTrackingEnabled |
Разрешение отслеживания |
Число, возможные варианты:
- 1 — включено
- 0 — выключено
По умолчанию 1 |
"adTrackingEnabled":"0" |
iOS |
idfa |
Рекламный идентификатор iOS |
Строка, кол-во символов 36 |
"idfa":"00000000-0000-0000-0000-000000000000" |
iosVendorId |
Идентификатор производителя IOS |
Строка, кол-во символов 36 |
"iosVendorId":"00000000-0000-0000-0000-000000000000" |
Android |
gaid |
Рекламный идентификатор Android |
Строка, кол-во символов 36 |
"gaid":"00000000-0000-0000-0000-000000000000" |
appSetId |
Идентификатор Android,
уникальный в рамках аккаунта разработчика Google Play |
Строка, кол-во символов 36 |
"appSetId":"00000000-0000-0000-0000-000000000000" |
androidId |
Идентификатор Android |
Строка, кол-во символов 16 |
"androidId":"000000000000000" |
Для веб-платформ |
lvid |
S2S идентификатор устройства |
Строка, кол-во символов 32 |
"lvid":"00000000000000000000000000000000" |
adBlocker |
Блокировщик рекламы |
Число, возможные варианты:
По умолчанию 0 |
"adBlocker":"0" |
userAgent |
User-Agent |
Строка, максимальный размер 2048 |
"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" |
Пример запроса
curl https://tracker-s2s.my.com/v1/customRevenue/?idApp=666 \
–k –X POST --header "Authorization: aaaaaAAAaaa01aaaaaaa1aaAAA11a" \
-d '{"customUserId": "1", "idTransaction": "order1234",
"currency": "USD", "total": 1.99, "eventTimestamp": "1580213208",
"instanceId": "00000000-0000-0000-0000-000000000000"}'
Коды ответов
Код |
Текст |
Описание |
200 |
{"message": "ОK"} |
Запрос был успешно обработан |
400 |
{"error": "Bad Request"} |
Ошибка запроса, параметры не прошли валидацию |
403 |
{"error": "Forbidden"} |
Токен не прошёл валидацию, либо не подходит для приложения |
400 |
{"error": "Empty post data"} |
Пустое тело запроса |
400 |
{"error": "Bad json"} |
Передан битый json в теле запроса |
400 |
{"error": "Bad api version"} |
Неподдерживаемая версия API |
400 |
{"error": "Platform is not supported in this method. Please, use googlePlay* methods for Android and appStore* methods for iOS"} |
Метод не поддерживает эту платформу. Пожалуйста, используйте методы googlePlay* для Android и методы appStore* для iOS |
404 |
{"error": "Method not found"} |
Метод API не найден |
500 |
{"error": "Internal Server Error"} |
Внутренняя ошибка API. Нужно повторить запрос позже |