Cartão recusado ou pagamento não concluído no checkout da Whizi

Resposta rápida

Se seu cartão foi realmente recusado no checkout da Whizi, a recusa veio do seu banco através da Stripe, não da Whizi, então a solução é usar outro cartão ou ligar para o banco. A Whizi não tem nenhuma mensagem de cartão recusado em nenhum lugar, então um texto com a linguagem da Whizi no erro significa que não foi uma recusa.

A resposta rápida

Se seu cartão foi realmente recusado, a recusa veio do seu banco através da Stripe, não da Whizi, então a solução é usar outro cartão ou ligar para o banco. Por que os bancos bloqueiam pagamentos de assinatura de IA em primeiro lugar, e como identificar qual das seis causas você encontrou, está em pagar por IA quando seu cartão é recusado. A Whizi não tem uma mensagem de cartão recusado em lugar nenhum dela. Os dados do cartão são inseridos na página de checkout hospedada pela Stripe, que fica fora do código da Whizi, e o manipulador de webhook da Stripe da Whizi não tem nenhuma mensagem de pagamento recusado para mostrar a você.

Então, se você viu um erro com a linguagem da Whizi, não foi uma recusa. Foi uma das strings abaixo, e cada uma tem uma causa diferente e uma solução diferente.

As três mais fáceis de confundir com uma recusa:

O que você viuO que significaO que fazer
A $1 intro trial has already been used with this payment method.Esse cartão já usou o teste introdutórioAssine no valor normal, ou use um cartão que ainda não usou o teste. Tentar de novo não vai funcionar
Pricing is temporarily unavailable.A Whizi não conseguiu ler a tabela de preços da StripeEspere e tente novamente mais tarde. Nada do seu lado resolve isso
Failed to create Stripe checkout session.A chamada do checkout falhou e o backend não enviou mensagemTente novamente uma vez. Se persistir, contate o suporte

Todo erro que o backend da Whizi retorna no checkout

Esses vêm do servidor, então chegam com um status HTTP e um código de erro que o suporte pode cruzar em um rastro de rede. Todo corpo de erro do backend é um JSON no formato {"error": {"code": "...", "message": "..."}}, então o código fica ao lado da mensagem. As linhas abaixo estão ordenadas pelo status HTTP.

MensagemHTTPCódigoDisparado quando
A plan and billing cycle are required.400invalid_checkout_requestO corpo do checkout não pôde ser interpretado
Invalid plan or billing cycle.400invalid_plan_or_cycleO plano ou o ciclo não correspondem a um preço conhecido na Stripe
No subscription item found for the active subscription.400subscription_item_missingUma troca de plano no local rodou contra uma assinatura sem item nela
The supplied discount must be an active 100% promotion code or coupon ID.400invalid_discountO código informado não é um código de promoção ou cupom ativo de 100 por cento
Temporary email addresses are not allowed. Please use a permanent email address.400disposable_email_blockedO e-mail da conta logada está na lista de domínios descartáveis
A $1 intro trial has already been used with this payment method.403duplicate_trial_payment_methodA impressão digital do cartão já usou o teste introdutório
User not found.404not_foundA rota de checkout não conseguiu ler sua linha de usuário
Pricing is temporarily unavailable.503pricing_unavailableA tabela de preços localizada não pôde ser lida da Stripe

O que fazer com cada uma. A recusa do teste introdutório tem sua própria seção abaixo. Pricing is temporarily unavailable. é do lado do servidor: HTTP 503, retornado quando a tabela de preços localizada não pode ser lida da Stripe, e não existe nenhuma configuração na sua conta que mude isso. Failed to create Stripe checkout session. não é uma mensagem do servidor, por isso não indica um motivo: é o texto de reserva do próprio site, mostrado quando a chamada de checkout falha e o backend não envia mensagem. Ambos os casos são de esperar e tentar de novo.

A plan and billing cycle are required. e Invalid plan or billing cycle. significam que a requisição não trazia um plano que o servidor reconhece, então comece de novo pela página de preços e escolha lá o plano e a opção mensal ou anual, em vez de reutilizar um link de checkout antigo ou editado.

User not found. significa que sua sessão aponta para uma linha de usuário que o servidor não consegue ler. Saia da conta, entre novamente, depois inicie o checkout de novo.

No subscription item found for the active subscription. acontece durante uma troca de plano, não em uma primeira compra, e não é algo que se resolve pela interface. Contate o suporte.

Erros que o site mostra antes mesmo do checkout abrir

Esses vêm do navegador, não do servidor, então não têm código HTTP. Todos significam a mesma coisa, em linhas gerais: algo falhou enquanto a Whizi preparava sua conta para a transferência à Stripe, então nenhuma cobrança chegou a ser tentada.

MensagemDisparado quando
Failed to create Stripe checkout session.A chamada de checkout falhou e o backend não enviou mensagem
Could not open checkout. Please try again.A chamada de checkout do modal de upgrade falhou sem mensagem
Authentication failed. Please sign in again.A busca do token não retornou nada antes do checkout
Failed to save user before checkout.A chamada de salvar o usuário antes do checkout não deu certo
Could not prepare your account for checkout.A página de preços não conseguiu salvar o usuário antes do checkout
Missing user or Stripe customer details.O id do usuário estava ausente no momento do checkout
Checkout response did not include a Stripe URL.O checkout teve sucesso, mas não retornou uma URL nem um id de assinatura
Something went wrong while starting your trial. Please try again.A falha genérica de início de teste na página de preços

Para qualquer item desta lista, saia da conta, entre novamente e inicie o checkout de novo pela página de preços. Isso resolve os casos em que a busca do token não retornou nada antes do checkout, que é o que Authentication failed. Please sign in again. relata.

Checkout response did not include a Stripe URL. é a exceção: significa que a chamada teve sucesso. Antes de tentar pagar de novo, abra as configurações da sua conta e verifique se já existe uma assinatura ali.

Mais duas aparecem nas páginas de login e cadastro quando você escolhe um plano primeiro e se autentica depois: Signed in, but checkout could not start. Please choose your plan again. e Your account was created, but checkout could not start. Please sign in and choose your plan again. As duas significam que a parte da conta funcionou e só a transferência falhou. Sua conta existe. Vá até a página de preços e escolha o plano de novo.

Uma última causa de falha misteriosa: tentar o checkout muitas vezes seguidas pode acionar o limitador de taxa, que retorna HTTP 429 e Too many requests. Please wait and try again. Toda requisição na conta, seja qual for a rota, conta contra um teto de 30 por minuto. Espere um minuto em vez de clicar de novo.

A recusa do teste introdutório, que nenhuma nova tentativa resolve

A $1 intro trial has already been used with this payment method. é HTTP 403 com o código duplicate_trial_payment_method. É o único erro de checkout desta página que uma nova tentativa jamais vai resolver.

A verificação é vinculada ao cartão, não à conta: a recusa é retornada quando a impressão digital do cartão já usou o teste introdutório.

Um detalhe se você está procurando por esse erro: a string realmente diz "$1", mesmo que a cobrança introdutória em si seja de $0.99 em dólares americanos. Procure pelo texto exato, porque a forma "$1" é exatamente o que o servidor envia.

Suas duas opções: assine no valor padrão do plano que você quer, ou pague com uma forma de pagamento que ainda não usou o teste antes.

Os preços dos planos, os termos do teste e o que acontece na conversão estão todos em cobrança, testes e como cancelar.

O pagamento foi feito, mas a conta ainda está no plano gratuito

Um cartão cobrado mais uma conta que ainda se comporta como gratuita é um sintoma diferente do checkout falhando, e tem sua própria página.

Leia você pagou, mas os recursos do plano continuam bloqueados para as strings que aparecem nesse estado, a verificação que mostra qual conta detém a assinatura, e o que enviar para o suporte.

O que a Whizi não consegue te dizer

Três lacunas, para você não perder tempo procurando respostas que não existem.

A Whizi nunca vê por que seu banco recusou um cartão, porque essa troca acontece na página de checkout hospedada pela Stripe, fora do código da Whizi. Uma busca em ambos os repositórios da Whizi não encontrou nenhuma string de cartão recusado ou pagamento recusado de nenhum tipo, e o manipulador de webhook da Stripe não carrega nenhuma mensagem de pagamento recusado. Então não há motivo de recusa guardado na sua conta, nenhum botão de tentar de novo, e nada para a Whizi sobrepor. O motivo fica com o seu banco.

A Whizi também não tem nenhuma mensagem para uma renovação que falhou ou está em atraso. Não existe nenhuma string voltada ao usuário para isso em nenhum dos repositórios, então se uma cobrança de renovação falhar mais tarde, você não vai receber um erro da Whizi explicando isso. O único aviso relacionado à renovação que existe é uma notificação push dizendo "Your subscription is no longer active." sob o título "Whizi subscription updated", enviada quando um webhook da RevenueCat sincroniza uma conta de volta ao nível gratuito. Esse é o caminho do webhook da RevenueCat, então não é um relato de uma falha de renovação na Stripe.

A cobrança da Whizi passa pela Stripe, então quais cartões podem pagar de fato é decidido lá, não na Whizi. Um cartão russo ou iraniano não consegue concluir o cadastro. Ucrânia, Cazaquistão, Turquia, Indonésia e Índia funcionam de ponta a ponta.

Lista de verificação
  • Uma recusa de cartão de verdade vem do seu banco através da Stripe, não da Whizi
  • A Whizi não tem mensagem de cartão recusado nem motivo de recusa para mostrar
  • Um texto com a linguagem da Whizi no erro significa que não foi uma recusa
  • Erros de sessão se resolvem saindo da conta e entrando de novo, depois tentando pela página de preços
  • Pricing is temporarily unavailable é do lado do servidor: espere, não tente repetidamente
  • O teste introdutório é vinculado à impressão digital do cartão, não à conta
  • Cobrado mas ainda no plano gratuito é um sintoma diferente, coberto em subscription-not-active

Perguntas frequentes

Por que a Whizi diz que meu pagamento falhou, mas meu banco não mostra nenhuma tentativa?

Porque a string que você viu foi gerada pelo site antes mesmo de a Stripe ser acionada, então nenhuma cobrança foi tentada. A forma rápida de diferenciar isso de uma recusa real do backend: uma recusa do backend chega como JSON com um código de erro, como pricing_unavailable ou invalid_plan_or_cycle, e mostra um status HTTP em um rastro de rede. Uma string do lado do navegador não tem nenhum dos dois. Se o que você viu não trazia código, nada chegou ao seu banco.

O que significa A $1 intro trial has already been used with this payment method.?

Significa que o cartão que você digitou já usou o teste introdutório. Não é uma recusa: a Whizi não tem nenhuma string de cartão recusado, e essa vem da própria rota de checkout da Whizi como HTTP 403 com o código duplicate_trial_payment_method, que vale a pena citar se você escrever para o suporte. Assine no valor padrão ou use uma forma de pagamento que ainda não usou o teste.

Recebi Pricing is temporarily unavailable. Meu cartão é o problema?

Não. É HTTP 503 pricing_unavailable, e vem da rota que lê a tabela de preços localizada da Stripe, não da rota de checkout que receberia um cartão. Não há solução do seu lado, então espere em vez de tentar outro cartão. Se você viu Failed to create Stripe checkout session. no lugar disso, é uma string separada com uma origem separada: o texto de reserva do site quando a chamada de checkout falhou e o backend não enviou mensagem.

Meu código promocional foi recusado. Por quê?

O checkout retorna The supplied discount must be an active 100% promotion code or coupon ID. como HTTP 400 invalid_discount. O campo de desconto no checkout só aceita um código de promoção ou cupom ativo de 100 por cento, então um código expirado ou um desconto parcial será recusado ali. Remova o código e finalize a compra no valor normal se você precisar de acesso agora.

A Whizi recusou meu e-mail no checkout. O que aconteceu?

Você viu Temporary email addresses are not allowed. Please use a permanent email address. A rota de checkout retorna isso como HTTP 400 disposable_email_blocked quando o domínio do e-mail da conta logada está na lista de descartáveis. A mesma string é usada no cadastro como HTTP 403. Use um endereço permanente na conta e o checkout vai prosseguir.

Fui cobrado duas vezes. O que devo fazer?

Contate o suporte com os dois recibos da Stripe, em vez de cancelar às cegas. Cancelar é uma ação separada com seu próprio resultado: para uma assinatura ativa, a rota de cancelamento responde Subscription cancellation scheduled for end of billing period., então essa assinatura roda até o fim do período que já foi pago.