Карта отклонена или платёж не прошёл при оформлении заказа в Whizi

Краткий ответ

Если ваша карта была действительно отклонена при оформлении заказа в Whizi, отказ поступил от вашего банка через Stripe, а не от самой Whizi, поэтому решение: другая карта или звонок в банк. У Whizi вообще нет сообщения об отклонённой карте, поэтому формулировка от Whizi в ошибке означает, что это не был отказ.

Короткий ответ

Если ваша карта была действительно отклонена, отказ поступил от вашего банка через 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.400invalid_checkout_requestТело запроса на оформление заказа не удалось разобрать
Invalid plan or billing cycle.400invalid_plan_or_cycleПлан или цикл не соответствуют ни одной известной цене Stripe
No subscription item found for the active subscription.400subscription_item_missingСмена плана на месте выполнялась для подписки без элемента подписки
The supplied discount must be an active 100% promotion code or coupon ID.400invalid_discountПереданный код не является действующим промокодом на 100 процентов или ID купона
Temporary email addresses are not allowed. Please use a permanent email address.400disposable_email_blockedПочта аккаунта, в который вы вошли, находится в списке временных доменов
A $1 intro trial has already been used with this payment method.403duplicate_trial_payment_methodОтпечаток карты уже использовал вводный пробный период
User not found.404not_foundМаршрут оформления заказа не смог прочитать вашу запись пользователя
Pricing is temporarily unavailable.503pricing_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.?

Это означает, что карта, которую вы ввели, уже использовала вводный пробный период. Это не отказ: у Whizi вообще нет строки об отклонённой карте, а эта поступает из собственного маршрута оформления заказа Whizi как HTTP 403 с кодом duplicate_trial_payment_method, который стоит указать, если вы обратитесь в поддержку. Оформите подписку по стандартной цене или используйте способ оплаты, который ещё не использовал пробный период.

Я увидел 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., поэтому подписка продолжит действовать до конца уже оплаченного периода.