fbpx
  1. Início
  2. Base de conhecimento
  3. Dicas, truques e personalizações
  4. Dicas e truques
  5. Personalização do cronograma para tentativas de cobrança de pagamentos em atraso

Personalização do cronograma para tentativas de cobrança de pagamentos em atraso

MemberMouse 3.0+

OBSERVAÇÃO: Com serviços de pagamento que não suportam a funcionalidade de cartão em arquivo (ou seja, PayPal, Authorize.net), o MemberMouse não tem controle sobre o processo de cobrança recorrente e não tratar automaticamente os pagamentos em atraso.

Por padrão, o MemberMouse tem um processo de cobrança integrado para a cobrança de pagamentos em atraso. Se uma assinatura não for cobrada na data programada, o MemberMouse fará três tentativas adicionais no período de uma semana para cobrar o pagamento. O MemberMouse também enviará uma mensagem configurável notificação de pagamento em atraso após cada pagamento não realizado. Se você quiser ver uma descrição detalhada desse processo, acesse nosso artigo Tratamento automatizado de pagamentos em atraso.

Embora esse intervalo de coleta funcione muito bem como padrão, talvez você queira personalizar os dias decorridos entre uma tentativa de coleta e a duração do processo geral de coleta. É possível personalizar isso usando um filtro do WordPress, mm_billing_subscription_dunning_interval.

Os filtros são funções pelas quais o WordPress passa os dados, em determinados pontos da execução, pouco antes de realizar alguma ação com os dados. O MemberMouse define seu próprio conjunto de filtros que você pode utilizar para controlar o fluxo de execução no MemberMouse antes de determinadas ações serem tomadas.

Aqui está um exemplo básico:

function customContentProtection($data)
{
     return true;
}
add_filter('mm_bypass_content_protection', 'customContentProtection');

Neste exemplo, estamos usando o add_filter() para indicar que o método  customContentProtection() deve ser chamado quando o MemberMouse aplicar o método  mm_bypass_content_protection filtro.

Para saber mais sobre como trabalhar com a API de ação do WordPress leia este artigo.

Personalização dos intervalos de cobrança

O MemberMouse passa dois argumentos para sua função. O primeiro é um número inteiro $failureInterval que representa o número padrão de dias antes da próxima tentativa. O segundo é um número inteiro $failureState que representa o estado de falha de faturamento específico. Atualmente, existem três estados de falha: 2, 3 e 4, que representam a segunda, a terceira e a última tentativa de cobrar o pagamento, respectivamente.

Sua função deve retornar um número inteiro que represente o número de dias que deve ser permitido passar antes da próxima tentativa. Aqui está um exemplo que replica os intervalos de cobrança padrão:

function customDunningInterval($failureInterval, $failureState)
{
   switch ($failureState)
   {
      case 2:
         return 2; // Primeira tentativa, dois dias após a falha inicial de cobrança
      
      case 3:
         return 3; // Segunda tentativa, três dias após a primeira tentativa
      
      Caso 4:
         return 2; // Terceira tentativa, dois dias após a segunda tentativa
      
      padrão:
         return $failureInterval;
   }
}
add_filter("mm_billing_subscription_dunning_interval", "customDunningInterval", 10, 2);

Para personalizar os intervalos de cobrança, basta alterar os valores retornados nas três instruções de caso para a duração desejada em dias.

Portanto, se você quisesse tentar novamente o pagamento 3 dias, 5 dias e 7 dias após cada tentativa, você alteraria a função para que ficasse assim:

function customDunningInterval($failureInterval, $failureState)
{
   switch ($failureState)
   {
      case 2:
         return 2; // Primeira tentativa, três dias após a falha inicial de cobrança
      
      case 3:
         return 3; // Segunda tentativa, cinco dias após a primeira tentativa
      
      Caso 4:
         return 2; // Terceira tentativa, sete dias após a segunda tentativa
      
      padrão:
         return $failureInterval;
   }
}
add_filter("mm_billing_subscription_dunning_interval", "customDunningInterval", 10, 2);
Este artigo foi útil?

Artigos relacionados

Não consegue encontrar a resposta que está procurando?

Entre em contato com nossa Equipe de Sucesso do Cliente
Entre em contato conosco!