6.4 KiB
6.4 KiB
Payment Template Variables
Доступные переменные для подстановки
В текстах экранов TrialPayment и SpecialOffer можно использовать следующие переменные через синтаксис {{variableName}}.
Основные переменные
| Переменная | Описание | Пример значения |
|---|---|---|
{{trialPrice}} |
Форматированная цена триала | $1.00, €5.00 |
{{billingPrice}} |
Форматированная цена подписки | $14.99, €49.99 |
{{trialPeriod}} |
Период триала с интервалом | 7 days, 1 week, 2 weeks |
{{billingPeriod}} |
Период списания с интервалом | 1 week, 1 month, 3 months |
{{trialPeriodHyphen}} |
Период триала через дефис | 7-day, 1-week |
Дополнительные переменные
| Переменная | Описание | Пример значения | Шаблон |
|---|---|---|---|
{{oldPrice}} |
Старая цена (для скидки) | $14.99 |
TrialPayment |
{{discountPercent}} |
Процент скидки | 94 |
TrialPayment, SpecialOffer |
{{oldTrialPrice}} |
Старая цена триала | $14.99 |
SpecialOffer |
{{oldTrialPeriod}} |
Старый период триала | 7 days |
SpecialOffer |
Где использовать
TrialPayment экран
Переменные работают во ВСЕХ текстовых полях экрана, включая:
tryForDays.title
{
"text": "Try it for {{trialPeriod}}!"
}
tryForDays.textList.items
{
"items": [
{ "text": "Start your {{trialPeriodHyphen}} trial for just {{trialPrice}}." },
{ "text": "Then only {{billingPrice}}/{{billingPeriod}} for full access." }
]
}
totalPrice.priceContainer.price
{
"text": "{{trialPrice}}"
}
totalPrice.priceContainer.oldPrice
{
"text": "{{oldPrice}}"
}
totalPrice.priceContainer.discount
{
"text": "{{discountPercent}}% discount applied"
}
SpecialOffer экран
Переменные работают во всех текстовых полях:
text.title
{
"text": "SPECIAL {{discountPercent}}% DISCOUNT"
}
text.subtitle
{
"text": "Only {{trialPrice}} for {{trialPeriod}}"
}
text.description
{
"trialPrice": { "text": "{{trialPrice}}" },
"text": { "text": "for {{trialPeriod}}" },
"oldTrialPrice": { "text": "{{oldTrialPrice}}" }
}
Policy текст (хардкоженный)
Policy текст автоматически подставляет значения без использования {{}}:
You also acknowledge that your {trialPeriodHyphen} introductory plan to Wit Lab LLC,
billed at {formattedTrialPrice}, will automatically renew at {formattedBillingPrice}
every {billingPeriodText} unless canceled before the end of the trial period.
Этот текст НЕ редактируется через админку - значения подставляются автоматически из выбранного variant.
Примеры использования
Пример 1: Try For Days секция
{
"tryForDays": {
"title": {
"text": "Try it for {{trialPeriod}}!"
},
"textList": {
"items": [
{ "text": "Receive a hand-drawn sketch of your soulmate." },
{ "text": "Reveal the path with the guide." },
{ "text": "Talk to live experts and get guidance." },
{ "text": "Start your {{trialPeriodHyphen}} trial for just {{trialPrice}}." },
{ "text": "Then {{billingPrice}} every {{billingPeriod}} for full access." },
{ "text": "Cancel anytime—just 24 hours before renewal." }
]
}
}
}
Результат (для variant с trialPrice=100, price=1499, trialInterval=7, billingInterval=1):
- "Try it for 7 days!"
- "Start your 7-day trial for just $1.00."
- "Then $14.99 every 1 week for full access."
Пример 2: Total Price секция
{
"totalPrice": {
"priceContainer": {
"price": { "text": "{{trialPrice}}" },
"oldPrice": { "text": "{{oldPrice}}" },
"discount": { "text": "{{discountPercent}}% discount applied" }
}
}
}
Результат:
- Price: "$1.00"
- Old Price: "$14.99"
- Discount: "94% discount applied"
Форматирование цен
Цены автоматически форматируются с учетом валюты:
- USD:
$1.00 - EUR:
€1.00 - GBP:
£1.00
Форматирование периодов
Периоды форматируются на английском:
trialPeriod="DAY",interval=1→"1 day"trialPeriod="DAY",interval=7→"7 days"trialPeriod="WEEK",interval=1→"1 week"trialPeriod="MONTH",interval=3→"3 months"
С дефисом (trialPeriodHyphen):
"1-day","7-day","1-week","3-month"
Важные замечания
- Регистр имеет значение: используйте точное написание
{{trialPrice}}, а не{{TrialPrice}} - Пробелы не важны:
{{ trialPrice }}тоже сработает - Несуществующие переменные: если переменная не найдена, она остается как есть в тексте
- Пустые значения: если значение не определено (например,
discountPercentдля variant без скидки), подставляется пустая строка
Откуда берутся значения
Все значения загружаются из Payment Placement API:
GET /api/session/funnel/:funnelId/payment/:paymentId
И зависят от выбранного variant:
- В Trial Choice пользователь выбирает variant → его ID сохраняется
- В Trial Payment используется выбранный variant (или первый по умолчанию)
- В Special Offer всегда используется первый variant из
main_secret_discountplacement