wirecardBrasil / magento2

Módulo de pagamento para Magento 2
Other
26 stars 23 forks source link

Boleto status processing instead on-hold #28

Closed darvinsilveira closed 5 years ago

darvinsilveira commented 5 years ago

I've configured boleto as payment method and noticed that Magento automatically set the order with status as processing, is this correct? I believe on-hold must be the status while the payment is not confirmed by Moip, or am I wrong?

elisei commented 5 years ago

this current version already has such a feature, please update.

gcampedelli commented 5 years ago

Olá, não entendi porque a issue foi fechada. O Moip retorna o status do boleto como Processing e não retorna notificação de Aguardando Pagamento na conta do consumidor e no admin. Retorna apenas nos comentários do pedido. Descrição da issue. Magento 2.2.6 versões moip - 1.0.10 e 1.0.16.

elisei commented 5 years ago

@gcampedelli

É porque não existe um status "paid" para pedido, existe apenas para fatura! No módulo atual você pela visão do admin tem o comportamento definido como:

gcampedelli commented 5 years ago

Bruno, nõa dá para entender. Processing é o seu status de pedido no frontend? É isso? Pois pelo que eu entendi o Magento 2 o Processing indica que o Pagamento foi recebido. O diagrama indica isso. State > Processing - Status > Pending Payment. E no boleto retorna State > Processing > Status > Processing.

https://www.youtube.com/watch?v=SG3g9Bv1WaQ

amelojunior commented 5 years ago

o maior problema de aplicar esse status pra pedido novo é o magento não permitir cancelar um pedido em "Payment Review".

"Você não pode cancelar o(s) pedido(s)."

gcampedelli commented 5 years ago

Mas o status nãa precisa ser Payment Review, pode ser Pending Payment.

const STATE_PENDING_PAYMENT = 'pending_payment';

const STATE_PROCESSING = 'processing'; (a propósito esse é o que seria o Paid)

const STATE_COMPLETE = 'complete';

const STATE_CLOSED = 'closed';

const STATE_CANCELED = 'canceled';

const STATE_HOLDED = 'holded';

const STATE_PAYMENT_REVIEW = 'payment_review';

samuelmafra commented 3 years ago

Olá Elisei,

Venho aqui com a mesma dúvida da @gcampedelli, tenho vários clientes utilizando diferentes versões do módulo em diferentes versões da Magento, em todas o pagamento por boleto é atribuído para status processing / payment_review.

Existe alguma forma de alterar o status do pagamento por boleto para pending_payment ou então holded?

Isso seria essencial quando o cliente visualizar o pedido, veja um status compatível.

Aguardo.

Obrigado.

gcampedelli commented 3 years ago

Oi, quando surgiu eu pesquisei um pouco no módulo, mas eu abandonei o Moip faz um tempo. Dai a minha primeira consideracão ee que o Boleto do Moip pega do modelo do CC do Magento. E deveria extender a partir do => \Magento\Payment\Model\Method\AbstractMethod e não do Cartão de Crédito A segunda observação é a seguinte: Olha só no arquivo Model/PaymentMethodBoleto tem o seguinte.

protected $_canAuthorize                = false;
    protected $_canCapture                  = true;
    protected $_canRefund                   = true;
    protected $_code                        = 'moipboleto';
    protected $_isGateway                   = true;
    protected $_canCapturePartial           = true;
    protected $_canRefundInvoicePartial     = true;
    protected $_canVoid                     = true;
    protected $_canCancel                   = true;
    protected $_canUseForMultishipping      = false;
    protected $_canReviewPayment            = true;
    protected $_countryFactory;
    protected $_supportedCurrencyCodes      = ['BRL'];
    protected $_canUseInternal              = false;
    protected $_cart;
    protected $_moipHelper;
    protected $_infoBlockType               = 'Moip\Magento2\Block\Info\Boleto';
    protected $_canFetchTransactionInfo     = true;

Imagino que protected $_canAuthorize = false; =>>> deveria ser true e protected $_canCapture = true;=>>>>deveria ser false

Mas não sei se a API tem suporte para pré-autorização e depois pagamento. Apenas colocando como ponto de discussão. Depois, supondo que nessa nova ordem de boleto se pagarem, retorna o status via notificação e o Magento muda o status para processing e no Controller ocorre a captura.

elisei commented 3 years ago

Oi @samuelmafra e @gcampedelli tudo bem?

Bom, o uso do método CC não tem nenhum impacto no processo de definição de status (ele é usado para obter a logo, evitando assim um duplicidade no código).

Nosso módulo trabalha com o método de autorização, e esse por sua vez não tem uma definição de status inicial (vide a doc do magento) apenas métodos de pgto que adotando o método pedido podem definir seu status inicial, o que para nós como gateway vemos como um processo indevido.

Ao criar uma transação é definido nela o tipo de status que pode se é uma transação em espera ou não, se é ou não uma fraude.

O real impacto disso em sua operação é que na visão do cliente há uma reescrita de status vindo do core da magento que descrevo no magento/magento2/issues/30520 já verificado em magento 2.2.x e estou certo que será também em todos os outros. Como método de pagamento homologado não podemos simplesmente optar por reescrever essa class pois não uma real explicação do porque ela foi adotada, por isso aguardamos esse issue para indicar o caminho a tormamos.

gcampedelli commented 3 years ago

Bruno, eu li a sua issue, mas como eu te mencionei, eu tenho um meio que estende e não sobreescreve a classe que menciono e no backend eu tenho exatamente o que você menciona como "desejável" e, o que não acontece no Moip. Mas, de fato, na sua issue você não explica claramente como vocês não tem essa explicação. Por outro lado, eu também não me vejo na obrigação de aprofundá-la.

image

elisei commented 3 years ago

Olá @gcampedelli

Acredito que não tenha te compreendido bem, você deseja colocar o status como fraude?

gcampedelli commented 3 years ago

Veja, o que eu estou te dizendo é que você colocou isso na issue. No caso, o status aparece como fraud porque eu uso um cpf falso, mas ele não aparece como no Moip que é o método que apresenta a issue. Eu, inclusive consigo cancelar o pedido

image

gcampedelli commented 3 years ago

E é fato notar que se eu cancelo a Invoice e não o pedido no status de fraud, o meu status vira pending e não cai na trava processing.

gcampedelli commented 3 years ago

E sim, considerados os inúmeros ataques de internet, ter a flag fraud em pedidos fraudulentos não é indesejado.

elisei commented 3 years ago

Oi @gcampedelli

Em momento nenhum o usuário deixa de ter a flag fraude, não é isso que estou dizendo aqui ou lá no issue (por sinal já confirmado), o que digo é a magento trata no frontend da loja pedidos que estejam no state payment_review e cujo o status não é igual a fraud como "processing", isso é um erro e volto novamente a dizer a próprio magento confirma que é um erro (ao menos até agora no 2.2.x, mas certamente também estará nas outras versões).

gcampedelli commented 3 years ago

Elisei, como eu te disse, o caso só acontece no seu método.

gcampedelli commented 3 years ago

No Moip eu nunca consigo esse status no boleto no frontend => image

elisei commented 3 years ago

No Moip eu nunca consigo esse status no boleto no frontend => image

Acredito que apenas você não consegue...

E eu não estou expressando uma opinião, e sim uma confirmação técnica feita pela Magento. Então não. isso não acontece apenas em nosso módulo.