redstyle 7 Denunciar post Postado Janeiro 10, 2013 Olá pessoal, não é de hoje que vejo a fraca documentação do bcash. Desde quando era Pagamento Digital a documentação é a mais fraca do mercado.No formulário de integração existe o campo url_aviso. Neste campo coloco um link de minha loja que recebe notificações (callback) do próprio bcash. Este callback é um POST com os campos:[transacao_id] => 16976839[pedido] => 1301109544[status] => CanceladaEu tenho o e-mail e o token normalmente e estou usando o exemplo do "manual" da api encontrado aqui https://www.bcash.com.br/site/manual/Bcash_Manual_Integracao_Consultar_Dados_Transacao.pdfO que acontece é que mesmo passando os parâmetros pedidos sempre recebo um erro:"{"erro":{"codigo":"2015004","descricao":"Campos obrigatórios não preenchidos: email token"}}"Alguém já trabalhou com essa API para fazer requisições nas transações vindas do bcash?Segue meu código: function getOrderBcash($dados){ $email = $dados['email']; $token = $dados['token']; $urlPost = "https://www.pagamentodigital.com.br/transacao/consulta/"; $transacaoId = $dados['transacao_id']; $pedidoId = $dados['pedido']; $tipoRetorno = 2; // 1 => utf-8, 2 => ISO–8859–1 $codificacao = 1; // 1 => xml, 2 => json $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $urlPost); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POSTFIELDS,array("id_transacao"=>$transacaoId,"id_pedido"=>$pedidoId,"tipo_retorno"=>$tipoRetorno,"codificacao"=>$codificacao)); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic".base64_encode($email. ":".$token))); $resposta = curl_exec($ch); var_dump($resposta); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($httpCode != "200"){ return json_decode($resposta); } return false; } Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Janeiro 11, 2013 Os clientes da agência onde trabalho utilizam esta API, até agora não tivemos problema algum. Compartilhar este post Link para o post Compartilhar em outros sites
redstyle 7 Denunciar post Postado Janeiro 11, 2013 Os clientes da agência onde trabalho utilizam esta API, até agora não tivemos problema algum. Você não poderia passar o trecho do código onde trata isso para eu comparar com o meu e ver onde posso estar errando? []'s Compartilhar este post Link para o post Compartilhar em outros sites
Felipe Sá 3 Denunciar post Postado Janeiro 11, 2013 Olá, Seria interessante você postar o código onde essa função é chamada. Talvez algo que ajude no trecho que você passou é aumentar um pouco a "confiança" no código. Colocar algumas validações, do tipo: <?php function isValidEmail($email) { /* validação de e-mail aqui */ return true; // retorna true se válido } function isValidToken($token) { /* validação do token, por exemplo pelo tamanho da string ou regex */ return true; // retorna true se token válido } function isValidIdTransacao($transactionId) { /* mesma coisa dos caras acima */ return true; } function isValidIdPedido($transactionId) { /* mesma coisa dos caras acima */ return true; } function getOrderBcash($dados) { // validações básicas if (!isValidEmail($dados['email'])) trigger_error('e-mail inválido'); if (!isValidToken($dados['token'])) trigger_error('token inválido'); if (!isValidIdTransacao($dados['transacao_id'])) trigger_error('transacao_id inválido'); if (!isValidIdPedido($dados['pedido'])) trigger_error('pedido inválido'); $email = $dados['email']; $token = $dados['token']; $urlPost = "https://www.pagamentodigital.com.br/transacao/consulta/"; $transacaoId = $dados['transacao_id']; $pedidoId = $dados['pedido']; $tipoRetorno = 2; // 1 => utf-8, 2 => ISO–8859–1 $codificacao = 1; // 1 => xml, 2 => json $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $urlPost); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, array("id_transacao"=>$transacaoId,"id_pedido"=>$pedidoId,"tipo_retorno"=>$tipoRetorno,"codificacao"=>$codificacao)); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic".base64_encode($email. ":".$token))); $resposta = curl_exec($ch); var_dump($resposta); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode != "200") { return json_decode($resposta); } return false; } Isso pelo menos vai evitar que a função propague uma falha na entrada dos dados. Sei que isso aparentemente não vai resolver seu problema, mas pode ajudar na identificação. Boa sorte! :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Cláudio Rosse Pandolfi 0 Denunciar post Postado Janeiro 14, 2013 redstyle, bom dia!Pelo que vi em seu código, está faltando um espaço na linha de autenticação, e não está reconhecendo o email e token no Bcash. É só alterar a linha de código abaixo, colocando um espaço depois da palavra Basic: curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic ".base64_encode($email. ":".$token))); Segue abaixo o código corrigido: function getOrderBcash($dados){ $email = $dados['email']; $token = $dados['token']; $urlPost = "https://www.bcash.com.br/transacao/consulta/"; $transacaoId = $dados['transacao_id']; $pedidoId = $dados['pedido']; $tipoRetorno = 2; // 1 => utf-8, 2 => ISO–8859–1 $codificacao = 1; // 1 => xml, 2 => json $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $urlPost); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POSTFIELDS,array("id_transacao"=>$transacaoId,"id_pedido"=>$pedidoId,"tipo_retorno"=>$tipoRetorno,"codificacao"=>$codificacao)); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic ".base64_encode($email. ":".$token))); $resposta = curl_exec($ch); var_dump($resposta); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if($httpCode != "200"){ return json_decode($resposta); } return false; } Se tiver alguma dificuldade, envie um email para o suporte de integração do Bcash, através do email integracao@bcash.com.br, pois sempre tive retorno nos contatos. Att Cláudio RP. Compartilhar este post Link para o post Compartilhar em outros sites
jrandis 0 Denunciar post Postado Fevereiro 19, 2013 Olá, não uso esta api mas estou tendo o mesmo problema. No meu caso este problema ocorre quando eu vou no bcash, entro na tela de detalhes de alguma transação e clico em 'Efetuar Retorno'. ex: Retorno Automático dos Dados (Saiba Mais) URL de aviso: http://www.XXXXXXXXXX.com.br/index.php?XXXXXXXXXXX/pagamento_digital/callback Data Status Enviado Comunicação Tentativas Última Tentativa 17/02/2013 02:25:24 Em andamento OK 1 de 5 17/02/2013 02:30:04 Quando verifico o post que foi feito pelo bcash, recebo apenas os mesmos três parametros, ex: transacao_id=17502756 pedido=633 status=Cancelada Acontece que na documentação do retorno automatico (link 'Saiba Mais' na mesma página de detalhe onde cliquei em 'Efetuar Retorno') não há menção alguma para 'transacao_id', somente para 'id_transacao' e que o post enviado pelo bcash deveria ser com mais parametros do que somente estes três (transacao_id, pedido e status) que então sendo enviados. No meu caso, além de estar esperando por 'id_transacao' e não transacao_id, eu também nao consigo saber o cod_status, apena o status em string.... Realmente a documentação do Bcash é bem ruinzinha mesmo porque não achei nada a respeito.... Obs: Quando o retorno é realmente automatico, (quando o cliente pagou por exemplo) eu recebo o post de acordo com a documentação, parametro id_transacao e todos os outros parametros que constam na documentação... Compartilhar este post Link para o post Compartilhar em outros sites
Sergio M. Jr 0 Denunciar post Postado Abril 4, 2013 Olá. A documentação do BCash está complicada mesmo. Muitos furos. Mas atrapalha do que ajuda. Encontrei esse trecho de código em outro fórum. Segundo quem postou a BCash teria enviado esse código pra ele após uma reclamação. Eu usei dessa forma e conseguir confirmar o status das minhas transações: // Email cadastrado no Bcash $email = "AQUIVAIOEMAIL"; // Obtenha seu TOKEN entrando no menu Ferramentas do Bcash $token = "AQUIVAIMEUTOKEN"; $urlPost = "https://www.bcash.com.br/transacao/consulta/"; //var_dump($_POST);die; $transacaoId = $_POST["transacao_id"]; $pedidoId = $_POST["pedido"]; $tipoRetorno = 1; $codificacao = 1; ob_start(); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $urlPost); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, array("id_transacao"=>$transacaoId,"id_pedido"=>$pedidoId,"tipo_retorno"=>$tipoRetorno,"codificacao"=>$codificacao)); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic ".base64_encode($email. ":".$token))); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_exec ($ch); /* XML ou Json de retorno */ $resposta = ob_get_contents(); ob_end_clean(); var_dump($resposta); Compartilhar este post Link para o post Compartilhar em outros sites