wirecardBrasil / moip-sdk-php

Cliente em PHP para integração server-side com APIs Moip v2
MIT License
124 stars 90 forks source link

Criação do Pagamento com CardHolder diferente do Customer #166

Closed tattivitorino closed 7 years ago

tattivitorino commented 7 years ago

Ola, pessoal!

Pelo que pude entender no Resource/Payment o holder do cartão será sempre o Customer, correto?

` public function setCreditCardHash($hash, Customer $holder, $store = true) { $this->data->fundingInstrument->method = self::METHOD_CREDIT_CARD; $this->data->fundingInstrument->creditCard = new stdClass(); $this->data->fundingInstrument->creditCard->hash = $hash; $this->data->fundingInstrument->creditCard->store = $store; $this->setCreditCardHolder($holder);

    return $this;
}

`

Isso é um pequeno problema, pois um cliente pode comprar com o cartão de um terceiro. Por ex. Eu posso comprar com o cartão do meu pai!

Eu já implementei MOIP antes via front-end e com o json o objeto que cria o pagamento não recebe o Customer mas sim o CardHolder e a Hash, ( https://dev.moip.com.br/v2.0/reference#criar-pagamento ) mas desta vez em um outro projeto estamos implementando via backend e agora percebemos isso!

A SDK foi desenvolvida com esta premissa em mente? De que o cardHolder será sempre o Customer?

elisei commented 7 years ago

@tattivitorino Vocẽ pode setar o fullname ao realizar o payment: $customer->setFullname("Outro dono"); $payMoip = $moipOrder->payments()->setCreditCard( sprintf('%02d',$payment->getCcExpMonth()), $payment->getCcExpYear(), $payment->getCcNumber(), $payment->getCcCid(), $customer ) ->setInstallmentCount($installments) ->setStatementDescriptor('teste de pag') ->execute();

tattivitorino commented 7 years ago

@elisei , obrigada por responder! Então isso funcionaria mesmo no caso de usarmos a hash ao invés dos dados do cartão? Na função acima (que eu mencionei) eu poderia antes de enviar o Customer mudar o seu nome! Mas isso na base de dados da Moip alteraria o nome do Customer o que na vdd não é o ideal! Concorda?

elisei commented 7 years ago

@tattivitorino Funciona com a hash sim.

Não discordo do seu ponto de vista, cheguei até mandar um pull, mas não foi autorizado por haver essa função!

tattivitorino commented 7 years ago

@elisei Moip sendo Moip! Não nos ajudam muito! mas de qq forma super obrigada pela sua resposta e ajuda!

caiogaspar commented 7 years ago

Olá @tattivitorino, tudo bem? É possível enviar outro holder para o cartão, diferente do customer do pedido. Você pode fazer da seguinte forma:

// ...
$holder = $moip->customers()->setFullname('Outro nome')
    ->setEmail('outro@email.com')
    ->setBirthDate('1990-12-30')
    ->setTaxDocument('22222222222')
    ->setPhone(11, 634778899)
    ->addAddress('BILLING',
          'Outra Rua', 123,
          'Bairro', 'Sao Paulo', 'SP',
          '01234567', 8)
    ->addAddress('SHIPPING',
         'Outra Rua de Entrega', 123,
         'Bairro do SHIPPING', 'Sao Paulo', 'SP',
         '01234567', 8); 
$order->payments()->setCreditCardHash($hash, $holder);
// ...

Como o @elisei disse, passar um customer diferente para o pagamento não altera em nada os dados do customer do pedido. Qualquer outra dúvida nós estamos à disposição pra te ajudar! Abs, Caio Gaspar