Hildds 1 Denunciar post Postado Agosto 10, 2011 Olá, estou tentando utilizar a nova API do PagSeguro utilizando esse código: $cURL = curl_init(); $dados = array( // -> PRODUTO "email" => EMAIL, "token" => TOKEN, "currency" => "BRL", "itemId1" => $oferta->PID["id"], "itemDescription1" => $oferta->PID["nome"], "itemAmount1" => number_format($oferta->PID["preco_coletivo"]/100, 2), "itemQuantity1" => $_POST["inputOfertaQntd"], "reference" => $oferta->PID["id"], // -> USUÁRIO "senderEmail" => $uid["nome"], "senderName" => $uid["email"], "shippingAddressPostalCode" => $uid["cep"], "shippingAddressStreet" => $uid["endereco"], "shippingAddressNumber" => $uid["numero"], "shippingAddressComplement" => $uid["complemento"], "shippingAddressDistrict" => $uid["bairro"], "shippingAddressCity" => $uid["cidade"], "shippingAddressState " => $uid["estado"], "senderAreaCode" => $uid["ddd"], "senderPhone" => $uid["telefone"], "shippingAddressCountry", "BRA", "redirectURL", url."/obrigado" ); curl_setopt($cURL, CURLOPT_URL, "https://ws.pagseguro.uol.com.br/v2/checkout"); curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, false); curl_setopt($cURL, CURLOPT_POST, true); curl_setopt($cURL, CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); curl_setopt($cURL, CURLOPT_HEADER, false); curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cURL, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded; charset=UTF-8")); curl_setopt($cURL, CURLOPT_POSTFIELDS, $dados); $resultado = curl_exec($cURL); curl_close($cURL); echo $resultado; E só me retorna Unauthorized. O que faço? Tentei muita coisa, debuguei e nada.. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Agosto 10, 2011 É porque o campo o conteudo de $dados deveria ser uma string e não um array. O formato deveria ser parametro=valor¶metro2=valor2¶metro3=valor3... Creio que com isso resolve. O PagSeguro criou uma biblioteca que tem isso pronto,e já vem com vários tratamento de erros. https://pagseguro.uol.com.br/v2/guia-de-integracao/tutorial-da-biblioteca-pagseguro-em-php.html#pagamentos Nesse mesmo link tem instruções de outras funcionalidades que dar para usar com essa biblioteca, vale a pena dar uma olhada. Compartilhar este post Link para o post Compartilhar em outros sites
Hildds 1 Denunciar post Postado Agosto 11, 2011 É porque o campo o conteudo de $dados deveria ser uma string e não um array. O formato deveria ser parametro=valor¶metro2=valor2¶metro3=valor3... Creio que com isso resolve. O PagSeguro criou uma biblioteca que tem isso pronto,e já vem com vários tratamento de erros. https://pagseguro.uol.com.br/v2/guia-de-integracao/tutorial-da-biblioteca-pagseguro-em-php.html#pagamentos Nesse mesmo link tem instruções de outras funcionalidades que dar para usar com essa biblioteca, vale a pena dar uma olhada. Andei dando uma olhada da biblioteca e vi que eles também tratam com o POST method, que o que eu utilizei... Logo deve haver uma maneira para corrigir isso. Não queria utilizar esse biblioteca, pois estou estudando para fazer algo similar, logo preciso aprender o porque de não funcionar :D Obrigado, o erro continua persistindo. Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Agosto 11, 2011 Pow já tem coisa pronta e você quer inventar a roda novamente? Bom de qualquer jeito... Como está a variável dados, posta um exemplo de como você está enviando... ( não pode enviar o array, tem que ser como falei anteriormente )? veriifquei que seu curl está diferente do meu... Inclua o scritp abaixo e na variavel $data insira a mesma coisa de dados e post o resultado... ahh deixa o charset como ISO... é o que o PagSeguro trabalha //Definindo o cabecalho do post //Identificando e definindo o nome do host $headers[] = "Host: " . $_SERVER["SERVER_NAME"]; //dominio.com.br //Identificando o tamanho de $data para definir o tamanho da mensagem $headers[] = "Content-Length: " . strlen($data); //Definindo o tipo e codificacao do conteudo da mensagem $headers[] = "Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1"; //Iniciando o CURL e a url de destino $ch = curl_init('https://ws.pagseguro.uol.com.br/v2/checkout'); //Definindo metodo POST curl_setopt($ch, CURLOPT_POST, true); //Definindo saida de cabecalho na pagina curl_setopt($ch, CURLOPT_HEADER, false); //Definindo versao do HTTP curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); //Definindo cabecalho curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //Definindo dados do formulario curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //Definindo exibicao da resposta proveniente do servidor de destino curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Definindo timeout curl_setopt($ch, CURLOPT_TIMEOUT, $curlTimeOut); //Definindo validacao de SSL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //Atribuindo a resposta do servidor de destino em $return $return = curl_exec($ch); //Fechando a conexao curl_close($ch); print_r($return); Compartilhar este post Link para o post Compartilhar em outros sites
Hildds 1 Denunciar post Postado Agosto 11, 2011 Edit: @senartes The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path. The filetype can be explicitly specified by following the filename with the type in the format ';type=mimetype'. This parameter can either be passed as a urlencoded string like 'para1=val1¶2=val2&...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data. As of PHP 5.2.0, files thats passed to this option with the @ prefix must be in array form to work. http://www.php.net/manual/en/function.curl-setopt.php Mas engraçado, fiz o que você falou e deu certo... Estranho, pois o manual PHP fala que pode ser um array e sempre trabalhei no cURL com Array, mas com o PagSeguro não deu, muito estranho... Mesmo assim muito obrigado. Abraços, problema corrigido. Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Agosto 11, 2011 Cara não diz besteira... pode ter funcionando assim porem o certo é enviar tudo post veja na documentação https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-pagamentos.html#v2-item-api-de-pagamentos-parametros-http eu mesmo acabei de fazer um teste e funcionou... enfim... aconselho fazer do jeito certo e não dar errado mais tarde... Compartilhar este post Link para o post Compartilhar em outros sites
Hildds 1 Denunciar post Postado Agosto 11, 2011 Cara não diz besteira... pode ter funcionando assim porem o certo é enviar tudo post veja na documentação https://pagseguro.uol.com.br/v2/guia-de-integracao/api-de-pagamentos.html#v2-item-api-de-pagamentos-parametros-http eu mesmo acabei de fazer um teste e funcionou... enfim... aconselho fazer do jeito certo e não dar errado mais tarde... @senartes The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path. The filetype can be explicitly specified by following the filename with the type in the format ';type=mimetype'. This parameter can either be passed as a urlencoded string like 'para1=val1¶2=val2&...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data. As of PHP 5.2.0, files thats passed to this option with the @ prefix must be in array form to work. http://www.php.net/manual/en/function.curl-setopt.php Mas engraçado, fiz o que você falou e deu certo... Estranho, pois o manual PHP fala que pode ser um array e sempre trabalhei no cURL com Array ( PagSeguro não aceita o Content-Type ), mas com o PagSeguro não deu, talvez pelo meu Content-Type... Mesmo assim muito obrigado. O que falei no post anterior foi besteira. Para corrigir basta pegar o Array dá um http_build_query(). Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
urubulino 0 Denunciar post Postado Setembro 25, 2011 Opa , tudo bem? Fui no pagseguro e ativei a API e gerei o token. Depois fiz o download conforme dito ai em cima e coloquei nas minhas pastas, porém não consegui fazer o pagamento. Editei o arquivo PagSeguroConfig $PagSeguroConfig['credentials']['email'] = "javxxxxxxxxxxxx"; $PagSeguroConfig['credentials']['token'] = "EC6xxxxxxxxxxxxxxxxxxxxxx"; no createPaymentRequest editei: require_once "../include/library/pagseguroLibrary/PagSeguroLibrary.php"; $credentials = new AccountCredentials("javxxxxxxxxxxxxxxx", "EC6xxxxxxxxxxxxxxxxxxxxxxxxxx"); O resto eu deixei como está, só pra fazer um teste mesmo. Dá o seguinte erro: Fatal error: Uncaught exception 'Exception' with message 'CURL can't connect: connect() timed out!' in /home/supersav/public_html/include/library/pagseguroLibrary/utils/HttpConnection.class.php:96 Stack trace: #0 /home/supersav/public_html/include/library/pagseguroLibrary/utils/HttpConnection.class.php(49): HttpConnection->curlConnection('POST', 'https://ws.pags...', Array, 20, 'ISO-8859-1') #1 /home/supersav/public_html/include/library/pagseguroLibrary/service/PaymentService.class.php(52): HttpConnection->post('https://ws.pags...', Array, 20, 'ISO-8859-1') #2 /home/supersav/public_html/include/library/pagseguroLibrary/domain/PaymentRequest.class.php(420): PaymentService::createCheckoutRequest(Object(AccountCredentials), Object(PaymentRequest)) #3 /home/supersav/public_html/include/compiled/order_pay.php(77): PaymentRequest->register(Object(AccountCredentials)) #4 /home/supersav/public_html/include/compiled/order_pay.php(97): createPaymentRequest::main() #5 /home/supersav/public_html/order/pay.php(124): include('/home/sup in /home/supersav/public_html/include/library/pagseguroLibrary/utils/HttpConnection.class.php on line 96 Alguém poderia me dar alguma dica do que pode estar acontecendo de errado? Já procurei nos foruns do pagseguro mas ninguem responde. Esse post parece mais pertinente. Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
urubullino 0 Denunciar post Postado Setembro 30, 2011 Bom gente, tô evoluindo... Agora já está quase tudo dando certo , mas e me atolei no seguinte ponto: http://forum.imasters.com.br/topic/440550-solucao-retorno-automatico-pagseguro/page__gopid__1760809#entry1760809 Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Outubro 3, 2011 @urubullino O Seu problema está com retorno automático ou o sistema de notificação? Porque esse tópico aqui é sobre a API de notificação, sua pergunta anterior está relacionado a biblioteca do PagSeguro ( que usa a API de notificação ), já o seu ultimo post é relacionado ao retorno automático. Tente não misturar as coisas para que quem estiver pesquisando não se confunda. Compartilhar este post Link para o post Compartilhar em outros sites
urubullino 0 Denunciar post Postado Outubro 3, 2011 Estava em notificao , agora estou em retorno. Como nao tem como deletar a postagem , eu redirecionei pro meu topico. Abc Compartilhar este post Link para o post Compartilhar em outros sites
Ehinarr 0 Denunciar post Postado Outubro 18, 2011 Estou obtendo esta mesma resposta, Unauthorized, no momento da consulta ao notificationCode, que recebo via notificação. Interessante que chegou a funcionar, mas esta mensagem agora é frequente. Como não achei no fórum outro tópico mais adequado, posto aqui. $code = '29B5C1-9933F633F6F5-A114F49F8F25-DEA413'; $url = 'https://ws.pagseguro.uol.com.br/v2/transactions/notifications/'.$code.'?email='.$email.'&token='.$Token; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $output= curl_exec($curl); curl_close($curl); return $output; Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Outubro 21, 2011 Gere um novo token e veja se funciona... Aconselho chamar direto no navegador a URL com os dados estaticos para ver se funciona certinho... Compartilhar este post Link para o post Compartilhar em outros sites