189 lines
6.4 KiB
Markdown
189 lines
6.4 KiB
Markdown
# 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`
|
||
```json
|
||
{
|
||
"text": "Try it for {{trialPeriod}}!"
|
||
}
|
||
```
|
||
|
||
#### `tryForDays.textList.items`
|
||
```json
|
||
{
|
||
"items": [
|
||
{ "text": "Start your {{trialPeriodHyphen}} trial for just {{trialPrice}}." },
|
||
{ "text": "Then only {{billingPrice}}/{{billingPeriod}} for full access." }
|
||
]
|
||
}
|
||
```
|
||
|
||
#### `totalPrice.priceContainer.price`
|
||
```json
|
||
{
|
||
"text": "{{trialPrice}}"
|
||
}
|
||
```
|
||
|
||
#### `totalPrice.priceContainer.oldPrice`
|
||
```json
|
||
{
|
||
"text": "{{oldPrice}}"
|
||
}
|
||
```
|
||
|
||
#### `totalPrice.priceContainer.discount`
|
||
```json
|
||
{
|
||
"text": "{{discountPercent}}% discount applied"
|
||
}
|
||
```
|
||
|
||
### SpecialOffer экран
|
||
|
||
Переменные работают во всех текстовых полях:
|
||
|
||
#### `text.title`
|
||
```json
|
||
{
|
||
"text": "SPECIAL {{discountPercent}}% DISCOUNT"
|
||
}
|
||
```
|
||
|
||
#### `text.subtitle`
|
||
```json
|
||
{
|
||
"text": "Only {{trialPrice}} for {{trialPeriod}}"
|
||
}
|
||
```
|
||
|
||
#### `text.description`
|
||
```json
|
||
{
|
||
"trialPrice": { "text": "{{trialPrice}}" },
|
||
"text": { "text": "for {{trialPeriod}}" },
|
||
"oldTrialPrice": { "text": "{{oldTrialPrice}}" }
|
||
}
|
||
```
|
||
|
||
## Policy текст (хардкоженный)
|
||
|
||
Policy текст автоматически подставляет значения **без** использования `{{}}`:
|
||
|
||
```tsx
|
||
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 секция
|
||
```json
|
||
{
|
||
"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 секция
|
||
```json
|
||
{
|
||
"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"`
|
||
|
||
## Важные замечания
|
||
|
||
1. **Регистр имеет значение**: используйте точное написание `{{trialPrice}}`, а не `{{TrialPrice}}`
|
||
2. **Пробелы не важны**: `{{ trialPrice }}` тоже сработает
|
||
3. **Несуществующие переменные**: если переменная не найдена, она остается как есть в тексте
|
||
4. **Пустые значения**: если значение не определено (например, `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_discount` placement
|