{% if isInGrace %}{{ 'email.payment_failed.txt.subject_grace'|trans }}{% elseif attemptNumber == 1 %}{{ 'email.payment_failed.txt.subject_first'|trans }}{% elseif attemptNumber <= 3 %}{{ 'email.payment_failed.txt.subject_multiple'|trans }}{% else %}{{ 'email.payment_failed.txt.subject_final'|trans }}{% endif %} {{ 'email.payment_failed.content.greeting'|trans({'%firstName%': member.firstName}) }} {% if isInGrace %} ■ {{ 'email.payment_failed.content.grace_message'|trans }} ■ {{ 'email.payment_failed.content.grace_remaining'|trans({'%graceRemainingDays%': graceRemainingDays, '%plural%': graceRemainingDays > 1 ? 's' : ''}) }} {% elseif attemptNumber == 1 %} ■ {{ 'email.payment_failed.content.first_attempt_message'|trans }} {% else %} ■ {{ 'email.payment_failed.content.multiple_attempts_message'|trans({'%attemptNumber%': attemptNumber}) }} {% endif %} {{ 'email.payment_failed.txt.details_title'|trans }} • {{ 'email.payment_failed.details.date'|trans }} {{ paymentFailure.failureDate|date('d/m/Y à H:i') }} • {{ 'email.payment_failed.details.attempt'|trans }} {{ attemptNumber }} / 5 • {{ 'email.payment_failed.details.status'|trans }} {% if isInGrace %}{{ 'email.payment_failed.details.grace_status'|trans }}{% else %}{{ 'email.payment_failed.details.retry_status'|trans }}{% endif %} {% if paymentFailure.reason %}• {{ 'email.payment_failed.details.reason'|trans }} {% set reasonMap = { 'insufficient_funds': 'email.payment_failed.reasons.insufficient_funds', 'card_declined': 'email.payment_failed.reasons.card_declined', 'card_expired': 'email.payment_failed.reasons.card_expired', 'authentication_required': 'email.payment_failed.reasons.authentication_required', 'processing_error': 'email.payment_failed.reasons.processing_error', 'unknown': 'email.payment_failed.reasons.unknown' } %}{% set reasonKey = reasonMap[paymentFailure.reason] ?? null %}{% if reasonKey %}{{ reasonKey|trans }}{% else %}{{ paymentFailure.reason }}{% endif %}{% endif %} {% if not isInGrace %} {{ 'email.payment_failed.txt.next_retry_title'|trans }} {{ 'email.payment_failed.next_retry.automatic_retry'|trans({'%nextRetryDate%': paymentFailure.nextRetryDate|date('d/m/Y à H:i')}) }} {{ 'email.payment_failed.next_retry.no_action'|trans }} {% endif %} {{ 'email.payment_failed.txt.recommendations_title'|trans }} • {{ 'email.payment_failed.recommendations.check_card'|trans }} • {{ 'email.payment_failed.recommendations.check_funds'|trans }} • {{ 'email.payment_failed.recommendations.contact_bank'|trans }} • {{ 'email.payment_failed.recommendations.update_payment'|trans }} {% if isInGrace %} {{ 'email.payment_failed.txt.grace_warning_title'|trans }} {{ 'email.payment_failed.txt.grace_suspension'|trans({'%graceRemainingDays%': graceRemainingDays, '%plural%': graceRemainingDays > 1 ? 's' : ''}) }} {{ 'email.payment_failed.grace_warning.consequences'|trans }} {% endif %} {{ 'email.payment_failed.txt.useful_links'|trans }} • {{ 'email.payment_failed.txt.update_payment_link'|trans }} {{ dashboardUrl }} • {{ 'email.payment_failed.txt.support_link'|trans }} {{ supportUrl }} {{ 'email.payment_failed.txt.security_title'|trans }} {{ 'email.payment_failed.txt.security_description'|trans }} {{ 'email.payment_failed.support.question'|trans }} support@antiquites-en-france.com | {{ 'email.payment_failed.support.phone'|trans }} --- {{ 'email.footer.company_name'|trans }} {{ 'email.footer.tagline'|trans }} {{ 'email.payment_failed.footer.info'|trans }} {{ 'email.payment_failed.footer.reason'|trans({'%failureDate%': paymentFailure.failureDate|date('d/m/Y')}) }}