Короткий ответ
Если ваша карта была действительно отклонена, отказ поступил от вашего банка через Stripe, а не от Whizi, поэтому решение: другая карта или звонок в банк. О том, почему банки вообще блокируют платежи за подписки на ИИ и как определить, какая из шести причин коснулась именно вас, рассказано в статье как оплачивать ИИ, если ваша карта отклонена. У Whizi нигде нет сообщения об отклонённой карте. Данные карты вводятся на размещённой у Stripe странице оформления заказа, которая находится вне кодовой базы Whizi, а в обработчике вебхуков Stripe у Whizi нет сообщения об отклонённом платеже, которое можно было бы вам показать.
Поэтому если вы увидели ошибку с формулировкой от Whizi, это был не отказ. Это была одна из строк ниже, и у каждой из них своя причина и своё решение.
Три ошибки, которые проще всего принять за отказ:
| Что вы увидели | Что это значит | Что делать |
|---|---|---|
A $1 intro trial has already been used with this payment method. | Эта карта уже использовала вводный пробный период | Оформите подписку по обычной цене или используйте карту, которая ещё не использовала пробный период. Повторная попытка не поможет |
Pricing is temporarily unavailable. | Whizi не удалось прочитать таблицу цен из Stripe | Подождите и попробуйте позже. На вашей стороне это никак не исправить |
Failed to create Stripe checkout session. | Запрос на оформление заказа не выполнился, а бэкенд не передал сообщение | Повторите попытку один раз. Если ошибка повторяется, обратитесь в поддержку |
Все ошибки, которые бэкенд Whizi возвращает при оформлении заказа
Эти ошибки приходят с сервера, поэтому у них есть HTTP статус и код ошибки, которые поддержка может сопоставить в сетевой трассировке. Тело каждой ошибки бэкенда представляет собой JSON вида {"error": {"code": "...", "message": "..."}}, поэтому код всегда идёт рядом с сообщением. Строки ниже упорядочены по HTTP статусу.
| Сообщение | HTTP | Код | Когда возникает |
|---|---|---|---|
A plan and billing cycle are required. | 400 | invalid_checkout_request | Тело запроса на оформление заказа не удалось разобрать |
Invalid plan or billing cycle. | 400 | invalid_plan_or_cycle | План или цикл не соответствуют ни одной известной цене Stripe |
No subscription item found for the active subscription. | 400 | subscription_item_missing | Смена плана на месте выполнялась для подписки без элемента подписки |
The supplied discount must be an active 100% promotion code or coupon ID. | 400 | invalid_discount | Переданный код не является действующим промокодом на 100 процентов или ID купона |
Temporary email addresses are not allowed. Please use a permanent email address. | 400 | disposable_email_blocked | Почта аккаунта, в который вы вошли, находится в списке временных доменов |
A $1 intro trial has already been used with this payment method. | 403 | duplicate_trial_payment_method | Отпечаток карты уже использовал вводный пробный период |
User not found. | 404 | not_found | Маршрут оформления заказа не смог прочитать вашу запись пользователя |
Pricing is temporarily unavailable. | 503 | pricing_unavailable | Не удалось прочитать локализованную таблицу цен из Stripe |
Что делать с каждой из них. Отказу из-за вводного пробного периода посвящён отдельный раздел ниже. Pricing is temporarily unavailable. возникает на стороне сервера: это HTTP 503, который возвращается, когда локализованную таблицу цен не удаётся прочитать из Stripe, и в вашем аккаунте нет настройки, которая на это влияет. Failed to create Stripe checkout session. вовсе не является сообщением сервера, поэтому в ней и не названа причина: это собственный резервный текст сайта, который показывается, когда запрос на оформление заказа не выполнился, а бэкенд не передал сообщение. В обоих случаях: подождите и повторите попытку.
A plan and billing cycle are required. и Invalid plan or billing cycle. означают одно и то же: запрос не содержал план, который распознаёт сервер. Начните заново со страницы цен и выберите там план и переключатель ежемесячной или годовой оплаты, вместо того чтобы использовать старую или изменённую ссылку на оформление заказа.
User not found. означает, что ваша сессия указывает на запись пользователя, которую сервер не может прочитать. Выйдите из аккаунта, войдите снова и заново начните оформление заказа.
No subscription item found for the active subscription. возникает при смене плана, а не при первой покупке, и через интерфейс её не исправить. Обратитесь в поддержку.
Ошибки, которые сайт показывает ещё до открытия оформления заказа
Эти ошибки возникают в браузере, а не на сервере, поэтому у них нет HTTP кода. В целом все они означают одно: что-то не сработало, пока Whizi готовила ваш аккаунт для передачи данных в Stripe, поэтому попытки списания не было вовсе.
| Сообщение | Когда возникает |
|---|---|
Failed to create Stripe checkout session. | Запрос на оформление заказа не выполнился, а бэкенд не передал сообщение |
Could not open checkout. Please try again. | Запрос на оформление заказа в модальном окне апгрейда завершился с ошибкой без сообщения |
Authentication failed. Please sign in again. | Запрос токена ничего не вернул перед оформлением заказа |
Failed to save user before checkout. | Запрос на сохранение пользователя перед оформлением заказа завершился неудачно |
Could not prepare your account for checkout. | Странице цен не удалось сохранить пользователя перед оформлением заказа |
Missing user or Stripe customer details. | На момент оформления заказа отсутствовал ID пользователя |
Checkout response did not include a Stripe URL. | Оформление заказа прошло успешно, но ответ не содержал ни URL, ни ID подписки |
Something went wrong while starting your trial. Please try again. | Общая ошибка запуска пробного периода на странице цен |
При любой ошибке из этого списка выйдите из аккаунта, войдите снова и заново начните оформление заказа со страницы цен. Это устраняет случаи, когда запрос токена ничего не вернул перед оформлением заказа, о чём и сообщает Authentication failed. Please sign in again.
Checkout response did not include a Stripe URL. является исключением: она означает, что запрос выполнился успешно. Прежде чем пытаться оплатить снова, откройте настройки аккаунта и проверьте, нет ли там уже подписки.
Ещё две ошибки появляются на страницах входа и регистрации, когда вы сначала выбираете план, а затем проходите авторизацию: Signed in, but checkout could not start. Please choose your plan again. и Your account was created, but checkout could not start. Please sign in and choose your plan again. Обе означают, что часть с аккаунтом сработала, а не сработала только передача данных. Ваш аккаунт существует. Перейдите на страницу цен и выберите план заново.
Ещё одна причина загадочного сбоя: если повторять оформление заказа много раз подряд, можно сработать ограничитель частоты запросов, который возвращает HTTP 429 и Too many requests. Please wait and try again. Каждый запрос на аккаунте, независимо от маршрута, засчитывается в лимит 30 запросов в минуту. Подождите минуту, вместо того чтобы нажимать снова.
Отказ из-за вводного пробного периода, который не устранит повторная попытка
A $1 intro trial has already been used with this payment method. относится к HTTP 403 с кодом duplicate_trial_payment_method. Это единственная ошибка оформления заказа на этой странице, которую повторная попытка не устранит никогда.
Проверка привязана к карте, а не к аккаунту: отказ возвращается, когда отпечаток карты уже использовал вводный пробный период.
Одна деталь, если вы ищете эту ошибку: в строке действительно написано "$1", хотя сам вводный платёж составляет $0.99 в USD. Ищите по точной формулировке, потому что именно форму "$1" отправляет сервер.
У вас есть два варианта: оформить подписку на нужный план по стандартной цене или оплатить способом, который ещё не использовал пробный период.
Цены планов, условия пробного периода и то, что происходит при переходе на платную подписку, описаны в статье оплата, пробный период и отмена подписки.
Платёж прошёл, но аккаунт всё ещё на бесплатном плане
Списанные деньги с карты в сочетании с аккаунтом, который по-прежнему ведёт себя как бесплатный, это другой симптом, отличный от сбоя оформления заказа, и у него есть отдельная страница.
Прочитайте статью вы оплатили, но функции плана всё ещё заблокированы: там перечислены строки, которые появляются в этом состоянии, способ проверить, на каком аккаунте числится подписка, и что отправить в поддержку.
Что Whizi не может вам сообщить
Три пробела, чтобы вы не тратили время на поиск ответов, которых просто нет.
Whizi никогда не видит, почему банк отклонил карту, потому что этот обмен данными происходит на размещённой у Stripe странице оформления заказа, вне кодовой базы Whizi. Проверка обоих репозиториев Whizi не нашла ни одной строки вида "карта отклонена" или "платёж отклонён", а в обработчике вебхуков Stripe нет сообщения об отклонённом платеже. Поэтому в вашем аккаунте не хранится причина отказа, нет кнопки повтора, и Whizi нечего переопределять. Причина остаётся у вашего банка.
У Whizi также нет сообщения о неудачном или просроченном продлении. Ни в одном из репозиториев не существует строки для пользователя на этот случай, поэтому если списание при продлении не пройдёт позже, вы не получите от Whizi ошибку с объяснением. Единственное уведомление, близкое к теме продления, это push уведомление с текстом "Your subscription is no longer active." под заголовком "Whizi subscription updated", которое отправляется, когда вебхук RevenueCat переводит аккаунт на бесплатный уровень. Это путь вебхука RevenueCat, поэтому это не сообщение о неудачном продлении через Stripe.
Оплата в Whizi проходит через Stripe, поэтому именно там, а не в самой Whizi, решается, какие карты вообще могут платить. Российская или иранская карта не может пройти регистрацию. Украина, Казахстан, Турция, Индонезия и Индия работают полностью, от начала до конца.
- Настоящий отказ карты приходит от вашего банка через Stripe, а не от Whizi
- У Whizi нет сообщения об отклонённой карте и нет причины отказа, которую можно показать
- Формулировка от Whizi в ошибке означает, что это не был отказ
- Ошибки сессии устраняются выходом и повторным входом в аккаунт с последующей попыткой со страницы цен
- Ошибка Pricing is temporarily unavailable возникает на стороне сервера: подождите, не повторяйте попытки по кругу
- Вводный пробный период привязан к отпечатку карты, а не к аккаунту
- Списание прошло, но план остался бесплатным: это другой симптом, описанный в subscription-not-active
Частые вопросы
Почему Whizi пишет, что платёж не прошёл, а банк не показывает никакой попытки?
Потому что строка, которую вы увидели, была вызвана сайтом ещё до обращения к Stripe, поэтому попытки списания не было вовсе. Быстрый способ отличить такую ошибку от настоящего отказа бэкенда: отказ бэкенда приходит в виде JSON с кодом ошибки, например pricing_unavailable или invalid_plan_or_cycle, и показывает HTTP статус в сетевой трассировке. У строки со стороны браузера нет ни того, ни другого. Если у увиденной вами ошибки не было кода, значит, до вашего банка ничего не дошло.
Что означает A $1 intro trial has already been used with this payment method.?
A $1 intro trial has already been used with this payment method.?Это означает, что карта, которую вы ввели, уже использовала вводный пробный период. Это не отказ: у Whizi вообще нет строки об отклонённой карте, а эта поступает из собственного маршрута оформления заказа Whizi как HTTP 403 с кодом duplicate_trial_payment_method, который стоит указать, если вы обратитесь в поддержку. Оформите подписку по стандартной цене или используйте способ оплаты, который ещё не использовал пробный период.
Я увидел Pricing is temporarily unavailable. Дело в моей карте?
Pricing is temporarily unavailable. Дело в моей карте?Нет. Это HTTP 503 pricing_unavailable, и она поступает из маршрута, который читает локализованную таблицу цен из Stripe, а не из маршрута оформления заказа, принимающего карту. На вашей стороне это не исправить, поэтому подождите, вместо того чтобы пробовать другую карту. Если вместо этого вы увидели Failed to create Stripe checkout session., это отдельная строка с отдельным происхождением: резервный текст сайта на случай, когда запрос на оформление заказа не выполнился, а бэкенд не передал сообщение.
Мой промокод отклонён. Почему?
Оформление заказа возвращает The supplied discount must be an active 100% promotion code or coupon ID. как HTTP 400 invalid_discount. Поле скидки при оформлении заказа принимает только действующий промокод на 100 процентов или ID купона, поэтому просроченный код или код с частичной скидкой будут отклонены. Уберите его и оформите заказ по обычной цене, если доступ нужен прямо сейчас.
Whizi отклонила мою почту при оформлении заказа. Что произошло?
Вы увидели Temporary email addresses are not allowed. Please use a permanent email address. Маршрут оформления заказа возвращает её как HTTP 400 disposable_email_blocked, когда домен почты аккаунта, в который вы вошли, находится в списке временных. Та же строка используется при регистрации как HTTP 403. Используйте на аккаунте постоянный адрес, и оформление заказа пройдёт дальше.
С меня списали дважды. Что делать?
Обратитесь в поддержку с обеими квитанциями Stripe, не отменяя подписку вслепую. Отмена представляет собой отдельное действие со своим результатом: для активной подписки маршрут отмены отвечает Subscription cancellation scheduled for end of billing period., поэтому подписка продолжит действовать до конца уже оплаченного периода.