Qual é a diferença entre em sessão e fora de sessão e por que isso é importante?

"Em sessão" indica quando o cliente faz um pagamento em seu aplicativo ou site; "fora de sessão" indica quando o pagamento é iniciado automaticamente ou pelo comerciante. Essa terminologia é específica da Stripe, que tenta representar como a tentativa de pagamento foi criada e permitir um melhor entendimento sobre quais ações podem ou não acontecer durante o processo de pagamento.

Quando um pagamento é feito "em sessão", o cliente está presente no seu site ou aplicativo móvel e está tentando pagar. Se o pagamento falhar, o cliente poderá tentar novamente com outra forma de pagamento. Se o pagamento exigir uma ação adicional (passar pelo 3D Secure, ser redirecionado a um parceiro como Klarna etc.), o cliente poderá passar por essas etapas imediatamente para concluir o pagamento.

Por padrão, os pagamentos em nossa API são "em sessão". Você não precisa passar um parâmetro específico para indicar isso, mas se quiser ser explícito, pode passar o parâmetro off_session definido como false (que é o padrão) ao confirmar o PaymentIntent.

Quando um pagamento é feito "fora de sessão", o cliente não está presente no seu site ou aplicativo para confirmar o pagamento. Estes são alguns exemplos de pagamentos "fora de sessão":

Se for necessário realizar alguma ação após a confirmação de um pagamento "fora de sessão", você precisará fazer com que o cliente fique "em sessão" para realizar a próxima ação.

Para um pagamento "fora de sessão", você deve passar o parâmetro off-session definido como true ao confirmar o PaymentIntent. Isso é definido automaticamente para pagamentos de renovação relacionados ao Billing.

Por que é necessário indicar quando um pagamento ocorre fora de sessão?

Em um pagamento "fora de sessão", o cliente não está presente para confirmar o pagamento. Por exemplo, em relação a pagamentos com cartão, isso significa que o cliente não pode passar pelo 3D Secure. Da mesma forma, o cliente não poderia passar por um captcha nem realizar uma verificação extra ou ação manual necessária.

Ao indicar que o pagamento sendo iniciado está "fora de sessão", você permite que a Stripe pule algumas etapas ou solicite uma isenção ao parceiro (bandeiras de cartão, BNPL etc.). Por exemplo, a Stripe pode solicitar uma isenção para transações com cartão ao sinalizar a transação como:

Observe que definir off_session: true pode fazer com que marquemos a transação como recorrente com a bandeira de cartão.