no moneyback
This commit is contained in:
parent
14db8b4a05
commit
6077a17a83
8 changed files with 21 additions and 33 deletions
|
|
@ -228,7 +228,6 @@ export default function LearnPage() {
|
||||||
{ question: t('learnPage.faqPricing1Q'), answer: t('learnPage.faqPricing1A') },
|
{ question: t('learnPage.faqPricing1Q'), answer: t('learnPage.faqPricing1A') },
|
||||||
{ question: t('learnPage.faqPricing2Q'), answer: t('learnPage.faqPricing2A') },
|
{ question: t('learnPage.faqPricing2Q'), answer: t('learnPage.faqPricing2A') },
|
||||||
{ question: t('learnPage.faqPricing3Q'), answer: t('learnPage.faqPricing3A') },
|
{ question: t('learnPage.faqPricing3Q'), answer: t('learnPage.faqPricing3A') },
|
||||||
{ question: t('learnPage.faqPricing4Q'), answer: t('learnPage.faqPricing4A') },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -340,11 +340,11 @@ export default function PricingPage({
|
||||||
{license.error}
|
{license.error}
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
{isFree && (
|
||||||
<p className="text-center text-xs text-warm-400 dark:text-warm-500 mt-2">
|
<p className="text-center text-xs text-warm-400 dark:text-warm-500 mt-2">
|
||||||
{isFree
|
{t('pricingPage.noCreditCard')}
|
||||||
? t('pricingPage.noCreditCard')
|
|
||||||
: t('pricingPage.moneyBackGuarantee')}
|
|
||||||
</p>
|
</p>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
) : isFilled ? (
|
) : isFilled ? (
|
||||||
<div className="mt-auto px-5 py-3 bg-warm-100 dark:bg-warm-700 text-warm-400 dark:text-warm-500 rounded-lg font-semibold text-center">
|
<div className="mt-auto px-5 py-3 bg-warm-100 dark:bg-warm-700 text-warm-400 dark:text-warm-500 rounded-lg font-semibold text-center">
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ const de: Translations = {
|
||||||
free: 'Kostenlos',
|
free: 'Kostenlos',
|
||||||
once: '/einmalig',
|
once: '/einmalig',
|
||||||
freeForEarly: 'Kostenlos für Frühnutzer. Keine Kreditkarte erforderlich.',
|
freeForEarly: 'Kostenlos für Frühnutzer. Keine Kreditkarte erforderlich.',
|
||||||
oneTimePayment: 'Einmalzahlung. Lebenslanger Zugang. 30 Tage Geld-zurück-Garantie.',
|
oneTimePayment: 'Einmalzahlung. Lebenslanger Zugang.',
|
||||||
redirecting: 'Weiterleitung...',
|
redirecting: 'Weiterleitung...',
|
||||||
claimFreeAccess: 'Kostenlosen Zugang sichern',
|
claimFreeAccess: 'Kostenlosen Zugang sichern',
|
||||||
upgradeFor: 'Upgrade für {{price}}',
|
upgradeFor: 'Upgrade für {{price}}',
|
||||||
|
|
@ -382,7 +382,7 @@ const de: Translations = {
|
||||||
getStarted: 'Jetzt starten',
|
getStarted: 'Jetzt starten',
|
||||||
getStartedPrice: 'Jetzt starten — {{price}}',
|
getStartedPrice: 'Jetzt starten — {{price}}',
|
||||||
noCreditCard: 'Keine Kreditkarte erforderlich',
|
noCreditCard: 'Keine Kreditkarte erforderlich',
|
||||||
moneyBackGuarantee: '30 Tage Geld-zurück-Garantie',
|
|
||||||
soldOut: 'Ausverkauft',
|
soldOut: 'Ausverkauft',
|
||||||
upcoming: 'Demnächst',
|
upcoming: 'Demnächst',
|
||||||
failedToLoad: 'Preise konnten nicht geladen werden. Bitte später erneut versuchen.',
|
failedToLoad: 'Preise konnten nicht geladen werden. Bitte später erneut versuchen.',
|
||||||
|
|
@ -562,9 +562,7 @@ const de: Translations = {
|
||||||
faqPricing3Q: 'Was kann ich mit der kostenlosen Version nutzen?',
|
faqPricing3Q: 'Was kann ich mit der kostenlosen Version nutzen?',
|
||||||
faqPricing3A:
|
faqPricing3A:
|
||||||
'Kostenlose Nutzer können alle Funktionen im Demogebiet erkunden (Innenstadt London, ungefähr Zonen 1 bis 2). Für den Zugang zu Daten für den Rest Englands benötigen Sie den lebenslangen Zugang.',
|
'Kostenlose Nutzer können alle Funktionen im Demogebiet erkunden (Innenstadt London, ungefähr Zonen 1 bis 2). Für den Zugang zu Daten für den Rest Englands benötigen Sie den lebenslangen Zugang.',
|
||||||
faqPricing4Q: 'Kann ich eine Rückerstattung erhalten?',
|
|
||||||
faqPricing4A:
|
|
||||||
'Selbstverständlich. Wir bieten eine 30-Tage-Geld-zurück-Garantie. Wenn Sie nicht zufrieden sind, schreiben Sie innerhalb von 30 Tagen an support@perfect-postcode.co.uk für eine vollständige Rückerstattung.',
|
|
||||||
// FAQ items — Tips and Tricks
|
// FAQ items — Tips and Tricks
|
||||||
faqTips1Q: 'Wie nutze ich den KI-Filter, anstatt Filter einzeln hinzuzufügen?',
|
faqTips1Q: 'Wie nutze ich den KI-Filter, anstatt Filter einzeln hinzuzufügen?',
|
||||||
faqTips1A:
|
faqTips1A:
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ const en = {
|
||||||
free: 'Free',
|
free: 'Free',
|
||||||
once: '/once',
|
once: '/once',
|
||||||
freeForEarly: 'Free for early adopters. No credit card required.',
|
freeForEarly: 'Free for early adopters. No credit card required.',
|
||||||
oneTimePayment: 'One-time payment. Lifetime access. 30-day money-back guarantee.',
|
oneTimePayment: 'One-time payment. Lifetime access.',
|
||||||
redirecting: 'Redirecting...',
|
redirecting: 'Redirecting...',
|
||||||
claimFreeAccess: 'Claim free access',
|
claimFreeAccess: 'Claim free access',
|
||||||
upgradeFor: 'Upgrade for {{price}}',
|
upgradeFor: 'Upgrade for {{price}}',
|
||||||
|
|
@ -378,7 +378,7 @@ const en = {
|
||||||
getStarted: 'Get started',
|
getStarted: 'Get started',
|
||||||
getStartedPrice: 'Get started - {{price}}',
|
getStartedPrice: 'Get started - {{price}}',
|
||||||
noCreditCard: 'No credit card required',
|
noCreditCard: 'No credit card required',
|
||||||
moneyBackGuarantee: '30-day money-back guarantee',
|
|
||||||
soldOut: 'Sold out',
|
soldOut: 'Sold out',
|
||||||
upcoming: 'Upcoming',
|
upcoming: 'Upcoming',
|
||||||
failedToLoad: 'Failed to load pricing. Please try again later.',
|
failedToLoad: 'Failed to load pricing. Please try again later.',
|
||||||
|
|
@ -551,9 +551,7 @@ const en = {
|
||||||
faqPricing3Q: 'What can I access on the free tier?',
|
faqPricing3Q: 'What can I access on the free tier?',
|
||||||
faqPricing3A:
|
faqPricing3A:
|
||||||
'Free users can explore all features within the demo area (inner London, roughly zones 1 to 2). To access data for the rest of England, you need lifetime access.',
|
'Free users can explore all features within the demo area (inner London, roughly zones 1 to 2). To access data for the rest of England, you need lifetime access.',
|
||||||
faqPricing4Q: 'Can I get a refund?',
|
|
||||||
faqPricing4A:
|
|
||||||
'Absolutely. We offer a 30-day money-back guarantee. If you’re not satisfied, email support@perfect-postcode.co.uk within 30 days for a full refund.',
|
|
||||||
// FAQ items — Tips and Tricks
|
// FAQ items — Tips and Tricks
|
||||||
faqTips1Q: 'How do I use the AI filter instead of adding filters one by one?',
|
faqTips1Q: 'How do I use the AI filter instead of adding filters one by one?',
|
||||||
faqTips1A:
|
faqTips1A:
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ const fr: Translations = {
|
||||||
free: 'Gratuit',
|
free: 'Gratuit',
|
||||||
once: '/unique',
|
once: '/unique',
|
||||||
freeForEarly: 'Gratuit pour les premiers utilisateurs. Aucune carte bancaire requise.',
|
freeForEarly: 'Gratuit pour les premiers utilisateurs. Aucune carte bancaire requise.',
|
||||||
oneTimePayment: 'Paiement unique. Accès à vie. Garantie satisfait ou remboursé sous 30 jours.',
|
oneTimePayment: 'Paiement unique. Accès à vie.',
|
||||||
redirecting: 'Redirection...',
|
redirecting: 'Redirection...',
|
||||||
claimFreeAccess: "Réclamer l’accès gratuit",
|
claimFreeAccess: "Réclamer l’accès gratuit",
|
||||||
upgradeFor: 'Passer à la version complète pour {{price}}',
|
upgradeFor: 'Passer à la version complète pour {{price}}',
|
||||||
|
|
@ -387,7 +387,7 @@ const fr: Translations = {
|
||||||
getStarted: 'Commencer',
|
getStarted: 'Commencer',
|
||||||
getStartedPrice: 'Commencer - {{price}}',
|
getStartedPrice: 'Commencer - {{price}}',
|
||||||
noCreditCard: 'Aucune carte bancaire requise',
|
noCreditCard: 'Aucune carte bancaire requise',
|
||||||
moneyBackGuarantee: 'Garantie satisfait ou remboursé sous 30 jours',
|
|
||||||
soldOut: 'Épuisé',
|
soldOut: 'Épuisé',
|
||||||
upcoming: 'À venir',
|
upcoming: 'À venir',
|
||||||
failedToLoad: 'Échec du chargement des tarifs. Veuillez réessayer plus tard.',
|
failedToLoad: 'Échec du chargement des tarifs. Veuillez réessayer plus tard.',
|
||||||
|
|
@ -565,9 +565,7 @@ const fr: Translations = {
|
||||||
faqPricing3Q: 'Que puis-je faire avec la version gratuite ?',
|
faqPricing3Q: 'Que puis-je faire avec la version gratuite ?',
|
||||||
faqPricing3A:
|
faqPricing3A:
|
||||||
'Les utilisateurs gratuits peuvent explorer toutes les fonctionnalités dans la zone de démonstration (centre de Londres, approximativement zones 1 à 2). Pour accéder aux données du reste de l’Angleterre, il faut l’accès à vie.',
|
'Les utilisateurs gratuits peuvent explorer toutes les fonctionnalités dans la zone de démonstration (centre de Londres, approximativement zones 1 à 2). Pour accéder aux données du reste de l’Angleterre, il faut l’accès à vie.',
|
||||||
faqPricing4Q: 'Puis-je obtenir un remboursement ?',
|
|
||||||
faqPricing4A:
|
|
||||||
'Absolument. Nous offrons une garantie satisfait ou remboursé sous 30 jours. Si vous n’êtes pas satisfait, envoyez un e-mail à support@perfect-postcode.co.uk dans les 30 jours pour un remboursement intégral.',
|
|
||||||
// FAQ items — Tips and Tricks
|
// FAQ items — Tips and Tricks
|
||||||
faqTips1Q: 'Comment utiliser le filtre IA au lieu d’ajouter les filtres un par un ?',
|
faqTips1Q: 'Comment utiliser le filtre IA au lieu d’ajouter les filtres un par un ?',
|
||||||
faqTips1A:
|
faqTips1A:
|
||||||
|
|
|
||||||
|
|
@ -95,8 +95,7 @@ const hu: Translations = {
|
||||||
free: 'Ingyenes',
|
free: 'Ingyenes',
|
||||||
once: '/egyszeri',
|
once: '/egyszeri',
|
||||||
freeForEarly: 'Ingyenes a korai felhasználóknak. Nem szükséges bankkartya.',
|
freeForEarly: 'Ingyenes a korai felhasználóknak. Nem szükséges bankkartya.',
|
||||||
oneTimePayment:
|
oneTimePayment: 'Egyszeri fizetés. Élethosszig tartó hozzáférés.',
|
||||||
'Egyszeri fizetés. Élethosszig tartó hozzáférés. 30 napos pénzvisszatérítési garancia.',
|
|
||||||
redirecting: 'Átirányítás...',
|
redirecting: 'Átirányítás...',
|
||||||
claimFreeAccess: 'Ingyenes hozzáférés igénylése',
|
claimFreeAccess: 'Ingyenes hozzáférés igénylése',
|
||||||
upgradeFor: 'Frissítés {{price}} áron',
|
upgradeFor: 'Frissítés {{price}} áron',
|
||||||
|
|
@ -382,7 +381,7 @@ const hu: Translations = {
|
||||||
getStarted: 'Kezdjük el',
|
getStarted: 'Kezdjük el',
|
||||||
getStartedPrice: 'Kezdjük el – {{price}}',
|
getStartedPrice: 'Kezdjük el – {{price}}',
|
||||||
noCreditCard: 'Nem szükséges bankkartya',
|
noCreditCard: 'Nem szükséges bankkartya',
|
||||||
moneyBackGuarantee: '30 napos pénzvisszatérítési garancia',
|
|
||||||
soldOut: 'Elfogyott',
|
soldOut: 'Elfogyott',
|
||||||
upcoming: 'Következő',
|
upcoming: 'Következő',
|
||||||
failedToLoad: 'Nem sikerült betölteni az árakat. Kérjük, próbáld újra később.',
|
failedToLoad: 'Nem sikerült betölteni az árakat. Kérjük, próbáld újra később.',
|
||||||
|
|
@ -557,9 +556,7 @@ const hu: Translations = {
|
||||||
faqPricing3Q: 'Mit érhetek el az ingyenes szinten?',
|
faqPricing3Q: 'Mit érhetek el az ingyenes szinten?',
|
||||||
faqPricing3A:
|
faqPricing3A:
|
||||||
'Az ingyenes felhasználók a demó területen (Belső-London, megközelítőleg az 1-2. zóna) fedezhetik fel az összes funkciót. Anglia többi részének adataihoz élethosszig tartó hozzáférés szükséges.',
|
'Az ingyenes felhasználók a demó területen (Belső-London, megközelítőleg az 1-2. zóna) fedezhetik fel az összes funkciót. Anglia többi részének adataihoz élethosszig tartó hozzáférés szükséges.',
|
||||||
faqPricing4Q: 'Kérhetek visszatérítést?',
|
|
||||||
faqPricing4A:
|
|
||||||
'Természetesen. 30 napos pénzvisszatérítési garanciát kínálunk. Ha nem vagy elégedett, írj a support@perfect-postcode.co.uk címre 30 napon belül a teljes visszatérítésért.',
|
|
||||||
// FAQ items — Tips and Tricks
|
// FAQ items — Tips and Tricks
|
||||||
faqTips1Q: 'Hogyan használjam az AI szűrőt a szűrők egyenkénti hozzáadása helyett?',
|
faqTips1Q: 'Hogyan használjam az AI szűrőt a szűrők egyenkénti hozzáadása helyett?',
|
||||||
faqTips1A:
|
faqTips1A:
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ const zh: Translations = {
|
||||||
free: '免费',
|
free: '免费',
|
||||||
once: '/一次性',
|
once: '/一次性',
|
||||||
freeForEarly: '早期用户免费。无需信用卡。',
|
freeForEarly: '早期用户免费。无需信用卡。',
|
||||||
oneTimePayment: '一次性付款。终身访问。30天无条件退款。',
|
oneTimePayment: '一次性付款。终身访问。',
|
||||||
redirecting: '跳转中...',
|
redirecting: '跳转中...',
|
||||||
claimFreeAccess: '领取免费访问权限',
|
claimFreeAccess: '领取免费访问权限',
|
||||||
upgradeFor: '升级仅需 {{price}}',
|
upgradeFor: '升级仅需 {{price}}',
|
||||||
|
|
@ -375,7 +375,7 @@ const zh: Translations = {
|
||||||
getStarted: '立即开始',
|
getStarted: '立即开始',
|
||||||
getStartedPrice: '立即开始 - {{price}}',
|
getStartedPrice: '立即开始 - {{price}}',
|
||||||
noCreditCard: '无需信用卡',
|
noCreditCard: '无需信用卡',
|
||||||
moneyBackGuarantee: '30天无条件退款保证',
|
|
||||||
soldOut: '已售罄',
|
soldOut: '已售罄',
|
||||||
upcoming: '即将开放',
|
upcoming: '即将开放',
|
||||||
failedToLoad: '加载价格信息失败,请稍后重试。',
|
failedToLoad: '加载价格信息失败,请稍后重试。',
|
||||||
|
|
@ -541,9 +541,7 @@ const zh: Translations = {
|
||||||
faqPricing3Q: '免费版能用哪些功能?',
|
faqPricing3Q: '免费版能用哪些功能?',
|
||||||
faqPricing3A:
|
faqPricing3A:
|
||||||
'免费用户可以在演示区域(伦敦市中心,大约 1 至 2 区)内探索所有功能。要访问英格兰其他地区的数据,需要获取终身访问权限。',
|
'免费用户可以在演示区域(伦敦市中心,大约 1 至 2 区)内探索所有功能。要访问英格兰其他地区的数据,需要获取终身访问权限。',
|
||||||
faqPricing4Q: '可以退款吗?',
|
|
||||||
faqPricing4A:
|
|
||||||
'当然可以。我们提供 30 天退款保证。如果您不满意,请在 30 天内发送邮件至 support@perfect-postcode.co.uk 申请全额退款。',
|
|
||||||
// FAQ items — Tips and Tricks
|
// FAQ items — Tips and Tricks
|
||||||
faqTips1Q: '如何使用 AI 筛选功能,而不是逐个添加筛选条件?',
|
faqTips1Q: '如何使用 AI 筛选功能,而不是逐个添加筛选条件?',
|
||||||
faqTips1A:
|
faqTips1A:
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ use crate::pocketbase::get_superuser_token;
|
||||||
use crate::state::{AppState, SharedState};
|
use crate::state::{AppState, SharedState};
|
||||||
|
|
||||||
/// Pricing tiers: (cumulative user cap, price in pence).
|
/// Pricing tiers: (cumulative user cap, price in pence).
|
||||||
const TIERS: &[(u64, u64)] = &[(10, 99), (15, 999), (30, 2999), (50, 4999)];
|
const TIERS: &[(u64, u64)] = &[(5, 99), (15, 999), (30, 2999), (50, 4999)];
|
||||||
const FINAL_PRICE_PENCE: u64 = 9999;
|
const FINAL_PRICE_PENCE: u64 = 9999;
|
||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue