easy_checkout

componente: EasyCheckoutComponent

diretório: easy.checkout

template: wd.easy.checkout.template

jsHandler: EasyCheckout


Exemplo de uso

{% easy_checkout(
  TemplateExtendedCustomerFields="/wd.easy.checkout.extended.customer.template",
  FooterFlags="/Images/payment_methods.jpg",
  FooterPhone: Config.General.Store.Phone
) %}

No exemplo acima, estamos passando um template de dentro da raiz do tema com os campos estendidos para o formulário de cadastro de novo cliente. Este template é usado apenas se quisermos acrescentar campos no cadastro, para isso também é necessário cadastrar os campos no admin. No exemplo, informamos também o caminho da imagem com as bandeiras de pagamento localizadas no rodapé. Além disso, indicamos que o telefone exibido no rodapé será o mesmo configurado em Configs > Configurações gerais > Configurações por grupo.

Parâmetros

Os parâmetros são utilizados para configurar o widget

NomeDescriçãoTipoValor padrão
modeModo de exibiçãoLista de opções:\n\"b2c\", \"b2b\", \"marketplace\" e \"oms\b2c
MatchCDNProductImagesReferência do CDN para fotos de produtosTexto/Custom/Content/Products/
MatchCDNDefaultImagesReferência do CDN para imagens geraisTexto/Custom/
MatchCDNDeliveryImagesReferência do CDN para imagens de formas de entregaTexto/Custom/Content/Themes/Shared/Images/Delivery/
MatchCDNPaymentImagesReferência do CDN para imagens de formas de pagamentoTexto/Custom/Content/Themes/Shared/Images/Payment/
MatchCDNSalesRepresentativeImagesReferência do CDN para imagens dos representantes de vendaTexto/Custom/Content/SalesRepresentatives/
MustCleanCreditCardFieldsLimpar dados de cartão ao tentar finalizar compraBooleanfalse
TextForgotErrorTexto: E-mail não cadastrado.TextoE-mail não cadastrado. Ir para o cadastro
TextOneCardTexto: Pagar com 2 cartõesTextoPagar com 2 cartões
TextTwoCardTexto: Pagar com 1 cartãoTextoPagar com 1 cartão
TextFreeLabelTexto: GrátisTextoGrátis
TextOrderNumberTexto: Número do pedidoTextoNúmero do pedido:
TextChengeMethodTexto: Alterar meio de pagamentoTextoAlterar meio de pagamento
TextAmountMethodTexto: Pagamento à vistaTextoPagamento à vista
TextMethodEmptyTexto: Selecione um meio de pagamento.TextoSelecione um meio de pagamento.
TextCongratulationsTexto: Pedido realizado!TextoPedido realizado!
TextWaitingPaySlipTexto: Agora só falta pagar o boleto.TextoAgora só falta pagar o boleto.
TextWaitingTransferTexto: Agora só falta fazer a transferência no seu banco.TextoAgora só falta fazer a transferência no seu banco.
TextWaitingPayTexto: Aguardando pagamentoTextoEstamos confirmando o seu pagamento.
TextWaitingPayTexto: Agora só falta realizar o pagamento.TextoAgora só falta realizar o pagamento
TextPrintSlipBotão: Gerar boletoTextoGerar boleto
TextFullfillPaymentBotão: Realizar pagamentoTextoRealizar pagamento
TextButtonTransferBotão: Fazer a transferênciaTextoFazer a transferência
TextDownladSlipLink: Baixar boletoTextoBaixar boleto
TextCongratulationsMessageTexto: Mensagem de sucessoTexto**Seu pedido foi finalizado com sucesso.** A partir de agora você poderá acompanhar o status de entrega de seus produtos através do painel de cliente. Em caso de dúvidas entre em contato com nossa Central de Atendimento."
TextPopupWarningTexto: Anti pop-upTextoCaso você tenha um programa anti pop-up você deve desativá-lo antes de finalizar sua compra com esta forma de pagamento.
BilletMessageTexto: Aviso do BoletoTextoAtenção: Boleto para pagamento exclusivo pela internet. Não será enviado a sua residência.
TextTrackTitleTexto: Acompanhe seu pedidoTextoAcompanhe seu pedido:
TextSummaryTitleTexto: Resumo do pedidoTextoResumo do pedido
TextTermsTexto: Termos de usoTexto
TextLoginIsNotAllowedMensagem: Login não permitidoTextoFalta pouco para concluir seu cadastro.
Aguarde o email de confirmação para efetuar o login.
TextNoCreditsMensagem: Sem créditosTextoVocê não possui créditos para realizar esta compra.
LinkReadMoreForRegisterLink para instrução de cadastro de usuárioTexto
TextAddressManagementIsNotAllowedMensagem: Gerenciamento de endereços não permitidoTextoAção não permitida, entre em contato para mais detalhes.
TextSessionExpiredTexto: Sessão expiradaTextoBem-vindo(a) de volta. Você ficou muito tempo inativo(a), por isso precisamos confirmar sua identidade novamente.
TextBasketEmptyTexto: Carrinho vazioTextoOps! Seu carrinho está vazio.
TextCupomDiscountPaymentTexto: Cupom por meio de pagamentoTextoEste cupom habilita um desconto para um dos meios de pagamentos disponíveis.
AutoOpenPaymentSlipFlag: Abrir o boleto automaticamente após a confirmação da compraBooleanBoolean
TextLoyaltyCardDiscountTexto: Cartão fidelidadeTextoCartão fidelidade
ExpirationSlipTempo para expirar o boleto bancárioTexto3
CustomerRelationNamePropPropriedade usada como nome de Cliente(Filial)TextoTradingName
DeliveryStartTimeA partir de que momento começa a contar o prazo de entrega?Texto3
TemplateConfirmationTemplate: Confirmação.TextoTemplates/layout-confirmation.template
TemplateConfirmationRevampedTemplate: Confirmação versão 2.0TextoTemplateConfirmationRevamped
TemplateEbitBanner EbitTexto
TemplatePaymentTemplate: Pagamento.TextoTemplates/layout-payment.template
TemplateTermsTemplate: TermosTexto
TemplateExtendedCustomerFieldsCampos estendidos de clienteTexto
Campos estendidos de clienteTemplate: TermosTexto
TemplateFooterTemplate: RodapéTexto
FooterPhoneTelefone para o rodapéTexto(99) 9999-9999
ShowSearchAddressFieldExibe campo de pesquisar endereçosTextofalse
TextSearchAddressMensagem: Pesquisar endereçosTextoPesquisar endereços...
TextCompanyDeliveryStepMensagem: Defina a empresa destinoBooleanDefina a empresa destino
TextCompanyChangeRelationMensagem: Alterar empresaTextoAlterar empresa
PickupStoreModalTitleMensagem: Selecione a loja para retiradaTextoSelecione a loja para retirada
PickupStoreDockModalTitleMensagem: Local para retiradaTextoLocal para retirada
PickupBadgeLabelMensagem: Retirar emTextoRetirar em
TextPickupDeliveryTypeMensagem: Retirada na lojaTextoRetirada na loja
TextCheaperDeliveryOptionNameMensagem: EconômicaTextoEconômica
TextShowMixItemsMensagem: Mostrar itens do mixTextoMostrar itens do mix
TextHideMixItemsMensagem: Ocultar itens do mixTextoOcultar itens do mix
TextPaymentSplitEmptyMensagem: O valor total dos itens dos seguintes prazos abaixo, não atingiram o valor mínimo para compraTextoO valor total dos itens dos seguintes prazos abaixo, não atingiram o valor mínimo para compra
RedepayButtonImageTag referente ao botão da redepayTextcen2_hor_op1_pc_225x45
FooterFlagsCaminho para o arquivo das bandeirasTexto
ShowQuantityItemsExibe a quantidade de itens ao invés de exibir o número de produtosBooleanfalse
ApplyFingerPrintAplicar tags de profiling - FingerPrint ClearSaleBooleanfalse
TextUndeliverableTexto: Produtos digitais são enviados para o e-mail ...TextoProdutos digitais são enviados para o e-mail do destinatário, logo após a confirmação do pagamento.

Eventos


Os eventos podem ser usados de três formas:

publish: dispara o evento

subscribe: escuta o evento

unsubscribe: deixa de escutar o evento, sendo que, neste caso, deve-se passar o mesmo callback informado no subscribe que deseja-se deixar de executar.

No caso de triggers, utilize o método on para adicionar um manipulador de eventos e off  para remover um manipulador.


Principais eventos

checkout/IsAuthenticated -> disparado quando o cliente é autenticado: ao vir autenticado do carrinho, ao realizar o login no checkout (normal ou por redes sociais) e ao criar um novo cadastro no checkout.

checkout/setDelivery, { deliveryOption } -> Disparado quando um meio de entrega é selecionado. Informa na propriedade deliveryOption a opção de entrega selecionada.

checkout/payment/setType, { paymentMethod } -> disparado quando o meio de pagamento é selecionado. Informa na propriedade paymentMethod a opção de pagamento selecionada.

checkout/data/update, contexto -> disparado quando o checkout é atualizado. Passa por parâmetro o contexto da página atualizado.

checkout/reload, model -> disparado quando a interface é recarregada após alguma ação.

checkout/payment/submit, contexto -> disparado quando o botão finalizar pedido é clicado. Passa por parâmetro o contexto da página atualizado. É importante lembrar que esse evento não indica que o pedido foi fechado com sucesso, para isso é necessário verificar a propriedade IsValid no contexto retornado. Quando o pedido é de fato fechado, é possível requisitar (por ajax ou diretamente no navegador) o endpoint /checkout/confirmacao.json que possui todas as informações do pedido. Esse evento é muito utilizado quando precisa-se capturar informações do pedido ou injetar scripts terceiros que necessitam dessas informações.

Exemplo de uso 

ko.postbox.subscribe('checkout/payment/submit',function(args){
    if(args && args.hasOwnProperty('Response')){
        if(args.Response.IsValid){
            // logar no console o ID do pedido
            console.log(response.Custom['PlaceOrder.OrderNumber']);
        }
}
});


'checkout/address/isLoading', boolean
'checkout/response/validate', response (da requisição), callback
'checkout/reload'
'delivery/alert', {}
'scene/remove', string
'scene/change', string
'checkout/address/billing/update', billingAddress
'checkout/basket/resize'
'checkout/address/update', array de endereços
'browsingModal/openMain', { element, onOpenFunction, className, width, onCloseFunction, html, onComplete }
'browsingModal/centerModal/'
'checkout/useSameAddress', boolean
'checkout/address/new-postalcode'
'checkout/submit/locked', boolean
'checkout/errors/address/clear'
'checkout/IsAuthenticated'
'checkout/signin/done'
'checkout/basket-empty'
'checkout/data/update', model (EasyCheckout.ModelData)
'ScrollTo', 'element selector', boolean, { offset }
'checkout/errors/clear'
'checkout/payment/submit', args
'checkout/errors/push', { message }
'EasyCheckout/submit/validation/' + methodAlias, callback
'checkout/recaptcha/errors', { error }
'checkout/address/openlist'
'checkout/errors/address/push', { message }
'checkout/customer/related', relation
'delivery/ok', boolean
'delivery/selected/id', number
'delivery/selected/has-changed', boolean
'summary/installments', boolean
'delivery/selected/check', model
'delivery/open/oms-pickupstore-list', model
'delivery/selected/check', model
'delivery/open/pickupstore-list', model
'checkout/setDelivery', { deliveryOption }
'/wd/pointofsale/selected/change', { selectedID }
'delivery/pickup-by-other', { pickubByOther, pickupContactName, pickupContactDocumentNumber }
'delivery/oms/clean-selected/' + groupKey
'checkout/session-expired'
'browsingModal/openDialog/', { message, customClass, onCloseFunction, buttons }
'checkout/payment/split/group/selected', group
'checkout/payment/split/emptygroups', invalidGroups (array)
'checkout/payment/set/methodselected', alias
'payment/tabs', boolean
'checkout/summary/payment/', methodSelected
'checkout/useSameAddress', boolean
'checkout/address/restore', boolean
'checkout/MultiplePaymentAjax/abort'
'summary/total'
'payment/tabs'
'browsingModal/selectfirst'
'checkout/payment/saved/change', boolean
'checkout/payment/installment/change', boolean, basePostBoxComparer
'checkout/payment/setType', { paymentMethod }
'PaymentCard/type/[model.PaymentGroupID]/' + position, this

Subscribe 

'form/submit/loading'
'checkout/address/isLoading'
'checkout/address/billing/update'
'checkout/address/restore'
'checkout/useSameAddress'
'checkout/address/update'
'checkout/customer/related'
'checkout/data/update'
'checkout/address/openlist'
'/checkout/representative/selected'
'/checkout/representative/customer/getPortfolio'
'scene/add'
'scene, remove'
'scene/toogle'
'checkout/reload'
'checkout/hard/reload'
'basket/is/invalid'
'checkout/basket/resize'
'/Checkout/Payment/Callback'
'delivery/alert'
'checkout/address/new-postalcode'
'delivery/pickup-by-other'
'haschange/payment'
'haschange/delivery'
'delivery/open/pickupstore-list'
'delivery/open/oms-pickupstore-list'
'delivery/component/load'
'delivery/selected/id'
'delivery/selected/has-changed'
'delivery/selected/is-schedule'
'delivery/selected/check'
'checkout/setDelivery'
'delivery/oms/clean-selected/' + groupKey
'delivery/ScheduleShiftID'
'delivery/pickupstore/selected'
'checkout/payment/split/group/selected'
'EasyCheckout/submit/validation/splitGroups'
'order/method'
'checkout/payment/set/methodselected'
'checkout/payment/installment/change'
'payment/clean/data'
'checkout/payment/calculate'
'checkout/MultiplePaymentAjax/abort'
'checkout/payment/openBillingAddressform'
'checkout/payment/saved/change'

Trigger 

'delivery/pickup/map/loaded'

Importante

Os argumentos informados nos eventos são opcionais. Ao escutá-los (subscribe) é recomendado validar se o argumento existe antes de utilizá-lo, evitando erros na execução do script.


Customização

Adicionar metadados no cadastro do cliente

  • Crie um template e, para cada metadado que deseja incluir, inclua o trecho abaixo substituindo NOME_ÚNICO_DOMETADADO pelo nome único do metadado. 
     
<!-- ko component: 
    {
        name:'metadata',
        params: {
            fields: metadata.localizedFields(NOME_ÚNICO_DO_MEDATADO),
            css:  ['base']
        }
    } 
 --><!-- /ko -->
  • Lembre-se que o arquivo deve, obrigatoriamente, terminar em .template.
  • Na chamada do widget, associe o caminho do arquivo criado ao parâmetro “TemplateExtendedCustomerFields”: TemplateExtendedCustomerFields="~/Custom/Content/Themes/Shared/wd.easy.checkout.extended.customer.template" No exemplo acima, criamos o arquivo dentro do tema Shared (tema compartilhado), desta forma ele pode ser utilizado em todos os canais, independentemente do tema que utilizem.

Atenção!

O EasyCheckout não deve ser clonado e o uso de templates customizados no mesmo deve ser evitado (com exceção do template do rodapé), isto porque ele recebe constantes atualizações que não são aplicadas em templates customizados, o que pode gerar erros no checkout e até impedir o seu funcionamento. A customização e suas consequências são de inteira responsabilidade do lojista e sua agência/desenvolvedor.


  • Sem rótulos