sexta-feira, 22 de abril de 2011

Entendendo melhor a integração maldita do Bradesco para boleto bancário

Você também está tendo trabalho em entender o maldito documento de integração que o Bradesco fornece? Também está cansado de mandar emails para o suporte que não consegue te responder em uma maneira que não seja copiar e colar o que está no maldito manual?

SEUS PROBLEMAS ACABARAM!

E como funciona isso, Mister M?

Aposto que você ficou se perguntando dias como diabos os dados da compra vão parar no M.U.P. sem entender o que a documentação dizia exceto que essa é a parte mais importante do processo. duh.
Eu tive essa ajuda aqui e confesso que ela apenas me guiou para o caminho certo. Ela não me mostrou a solução.

Eu fiz apenas a integração com boletos sem retorno. Não faço ideia como o que não é boleto sem retorno funciona. Mas isso funcionar pra outras coisas, lemme know! :)

O gancho todo é: você precisa de um .php, .asp, .whatever, que é o DadosCompra.asp que o manual tanto cita, que monte pra você o tal do < BEGIN_ORDER_DESCRIPTION >.... < END_ORDER_DESCRIPTION > . Ele é um arquivo separado de todo o restante da tua loja e que só serve pra fazer isso: montar o "xml" do boleto.
O M.U.P. é configurado pra chamar esse teu .whatever e o próprio M.U.P. busca a string que teu .whatever vai cuspir colocando, no seu Gerenciador, no URL de notificação p/ Boleto Bancário Bradesco todo o caminho pra esse .whatever: www.meusite.com.br/diretorioqueeuquero/meuarquivo.whatever.

O link pro seu boleto deve ser algo como http://mupteste.comercioeletronico.com.br/sepsBoleto/xxxx/prepara_pagto.asp?merchantid=xxxx&orde
rid=zzzz.

Os posts foram preenchidos da seguinte maneira porque o pessoal do suporte mandou:
Post a ser enviado para a loja na notificação: numOrder=[%lid_m%]&merchantid=[%merchantid%]&cod=[%errorcod%]&cctype=[%cctype%]&ccna me=[%ccname%]&ccemail=[%ccemail%]&numparc=[%numparc%]&valparc=[%valparc%]&valtotal=[%valtotal%]&prazo=[%prazo%]&tipopagto=[%tipopagto%]&assinatura=[%assinatura%]&

Post a ser enviado para a loja na confirmação de compra: numOrder=[%lid_m%]&merchantid=[%merchantid%]&cod=[%errorcod%]&cctype=[%cctype%]&ccname=[%ccname%]&ccemail=[%ccemail%]&numparc=[%numparc%]&valparc=[%valparc%]&valtotal=[%valtotal%]&prazo=[%prazo%]&tipopagto=[%tipopagto%]&assinatura=[%assinatura%]&

Post a ser enviado para a loja na falha da autorização: numOrder=[%lid_m%]&merchantid=[%merchantid%]&cod=[%errorcod%]&errordesc=[%errordesc%] &

Eu sei que tem como você controlar o que é passado e que você pode acrescentar dados seus para serem passados. Como eu mal entendi como esse sistemas funciona, preferi colocar esses dados na minha sessão ao deixar que o M.U.P. as envie para mim novamente.
E pronto.

Então: o usuário vai navegar pelo teu site, teu site eventualmente vai montar esse link aí em cima e, quando o usuário clicar, o M.U.P. cadastra o boleto com zzzz e chama teu arquivo .whatever pra ter os dados do boleto. Esse zzzz não pode ser repetido, por isso é bom ter uma sequence em banco gerenciando esses números ou usar o timestamp (se bem que pode acontecer de dois usuários clicarem no mesmo instante).

Aí você se vira, mas o difícil mesmo está escrito nessas maltraçadas linhas.