Atualizações no template
Este documento descreve todas as alterações obrigatórias para que o template do checkout seja compatível com Click to Pay (Mastercard). Caso a agência sobrescreva qualquer um dos arquivos citados abaixo, ela deve aplicar as atualizações manualmente.
Arquivos Impactados
📁 Novos Arquivos
| Arquivo | Descrição |
|---|---|
Assets/JS/wake_payment_mastercard_click_to_pay.js | Script principal com toda a lógica de integração Click to Pay |
Components/checkout/wake_checkout_click_to_pay_cards.html | Componente HTML para exibição de cartões salvos e modais |
📁 Arquivos JavaScript Modificados
| Arquivo |
|---|
Components/checkout/close/wake_checkout_single_payment_area.html |
Snippets/wake_payment_methods_list.html |
Components/wake_checkout_scripts.html |
Components/checkout/close/wake_checkout_summary_information_close.html |
Components/checkout/close/wake_checkout_multipayment_values.html |
Components/checkout/confirmation/wake_checkout_confirmation_scripts.html |
Snippets/wake_checkout_total_snippet.html |
📁 Queries GraphQL Modificadas
| Arquivo | Campo adicionado |
|---|---|
Queries/wake_payment_methods_list.graphql | hasClickToPay |
Análise de Mudanças
Nova Função: wakeClickToPayAsync()
wakeClickToPayAsync()Localização: Assets/JS/wake_payment_functions.js
Esta função é o ponto de entrada para inicializar o Click to Pay após a seleção do método de pagamento.
// NOVO - Adicionado no final da função selectPaymentWhenRendering()
if(!isMultiPayment) {
await wakeClickToPayAsync();
}O que faz:
- Busca o
DPA IDdo input hidden#clicktopay-dpaid - Chama
wakeInitializeMastercardClickToPayAsync()para inicializar o SDK - Se não houver suporte, remove a classe
ctp-activedo wrapper
Nova Mutation GraphQL
Nova mutation checkoutHandleClickToPay para controlar se o checkout usará Click to Pay:
mutation checkoutHandleClickToPay(
$checkoutId: Uuid!
$customerAccessToken: String
$useClickToPay: Boolean!
$recaptchaToken: String
) {
checkoutHandleClickToPay(
checkoutId: $checkoutId
customerAccessToken: $customerAccessToken
useClickToPay: $useClickToPay
recaptchaToken: $recaptchaToken
) {
isSuccess
}
}Novos Campos GraphQL
Em wake_payment_methods_list.graphql:
hasClickToPay # Boolean - indica se o método de pagamento suporta Click to PayGuia de Migração para Agências (CRÍTICO)
✅ Checklist de Verificação
Se sobrescreveu Assets/JS/wake_payment_functions.js:
Assets/JS/wake_payment_functions.js:- Adicione a chamada
wakeClickToPayAsync()no final da funçãoselectPaymentWhenRendering():
if(!isMultiPayment) {
await wakeClickToPayAsync();
}- Atualize o carregamento de scripts para usar
await:
// ANTES
if (allScriptPromises.length > 0) {
Promise.all(allScriptPromises)
.then(() => {
console.log("Todos os scripts foram carregados com sucesso.");
Fbits.Gateway.ExecuteLoadedCallbacks();
})
...
}
// DEPOIS
if (allScriptPromises.length > 0) {
await Promise.all(allScriptPromises)
.then(async () => {
console.log("Todos os scripts foram carregados com sucesso.");
await Fbits.Gateway.ExecuteLoadedCallbacks();
})
...
}- Adicione a função
wakeClickToPayAsync()no final do arquivo:
/**
* Obtêm o DPA ID e inicializa o Click to Pay
*/
async function wakeClickToPayAsync() {
const mastercardClickToPayDpaId = document.querySelector("input[id='clicktopay-dpaid']");
if(mastercardClickToPayDpaId && wakeInitializeMastercardClickToPayAsync) {
await wakeInitializeMastercardClickToPayAsync(mastercardClickToPayDpaId.value);
} else {
const clickToPayWrapper = document.querySelector('.wake-payment-method-item.wake-has-click-to-pay');
if (clickToPayWrapper) {
clickToPayWrapper.classList.remove('ctp-active');
}
}
}Se sobrescreveu Components/wake_checkout_scripts.html:
Components/wake_checkout_scripts.html:- Adicione o script
wake_payment_mastercard_click_to_payna lista de scripts:
<!-- ANTES -->
{{ wake_scripts scripts: ["wake_payment_functions", "wake_fbits_gateway", "wake_suggested_cards"] }}
<!-- DEPOIS -->
{{ wake_scripts scripts: ["wake_payment_mastercard_click_to_pay", "wake_payment_functions", "wake_fbits_gateway", "wake_suggested_cards"] }}Se sobrescreveu Snippets/wake_payment_methods_list.html:
Snippets/wake_payment_methods_list.html:- Adicione a classe CSS para Click to Pay no elemento de método de pagamento:
<!-- ANTES -->
<div class="wake-payment-method-item{{ if is_disabled }} disabled{{ end }}"
<!-- DEPOIS -->
<div class="wake-payment-method-item{{ if is_disabled }} disabled{{ end }} {{ if payment.has_click_to_pay }} wake-has-click-to-pay ctp-active{{ end ~}}"- Adicione o ícone SVG do Click to Pay e bandeiras:
<!-- ADICIONE após o span.payment-name -->
{{~ if payment.has_click_to_pay ~}}
<svg width="40" height="22" viewBox="0 0 40 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<!-- SVG do ícone Click to Pay - copie do arquivo original -->
</svg>
{{~ else ~}}
<img src="{{ payment.image_url }}" width="50">
{{~ end ~}}
<!-- ADICIONE após o fechamento do label -->
{{~ if payment.has_click_to_pay ~}}
{{~ wake_checkout_click_to_pay_cards show_brands_only: true ~}}
{{~ end ~}}Se sobrescreveu Components/checkout/close/wake_checkout_single_payment_area.html:
Components/checkout/close/wake_checkout_single_payment_area.html:- Adicione a renderização do componente Click to Pay cards na seção de cartão:
<!-- ADICIONE no início de data-gateway-cartao, antes de wake_checkout_suggested_cards -->
{{~ if has_suggested_cards ~}}
{{~ if payment_method.has_click_to_pay ~}}
{{~ wake_checkout_click_to_pay_cards show_new_card_option: false ~}}
{{~ end ~}}
{{~ wake_checkout_suggested_cards card_count: 0 ~}}
...
{{~ else ~}}
{{~ if payment_method.has_click_to_pay ~}}
{{~ wake_checkout_click_to_pay_cards show_new_card_option: true ~}}
<div class="wake-new-card-wrapper" data-card-count="0">
{{~ wake_checkout_payment_fake_form payment_id: payment_method.id show_save_card: payment_method.save_card ~}}
</div>
{{~ else ~}}
{{~ wake_checkout_payment_fake_form payment_id: payment_method.id show_save_card: payment_method.save_card~}}
{{~ end ~}}
{{~ end ~}}- Adicione os novos componentes de UI após
{{~ wake_checkout_payment_selected_installment ~}}:
{{~ if payment_method.has_click_to_pay ~}}
{{~ discount_value = payment_method.click_to_pay_discount_value | math.abs | math.format "c" "pt-BR" ~}}
<p class="wake-click-to-pay-discount" style="display: none;" data-discount-value="{{ discount_value }}">
{{ discount_value }} de desconto Mastercard
</p>
<div class="wake-checkout-consent-wrapper" style="display: none;">
<!-- Adicione todo o bloco de consentimento do arquivo original -->
</div>
<!-- Modal de autenticação Click to Pay -->
<div id="modal-clicktopay-authenticate" class="wake-checkout-modal-autenticate ease-out opacity-100 hidden" ...>
<!-- Adicione todo o conteúdo do modal do arquivo original -->
</div>
<!-- Modal de educação Click to Pay -->
<div id="modal-clicktopay-education" class="wake-checkout-modal-education ease-out opacity-100 hidden" ...>
<!-- Adicione todo o conteúdo do modal do arquivo original -->
</div>
{{~ end ~}}Se sobrescreveu queries GraphQL:
- Em
wake_payment_methods_list.graphql- adicione o campo:
hasClickToPay
Atenção!!!!!! Dependência de Scripts:O script
wake_payment_mastercard_click_to_pay.jsDEVE obrigatoriamente ser carregado ANTES dewake_payment_functions.js, pois define funções que são chamadas por ele.
- CSS Necessário: adicione estilos para as novas classes:
.wake-has-click-to-pay.ctp-active.wake-click-to-pay-cards.wake-clicktopay-cards-list.wake-checkout-consent-wrapper.wake-ctp-payment-overlay
- Cookies: O Click to Pay utiliza o cookie
wake_ctp_recognition_token. - Popups: O checkout com Click to Pay utiliza popups para validação (obrigatório para passkey).
Resumo das Alterações Mínimas Necessárias
| Arquivo | Ação |
|---|---|
Components/wake_checkout_scripts.html | Adicionar script wake_payment_mastercard_click_to_pay |
Assets/JS/wake_payment_functions.js | Adicionar wakeClickToPayAsync() e atualizar carregamento |
Assets/JS/wake_fbits_gateway.js | Remover cache de params, atualizar callbacks |
Components/checkout/close/wake_checkout_single_payment_area.html | Adicionar componentes Click to Pay |
Snippets/wake_payment_methods_list.html | Adicionar classes e ícones Click to Pay |
| Queries GraphQL | Adicionar campos hasClickToPay e relacionados |
Updated about 22 hours ago
