<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt_BR"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://sounoob.com.br/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sounoob.com.br/" rel="alternate" type="text/html" hreflang="pt_BR" /><updated>2026-05-29T09:41:28-03:00</updated><id>https://sounoob.com.br/feed.xml</id><title type="html">SouNoob</title><subtitle>Este blog é para essas pessoas que vivem estudando coisas complexas e esquecem de como fazer as coisas mais simples.</subtitle><entry><title type="html">Collections das APIs do PagSeguro</title><link href="https://sounoob.com.br/collections-das-apis-do-pagseguro/" rel="alternate" type="text/html" title="Collections das APIs do PagSeguro" /><published>2019-05-31T11:14:42-03:00</published><updated>2019-05-31T11:14:42-03:00</updated><id>https://sounoob.com.br/collections-das-apis-do-pagseguro</id><content type="html" xml:base="https://sounoob.com.br/collections-das-apis-do-pagseguro/"><![CDATA[<p>Para facilitar assimilar o que a documentação do PagSeguro diz, com a forma que de fato a API funciona, estou disponibilizando collections no Postman com todas requisições possíveis, tudo pronto.<!--more--></p>

<p>Esse projeto não é algo novo, tenho disponibilizado no GitHub desde 2017, porém nunca divulguei abertamente o repositório. Após conversar com algumas pessoas, pensei: Já que está público para o mundo, porque não divulgar?</p>

<p>Para usar as collections, basta baixar o projeto no repositório <a target="_blank" rel="external noreferrer nofollow" href="https://github.com/sounoob/pagseguroXpostman" title="Collections do postman para o PagSeguro" alt="Collections do postman para o PagSeguro">pagseguroXpostman</a>, importar no postman, e ao final incluir seu e-mail e token nas variáveis locais, e pronto… tudo está funcionando.</p>]]></content><author><name>sena</name></author><summary type="html"><![CDATA[Para facilitar assimilar o que a documentação do PagSeguro diz, com a forma que de fato a API funciona, estou disponibilizando collections no Postman com todas requisições possíveis, tudo pronto.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/" /><media:content medium="image" url="https://sounoob.com.br/" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">PagSeguro muda estrutura de token e não avisa a ninguém.</title><link href="https://sounoob.com.br/pagseguro-muda-estrutura-de-token-e-nao-avisa-a-ninguem/" rel="alternate" type="text/html" title="PagSeguro muda estrutura de token e não avisa a ninguém." /><published>2019-05-11T00:00:30-03:00</published><updated>2019-05-11T00:00:30-03:00</updated><id>https://sounoob.com.br/pagseguro-muda-estrutura-de-token-e-nao-avisa-a-ninguem</id><content type="html" xml:base="https://sounoob.com.br/pagseguro-muda-estrutura-de-token-e-nao-avisa-a-ninguem/"><![CDATA[<p>Manhã de domingo, crianças correndo, pássaros cantando, porém tinha e o PagSeguro mudando o padrão do token de acesso de suas APIs.
<!--more-->
Brincadeiras a parte, notamos recentemente uma movimentação um tanto estranha no fórum do PagSeguro com a galera estranhando a estrutura do post do PagSeguro.</p>

<p>A postagem mais antiga é de 01/04/19, onde a galera falava referente o número de caracteres do token passar de 32 para 100 caracteres.</p>

<blockquote>
  <p><a target="_blank" rel="external noreferrer nofollow" href="https://comunidade.pagseguro.uol.com.br/hc/pt-br/community/posts/360029376833-Estrutura-do-Token-" title="Fórum PagSeguro - Estrutura do Token">Boa tarde, estou configurando o pag seguro para o open cart na versao 3.0.3.1 , mas apresentou o erro Unauthorized, ja peguei as soluções de forum e no outro site deu certo já nesse nao está. Uma coisa que reparei o Token ao gerar, esta muito extenso, o do outro cliente é mais curto.. <br /> Teria alguma forma de testar se o token está gerando certo? o que esse cliente nova gerou seria o token com 101 caracteres.</a></p>
</blockquote>

<blockquote>
  <p><a target="_blank" rel="external noreferrer nofollow" href="https://comunidade.pagseguro.uol.com.br/hc/pt-br/community/posts/360028993894-Problema-com-o-Token-gerado" title="Fórum PagSeguro - Problema com o Token gerado">Estou tentando realizar a integração do meu site com o pagseguro.<br />O token solicitado pelo meu site é de apenas 32 dígitos e o token enviado pelo sistema do pagseguro é muito maior, alguém sabe como consigo este token de 32 dígitos?</a></p>
</blockquote>

<p>Fizemos uma análise no novo token e pudemos temos alguns pontos:</p>

<ul>
  <li>Todos tokens antigos continuam válidos e com 32 caracteres.</li>
  <li>A nova estrutura só atinge quem clicar no botão para gerar um novo token daqui para frente.</li>
  <li>As APIs continuam aceitando tanto uma versão quanto a outra do token.</li>
</ul>

<p>Um ponto que não conseguimos validar foi a estrutura do token de sandbox, para mim ela continua a 32 caracteres, porém o sandbox não permite alterar o token, imagino que seja por isso que não é 100. Mas e as novas contas, irá vir com a estrutura de token do sandbox com 100 ou 32 caracteres.</p>

<p>Agora fico com a pulga atrás da orelha para saber qual serviço o PagSeguro está para lançar que forçou a mudança da estrutura do token tão repentinamente quem nem deu tempo de avisar aos usuários. Alguém arrisca um palpite?</p>]]></content><author><name>sena</name></author><category term="curiosidades" /><category term="PagSeguro" /><summary type="html"><![CDATA[Manhã de domingo, crianças correndo, pássaros cantando, porém tinha e o PagSeguro mudando o padrão do token de acesso de suas APIs.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/assets/uploads/2019/05/11/pagseguro-health-check-de-api.jpg" /><media:content medium="image" url="https://sounoob.com.br/assets/uploads/2019/05/11/pagseguro-health-check-de-api.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Resolvendo erro: Port 80 in use by “Unable to open process” with PID 4!</title><link href="https://sounoob.com.br/resolvendo-erro-port-80-in-use-by-unable-to-open-process-with-pid-4/" rel="alternate" type="text/html" title="Resolvendo erro: Port 80 in use by “Unable to open process” with PID 4!" /><published>2018-10-19T06:36:40-03:00</published><updated>2018-10-19T06:36:40-03:00</updated><id>https://sounoob.com.br/resolvendo-erro-port-80-in-use-by-unable-to-open-process-with-pid-4</id><content type="html" xml:base="https://sounoob.com.br/resolvendo-erro-port-80-in-use-by-unable-to-open-process-with-pid-4/"><![CDATA[<p>No Windows 10 ao tentar executar o XAMPP muitas vezes temos o erro “Port 80 in use by “Unable to open process” with PID 4!”. Esse erro está relacionado a serviços do Windows o qual está sendo executado na porta 80. Veja como finalizar esses serviços.<!--more--></p>

<p>Inicie o prompt de comando como administrador.</p>

<p>Execute o comando abaixo.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>net stop w3svc
</code></pre></div></div>

<p>Depois o comando</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>net stop iisadmin
</code></pre></div></div>

<p>Pronto, execute o xampp e verifique se o problema foi resolvido.</p>

<p><img src="/assets/uploads/2018/10/19/xampp-normal.png" alt="XAMPP - Painel de controle " title="XAMPP - Painel de controle " /></p>]]></content><author><name>sena</name></author><category term="tutoriais" /><category term="xampp" /><summary type="html"><![CDATA[No Windows 10 ao tentar executar o XAMPP muitas vezes temos o erro “Port 80 in use by “Unable to open process” with PID 4!”. Esse erro está relacionado a serviços do Windows o qual está sendo executado na porta 80. Veja como finalizar esses serviços.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/assets/uploads/2018/10/19/xampp-erro-port80.pid4.png" /><media:content medium="image" url="https://sounoob.com.br/assets/uploads/2018/10/19/xampp-erro-port80.pid4.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Atendimento secreto do PagSeguro para desenvolvedores</title><link href="https://sounoob.com.br/pagseguro-agora-atende-desenvolvedores/" rel="alternate" type="text/html" title="Atendimento secreto do PagSeguro para desenvolvedores" /><published>2018-10-16T10:24:30-03:00</published><updated>2018-10-16T10:24:30-03:00</updated><id>https://sounoob.com.br/pagseguro-agora-atende-desenvolvedores</id><content type="html" xml:base="https://sounoob.com.br/pagseguro-agora-atende-desenvolvedores/"><![CDATA[<p>Sem muito alarde, PagSeguro disponibiliza um chatbot com um formulário secreto para os Devs abrir chamados. Veja como funciona.<!--more--></p>

<p>Ao acessar qualquer página da documentação do PagSeguro, agora aparece um botão no canto inferior esquerdo com a pergunta “Posso ajudar?”. Ao clicar neste botão é iniciado um chat com um bot, o qual dá para tirar algumas dúvidas simples, e ao final da conversa, o bot questiona se conseguiu ajudar, se você responder não, um formulário secreto será exibido dando acesso a abertura de um chamado com uma pessoa real dentro do PagSeguro. Veja animação abaixo com o fluxo.</p>

<p><img src="/assets/uploads/2018/10/16/atendimento-dev-pagseguro.gif" alt="Acessar formulário secreto para abertura de chamado" title="Acessar formulário secreto para abertura de chamado" /></p>

<p>Quer testar? basta acessar a documentação em <a href="https://devs.pagseguro.uol.com.br/docs/introducao" target="_blank" alt="Documentação PagSeguro" title="Documentação PagSeguro" rel="nofollow noreferrer">https://devs.pagseguro.uol.com.br/docs/introducao</a> e você já terá o botão “mágico” liberado.</p>

<p>E vocês o que acharam da novidade?<br />
Comente abaixo como foi a experiência com o PagSeguro com essa nova funcionalidade.</p>]]></content><author><name>sena</name></author><category term="Dicas" /><category term="PagSeguro" /><summary type="html"><![CDATA[Sem muito alarde, PagSeguro disponibiliza um chatbot com um formulário secreto para os Devs abrir chamados. Veja como funciona.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/" /><media:content medium="image" url="https://sounoob.com.br/" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Intermediador de pagamentos cancelando todas transações</title><link href="https://sounoob.com.br/intermediador-de-pagamentos-cancelando-todas-transacoes/" rel="alternate" type="text/html" title="Intermediador de pagamentos cancelando todas transações" /><published>2018-01-18T00:00:00-02:00</published><updated>2018-01-18T00:00:00-02:00</updated><id>https://sounoob.com.br/intermediador-de-pagamentos-cancelando-todas-transacoes</id><content type="html" xml:base="https://sounoob.com.br/intermediador-de-pagamentos-cancelando-todas-transacoes/"><![CDATA[<p>
    Hoje você vai aprender o motivo e como contornar aquele momento em que a loja foi para o ar, e em todos testes em
    produção o intermediador de pagamentos cancela a transação, mesmo quando os dados do comprador estão corretos.
</p>
<!--more-->
<p>
    Para entender o motivo disso, precisamos entender o que é um intermediador de pagamentos.
</p>
<blockquote>
    <p>
        O Intermediador de pagamentos é uma solução para receber e enviar pagamentos com flexibilidade e segurança.
    </p>
</blockquote>
<p>
    Isso significa que a ideia do intermediador de pagamentos, é facilitar de uma forma onde você precise programar o
    mínimo e ter o máximo de ferramentas no momento de incluir opções de pagamento em seu site. <br>
    <strong>Você não precisa concordar ou discordar se ele faz esse papel, só precisa ter ciência do que ele quer
        fazer.</strong>
</p>
<p>
    Agora que entendemos o intermediador de pagamentos, precisamos entender que, ao colocar o intermediador como solução
    de pagamento, estamos incluido uma série de sistemas embutidos.
</p>
<ul>
    <li>
        Pagamento com cartão de crédito, boleto, débto, online, etc;
    </li>
    <li>Pagamento recorrente;</li>
    <li>
        Dar opção para o comprador usar a própria para acessar os cartões já salvos e algumas de suas preferências entre
        outras customizações;
    </li>
    <li>Proteção contra chargeback;</li>
    <li>AntiFraude;</li>
    <li>Outros...</li>
</ul>
<p>
    Parei no AntiFraude de propósito, ele é o motivo deste post ser escrito. Sim, suas transações são canceladas quando
    você testa em produção por conta do AntiFraude <small>(na maioria das vezes não é possivel desativar esse serviço)</small>.
</p>
<h2>Como sei que foi o AntiFraude que cancelou uma transação?</h2>
<p>
    Dependendo do intermediador que você estiver utilizando, ele pode falar explicitamente ou informar que foi por
    motivos interno. Usarei o PagSeguro como exemplo.
</p>
<p>
    Consultando os detalhes detalhes de uma transação - Seja pela API de notificações ou API de consulta por código de
    transação - procure por <strong>&lt;transaction&gt;&lt;cancellationSource&gt;</strong>
    <small>, (linha 8 do exemplo)</small>
    .
</p>
<figure class="highlight"><pre><code class="language-xml" data-lang="xml"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre><span class="cp">&lt;?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?&gt;</span>
<span class="nt">&lt;transaction&gt;</span>
    <span class="nt">&lt;date&gt;</span>2018-02-15T13:01:15.000-02:00<span class="nt">&lt;/date&gt;</span>
    <span class="nt">&lt;code&gt;</span>0BED7D1B-DC00-4DE8-8828-082F8FCC7D55<span class="nt">&lt;/code&gt;</span>
    <span class="nt">&lt;reference&gt;</span>REF1234<span class="nt">&lt;/reference&gt;</span>
    <span class="nt">&lt;type&gt;</span>1<span class="nt">&lt;/type&gt;</span>
    <span class="nt">&lt;status&gt;</span>7<span class="nt">&lt;/status&gt;</span>
    <span class="nt">&lt;cancellationSource&gt;</span>INTERNAL<span class="nt">&lt;/cancellationSource&gt;</span>
    <span class="nt">&lt;lastEventDate&gt;</span>2018-02-15T13:01:16.000-02:00<span class="nt">&lt;/lastEventDate&gt;</span>
    <span class="nt">&lt;paymentMethod&gt;</span>
        <span class="nt">&lt;type&gt;</span>1<span class="nt">&lt;/type&gt;</span>
        <span class="nt">&lt;code&gt;</span>101<span class="nt">&lt;/code&gt;</span>
    <span class="nt">&lt;/paymentMethod&gt;</span>
    <span class="c">&lt;!-- Código reduzido, para economizar espaço --&gt;</span>
<span class="nt">&lt;/transaction&gt;</span>
</pre></td></tr></tbody></table></code></pre></figure>
<p class="text-right">
    <small>
        O exemplo foi reduzido para ocupar menos espaço, porém você pode ver o XML de exemplo completo <a
            href="https://ws.pagseguro.uol.com.br/v3/transactions/DBCB8226-588B-4EF4-A1F4-211DD3AE273D?email=dev@sounoob.com.br&token=ECBEA46582584EE6BFDCAF5CD3D7878A"
            target="_blank" rel="nofollow noreferrer">clicando aqui</a>.
    </small>
</p>
<p>
    O campo <strong>cancellationSource</strong>, significa a origem do cancelamento. Sempre que a origem do cancelamento
    for interna (Internal), significa que o antifraude barrou essa transação.</p>
<p>
    <strong>
        Cada intermediador terá sua peculiaridade, entre em contato com o suporte e procure entender como funciona no
        seu.
        Aproveite e poste nos comentários afim de ajudar o próximo que estiver pesquisando.
    </strong>
</p>

<h2>Como evitar que AntiFraude cancele transações legitimas</h2>
<p>
    Não sabemos ao certo como o AntiFraude dos intermediadores funcionam, caso você pergunte no SAC, eles não irão
    responder, por motivos de segurança. Eles acreditam que se todos tiverem ciência dos critérios do AntiFraude, a
    segurança das transações fica comprometida, e alguém mal intencionado poderá burlar esse sistema e fazer compras
    indevidas.
</p>
<p>Juntamos algumas dicas espalhadas pela intenet e vou citar algumas aqui:</p>

<h3>Respeite as regras de uso do intermediador</h3>
<p>
    Cada intermediador de pagamento tem um termo/regras de uso. Lá existem uma série de itens a serem cumpridos, como
    por exemplo não vender drogas, órgãos... Leia todos itens, a inteligência do AntiFraude pode usar alguma
    regras dessas para permitir ou não a venda.
</p>
<h3>Divergência de dados</h3>
<p>
    Diversos campos são de preenchimento obrigatórios na requisição de pagamento, muitas vezes para pular alguns passos
    o programador pega alguns desses campos e deixa com valor padrão e assim o comprador não precisa preencher. O ponto
    é: O AntiFraude pega o padrão e classificar como uma fraude, negando tudo.
</p>
<p>
    Lembre, na internet tudo se conversa, se esse mesmo comprador realizou alguma compra recentemente online usando
    dados
    totalmente diferentes do usado na compra atual, o AntiFraude pode bloquear a transação também.
</p>
<h3>CPF com pendências</h3>
<p>
    Maioria dos sitemas podem verificar se não existem restrições no nome da pessoa, e/ou se aquele CPF já foi usado
    anteriormente para fraude.
</p>
<h3>Desvio no padrão de compra</h3>
<p>
    Em todo cadastro no intermediador de pagamento, você vai precisar categorizar seu comércio, é importante preencher
    corretamente esse item. Caso contrário suas vendas entrará fora do padrão o que acabará dando cancelamento indevido.
</p>
<h3>Compras repetitivas</h3>
<p>
    Normalmente você faz uma compra no site e só volta lá depois de um tempo, se no meio de seus testes, você faz duas,
    três, ou seja lá quantos testes, o AntiFraude pode pegar seu IP e cookie
    <small>(ou sabe lá Deus o que ele pega)</small>
    e detectar um padrão diferente e realizar o bloqueio, então testes em produção apenas com usuários reais, ou de
    locais e ambientes diferentes.
</p>
<h2>Sua vez</h2>
<p>
    Você já caiu em algum ciclo onde o AntiFraude cancelava suas transações? O que você fez para contornar isso?
</p>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/uploads/2016/12/sena-profile.jpg&quot;, &quot;twitter&quot;=&gt;&quot;alcaidedigital&quot;, &quot;facebook&quot;=&gt;&quot;alcaidedigital&quot;}</name></author><category term="Curiosidades" /><category term="Dicas" /><category term="PagSeguro" /><summary type="html"><![CDATA[Hoje você vai aprender o motivo e como contornar aquele momento em que a loja foi para o ar, e em todos testes em produção o intermediador de pagamentos cancela a transação, mesmo quando os dados do comprador estão corretos.]]></summary></entry><entry><title type="html">PagSeguro - Health check de API.</title><link href="https://sounoob.com.br/pagseguro-health-check-de-api/" rel="alternate" type="text/html" title="PagSeguro - Health check de API." /><published>2017-10-16T00:00:00-02:00</published><updated>2017-10-16T00:00:00-02:00</updated><id>https://sounoob.com.br/pagseguro-health-check-de-api</id><content type="html" xml:base="https://sounoob.com.br/pagseguro-health-check-de-api/"><![CDATA[<p>
    Acompanhe aqui o "health check" das API's do PagSeguro. A cada um minuto é feito uma requisição para cada serviço do PagSeguro. Caso não consiga completar a tarefa declaramos que a API caiu.
</p>
<!--more-->

<p>A finalidade deste post não é acusar, muito menos provar nada a ninguém e sim de manter informado o administrador de sistema o status do serviço afim de que em problemas futuros possa ser identificado a origem e contornado mais rapidamente.</p>
<p>No momento não está disponível consulta para todas APIs, conforme sobra tempo irei atualizando esse post com novos links. Fique a vontade de comentar quais serviços vocês querem que sejam incluidos que posso alterar a prioridade na fila.</p>
<p>A ideia dá pra ser acompanhada abaixo:</p>
<ul>
    <li>
        API de boletos
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/psdbxsct9d9z/3672910" target="_blank">Produção</a> -
            Check pausado a pedido do PagSeguro, aparentemente esse serviço estava consumindo muito recurso no servidor deles.
            Oremos por uma solução que possamos acompanhar o status dessa API no futuro.
        </small>
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/ql0mypdkz2y3/4462875" target="_blank">Produção - Doado pela resistência</a>
        </small>
    </li>
    <li>
        API de consulta de notificação - Tipo transação.
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/7qi3v5o3kkwv/3755062" target="_blank">Produção.</a>
        </small>
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/wp4a74v2hbyt/4470327" target="_blank">Sandbox.</a>
        </small>
    </li>
    <li>
        API de consulta de transações - Por código de transação
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/7qi3v5o3kkwv/3755044" target="_blank">Produção.</a>
        </small>
        <br>
        <small>
            <!--zazori@larjem.com-->
            <a href="https://pingdom.sounoob.com.br/wp4a74v2hbyt/4470336" target="_blank">Sandbox.</a>
        </small>
    </li>
    <li>
        API de consulta de transações - Por intervalo de datas
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/psdbxsct9d9z/3679795" target="_blank">Produção.</a>
        </small>
        <br>
        <small>
            <!--ps@o3enzyme.com-->
            <a href="https://pingdom.sounoob.com.br/pkrhsusq85sp/4473933" target="_blank">Sandbox.</a>
        </small>
    </li>
    <li>
        API de pagamentos - Redirect
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/algilwsfmofe/3761755" target="_blank">Produção.</a>
        </small>
        <br>
        <small>
            <!--ps4@o3enzyme.com-->
            <a href="https://pingdom.sounoob.com.br/jve1lx9i4gkw/4466562" target="_blank">Sandbox.</a>
        </small>
    </li>
    <li>
        Checkout transparente - Criação de sessão.
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/algilwsfmofe/3761782" target="_blank">Produção.</a>
        </small>
        <br>
        <small>
            <!--ps3@o3enzyme.com-->
            <a href="https://pingdom.sounoob.com.br/jve1lx9i4gkw/4466553" target="_blank">Sandbox.</a>
        </small>
    </li>
    <li>
        Checkout transparente - Calculo de parcelamento
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/f1fl7hc1eemi/4627995" target="_blank">Produção.</a>
        </small>
        <br>
        <small>
            <!--ps2@o3enzyme.com-->
            <a href="https://pingdom.sounoob.com.br/f1fl7hc1eemi/4627998" target="_blank">Sandbox.</a>
        </small>
    </li>
    <li>
        Checkout transparente - pagseguro.directpayment.js - V2
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/x14y2gj53tmf/4647129" target="_blank">Produção.</a>
        </small>
        <br>
        <small>
            <a href="https://pingdom.sounoob.com.br/x14y2gj53tmf/4647141" target="_blank">Sandbox.</a>
        </small>
    </li>
</ul>
<p>
    Não temos nenhum relacionamento com o time de desenvolvimento do PagSeguro, então se algum serviço não estiver funcionando para sua aplicação, não comente aqui, prefira entrar em contato direto com eles.
    <br>Sendo asssim, utilize os comentários abaixo apenas para feedbacks e sugestões.
</p>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/uploads/2016/12/sena-profile.jpg&quot;, &quot;twitter&quot;=&gt;&quot;alcaidedigital&quot;, &quot;facebook&quot;=&gt;&quot;alcaidedigital&quot;}</name></author><category term="Tutoriais" /><category term="PagSeguro" /><summary type="html"><![CDATA[Acompanhe aqui o "health check" das API's do PagSeguro. A cada um minuto é feito uma requisição para cada serviço do PagSeguro. Caso não consiga completar a tarefa declaramos que a API caiu.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/assets/uploads/2017/10/pagseguro-health-check-de-api.png" /><media:content medium="image" url="https://sounoob.com.br/assets/uploads/2017/10/pagseguro-health-check-de-api.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">PagSeguro - Geração sistema de boletos.</title><link href="https://sounoob.com.br/pagseguro-sistemas-boleto/" rel="alternate" type="text/html" title="PagSeguro - Geração sistema de boletos." /><published>2017-09-28T00:00:00-03:00</published><updated>2017-09-28T00:00:00-03:00</updated><id>https://sounoob.com.br/pagseguro-sistemas-boleto</id><content type="html" xml:base="https://sounoob.com.br/pagseguro-sistemas-boleto/"><![CDATA[<p>
    Agora dá para gerar boletos em lote (Aquele carnê maroto), dá para definir a data do vencimento do boleto... e é de longe o serviço mais simples de se utilizar.
</p>
<!--more-->
<p>
    Esse post será reeditado para mais um detalhamento melhor. Mas só para falar que o PagSeguro acabou de lançar um serviço de geração de boletos.
    <br>Ainda sabemos pouca coisa sobre o serviço mas já conseguimos entender alguns benefícios:
</p>

<ul>
    <li>Totalmente transparente (Primeira API do PagSeguro transparente que não usa senderHash)</li>
    <li>É posssivel controlar a data do vencimento do boleto.</li>
    <li>Gerar boletos em lote</li>
    <li>Capturar o código de barras do boleto pelo código.</li>
</ul>

<p>
    Quanto às vantagens que citei acima, existe algumas limitações, imagino que pelo fato de ser algo novo e eles precisarem controlar melhor
    para em caso de problemas, conseguir contornar mais rápidamente.
</p>
<p>Nesse post não irei falar sobre a API necessariamente, mas irei compartilhar um exemplo do nosso SDK que já utiliza essa API.</p>
<p>
    O projeto pode ser baixado em <a href="https://github.com/sounoob/pagseguro-php-sdk" target="_blank">pagseguro-php-sdk</a> e o
    exemplo do boleto está em <a href="https://github.com/sounoob/pagseguro-php-sdk/blob/master/example/boleto.php" target="_blank">'/example/boleto.php'</a>.
</p>
<p>
    Acompanhe aqui o <a href="/pagseguro-status-blog/" target="_blank">health check das APIs do PagSeguro.</a>
</p>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/uploads/2016/12/sena-profile.jpg&quot;, &quot;twitter&quot;=&gt;&quot;alcaidedigital&quot;, &quot;facebook&quot;=&gt;&quot;alcaidedigital&quot;}</name></author><category term="Tutoriais" /><category term="PagSeguro" /><summary type="html"><![CDATA[Agora dá para gerar boletos em lote (Aquele carnê maroto), dá para definir a data do vencimento do boleto... e é de longe o serviço mais simples de se utilizar.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/assets/uploads/2017/10/pagseguro-api-boleto.png" /><media:content medium="image" url="https://sounoob.com.br/assets/uploads/2017/10/pagseguro-api-boleto.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">PagSeguro - Checkout de serviço</title><link href="https://sounoob.com.br/pagseguro-checkout-servico/" rel="alternate" type="text/html" title="PagSeguro - Checkout de serviço" /><published>2017-09-25T00:00:00-03:00</published><updated>2017-09-25T00:00:00-03:00</updated><id>https://sounoob.com.br/pagseguro-checkout-servico</id><content type="html" xml:base="https://sounoob.com.br/pagseguro-checkout-servico/"><![CDATA[<p>
    Veja como fazer a API do PagSeguro deixar os campos de endereço de entrega como opcionais. Ótimo para quem vende serviços ao invés de produtos.
</p>
<!--more-->
<p>
    Aqui não falaremos de nenhuma API nova, e sim de um complemento para as APIs que já existem.
</p>
<h3>API de pagamento (Checkout do PagSeguro), Checkout lightbox e API de pagamento transparente</h3>
<p>Quando você estiver enviando no formato <strong>x-www-form-urlencoded</strong>, basta adicionar mas um parâmetro</p>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
</pre></td><td class="code"><pre><span class="n">shippingAddressRequired</span><span class="o">=</span><span class="kc">false</span>
</pre></td></tr></tbody></table></code></pre></figure>
<p>Quando você estiver enviando no formato <strong>XML</strong>, basta adicionar mas um nó dentro do nó <strong>checkout</strong>:</p>
<figure class="highlight"><pre><code class="language-php" data-lang="php"><table class="rouge-table"><tbody><tr><td class="gutter gl"><pre class="lineno">1
</pre></td><td class="code"><pre><span class="nt">&lt;shippingAddressRequired&gt;</span>false<span class="nt">&lt;/shippingAddressRequired&gt;</span>
</pre></td></tr></tbody></table></code></pre></figure>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/uploads/2016/12/sena-profile.jpg&quot;, &quot;twitter&quot;=&gt;&quot;alcaidedigital&quot;, &quot;facebook&quot;=&gt;&quot;alcaidedigital&quot;}</name></author><category term="Tutoriais" /><category term="PagSeguro" /><summary type="html"><![CDATA[Veja como fazer a API do PagSeguro deixar os campos de endereço de entrega como opcionais. Ótimo para quem vende serviços ao invés de produtos.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/assets/uploads/2017/09/servico.png" /><media:content medium="image" url="https://sounoob.com.br/assets/uploads/2017/09/servico.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Pré visualizador de arquivos online</title><link href="https://sounoob.com.br/pre-visualizador-de-arquivos-online/" rel="alternate" type="text/html" title="Pré visualizador de arquivos online" /><published>2017-08-13T00:00:00-03:00</published><updated>2017-08-13T00:00:00-03:00</updated><id>https://sounoob.com.br/pre-visualizador-de-arquivos-online</id><content type="html" xml:base="https://sounoob.com.br/pre-visualizador-de-arquivos-online/"><![CDATA[<p>
    Enviar documentos para o amigo que não consgue abrir o arquivo, pelo fato dele não ter um determinado programa instalado.
    Seus problemas acabaram. Agora ao menos os formatos básicos você já conseguirá
</p>
<!--more-->
<p>
    Essa ferramenta não faz o upload do seu arquivo, é necessário que ele esteja hospedado em algum lugar.
    O serviço de pre-visualização estamos utilizando o do Google.
</p>
<script src="/assets/js/filePreview.js"></script>
<form class="contact" method="post" id="form-preview" onsubmit="return false">
    <div class="form-group">
        <label for="form-preview-url">URL:</label><br>
        <input type="url" name="form-preview-url" id="form-preview-url" class="form-control" required />
    </div>
    <div class="form-group">
        <label for="form-preview-hl">Idioma:</label><br>
        <select name="form-preview-hl" id="form-preview-hl">
            <option value="af">Afrikaans</option>
            <option value="ak">Akan</option>
            <option value="sq">Albanian</option>
            <option value="am">Amharic</option>
            <option value="ar">Arabic</option>
            <option value="hy">Armenian</option>
            <option value="az">Azerbaijani</option>
            <option value="eu">Basque</option>
            <option value="be">Belarusian</option>
            <option value="bem">Bemba</option>
            <option value="bn">Bengali</option>
            <option value="bh">Bihari</option>
            <option value="xx-bork">Bork, bork, bork!</option>
            <option value="bs">Bosnian</option>
            <option value="br">Breton</option>
            <option value="bg">Bulgarian</option>
            <option value="km">Cambodian</option>
            <option value="ca">Catalan</option>
            <option value="chr">Cherokee</option>
            <option value="ny">Chichewa</option>
            <option value="zh-CN"> Chinese (Simplified)</option>
            <option value="zh-TW"> Chinese (Traditional)</option>
            <option value="co">Corsican</option>
            <option value="hr">Croatian</option>
            <option value="cs">Czech</option>
            <option value="da">Danish</option>
            <option value="nl">Dutch</option>
            <option value="xx-elmer">Elmer Fudd</option>
            <option value="en">English</option>
            <option value="eo">Esperanto</option>
            <option value="et">Estonian</option>
            <option value="ee">Ewe</option>
            <option value="fo">Faroese</option>
            <option value="tl">Filipino</option>
            <option value="fi">Finnish</option>
            <option value="fr">French</option>
            <option value="fy">Frisian</option>
            <option value="gaa">Ga</option>
            <option value="gl">Galician</option>
            <option value="ka">Georgian</option>
            <option value="de">German</option>
            <option value="el">Greek</option>
            <option value="gn">Guarani</option>
            <option value="gu">Gujarati</option>
            <option value="xx-hacker">Hacker</option>
            <option value="ht">Haitian Creole</option>
            <option value="ha">Hausa</option>
            <option value="haw">Hawaiian</option>
            <option value="iw">Hebrew</option>
            <option value="hi">Hindi</option>
            <option value="hu">Hungarian</option>
            <option value="is">Icelandic</option>
            <option value="ig">Igbo</option>
            <option value="id">Indonesian</option>
            <option value="ia">Interlingua</option>
            <option value="ga">Irish</option>
            <option value="it">Italian</option>
            <option value="ja">Japanese</option>
            <option value="jw">Javanese</option>
            <option value="kn">Kannada</option>
            <option value="kk">Kazakh</option>
            <option value="rw">Kinyarwanda</option>
            <option value="rn">Kirundi</option>
            <option value="xx-klingon">Klingon</option>
            <option value="kg">Kongo</option>
            <option value="ko">Korean</option>
            <option value="kri">Krio (Sierra Leone)</option>
            <option value="ku">Kurdish</option>
            <option value="ckb">Kurdish (Soranî)</option>
            <option value="ky">Kyrgyz</option>
            <option value="lo">Laothian</option>
            <option value="la">Latin</option>
            <option value="lv">Latvian</option>
            <option value="ln">Lingala</option>
            <option value="lt">Lithuanian</option>
            <option value="loz">Lozi</option>
            <option value="lg">Luganda</option>
            <option value="ach">Luo</option>
            <option value="mk">Macedonian</option>
            <option value="mg">Malagasy</option>
            <option value="ms">Malay</option>
            <option value="ml">Malayalam</option>
            <option value="mt">Maltese</option>
            <option value="mi">Maori</option>
            <option value="mr">Marathi</option>
            <option value="mfe">Mauritian Creole</option>
            <option value="mo">Moldavian</option>
            <option value="mn">Mongolian</option>
            <option value="sr-ME">Montenegrin</option>
            <option value="ne">Nepali</option>
            <option value="pcm">Nigerian Pidgin</option>
            <option value="nso">Northern Sotho</option>
            <option value="no">Norwegian</option>
            <option value="nn">Norwegian (Nynorsk)</option>
            <option value="oc">Occitan</option>
            <option value="or">Oriya</option>
            <option value="om">Oromo</option>
            <option value="ps">Pashto</option>
            <option value="fa">Persian</option>
            <option value="xx-pirate">Pirate</option>
            <option value="pl">Polish</option>
            <option value="pt-BR" selected>Portuguese (Brazil)</option>
            <option value="pt-PT">Portuguese (Portugal)</option>
            <option value="pa">Punjabi</option>
            <option value="qu">Quechua</option>
            <option value="ro">Romanian</option>
            <option value="rm">Romansh</option>
            <option value="nyn">Runyakitara</option>
            <option value="ru">Russian</option>
            <option value="gd">Scots Gaelic</option>
            <option value="sr">Serbian</option>
            <option value="sh">Serbo-Croatian</option>
            <option value="st">Sesotho</option>
            <option value="tn">Setswana</option>
            <option value="crs">Seychellois Creole</option>
            <option value="sn">Shona</option>
            <option value="sd">Sindhi</option>
            <option value="si">Sinhalese</option>
            <option value="sk">Slovak</option>
            <option value="sl">Slovenian</option>
            <option value="so">Somali</option>
            <option value="es">Spanish</option>
            <option value="es-419">Spanish (Latin American)</option>
            <option value="su">Sundanese</option>
            <option value="sw">Swahili</option>
            <option value="sv">Swedish</option>
            <option value="tg">Tajik</option>
            <option value="ta">Tamil</option>
            <option value="tt">Tatar</option>
            <option value="te">Telugu</option>
            <option value="th">Thai</option>
            <option value="ti">Tigrinya</option>
            <option value="to">Tonga</option>
            <option value="lua">Tshiluba</option>
            <option value="tum">Tumbuka</option>
            <option value="tr">Turkish</option>
            <option value="tk">Turkmen</option>
            <option value="tw">Twi</option>
            <option value="ug">Uighur</option>
            <option value="uk">Ukrainian</option>
            <option value="ur">Urdu</option>
            <option value="uz">Uzbek</option>
            <option value="vi">Vietnamese</option>
            <option value="cy">Welsh</option>
            <option value="wo">Wolof</option>
            <option value="xh">Xhosa</option>
            <option value="yi">Yiddish</option>
            <option value="yo">Yoruba</option>
            <option value="zu">Zulu</option>
        </select>
    </div>
    <h3>Resultado</h3>
    <div class="form-group">
        <textarea name="result" id="form-preview-result" cols="30" rows="10" class="form-control"></textarea>
    </div>
</form>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/uploads/2016/12/sena-profile.jpg&quot;, &quot;twitter&quot;=&gt;&quot;alcaidedigital&quot;, &quot;facebook&quot;=&gt;&quot;alcaidedigital&quot;}</name></author><category term="Ferramentas" /><summary type="html"><![CDATA[Enviar documentos para o amigo que não consgue abrir o arquivo, pelo fato dele não ter um determinado programa instalado. Seus problemas acabaram. Agora ao menos os formatos básicos você já conseguirá]]></summary></entry><entry><title type="html">Verificando seu token do PagSeguro.</title><link href="https://sounoob.com.br/verificando-seu-token-do-pagseguro/" rel="alternate" type="text/html" title="Verificando seu token do PagSeguro." /><published>2017-06-29T00:00:00-03:00</published><updated>2017-06-29T00:00:00-03:00</updated><id>https://sounoob.com.br/verificando-seu-token-do-pagseguro</id><content type="html" xml:base="https://sounoob.com.br/verificando-seu-token-do-pagseguro/"><![CDATA[<p>
    Quando o PagSeguro dá o erro Unauthorized, e temos certeza que nosso token está correto. O que fazer?
    <br>
    Bom, minha minha recomendação sempre será: Teste em nossa ferramenta, assim você terá certeza se é o token ou não.
</p>
<!--more-->
<p>
    <strong>Essa ferramenta utiliza uma das APIs de consulta do PagSeguro para realizar a validação, não fazemos nenhuma alteração na sua conta, pode ficar tranquilo.</strong>
</p>
<script src="/assets/js/checkTokenPagSeguro.03.js"> </script>
<h3 id="result"></h3>
<form onsubmit="return sayTheTrue();" class="contact" action="" method="post">
    <div class="form-group">
        <label for="email">E-mail do PagSeguro:</label><br>
        <input type="email" name="email" id="email" class="form-control" required />
    </div>
    <div class="form-group">
        <label for="token">Token:</label><br>
        <input type="text" name="token" id="token" class="form-control" required />
    </div>
    <div class="form-group">
        <button type="submit" class="btn" value="enviar" name="enviar">ENVIAR</button>
    </div>
</form>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/uploads/2016/12/sena-profile.jpg&quot;, &quot;twitter&quot;=&gt;&quot;alcaidedigital&quot;, &quot;facebook&quot;=&gt;&quot;alcaidedigital&quot;}</name></author><category term="Ferramentas" /><category term="PagSeguro" /><summary type="html"><![CDATA[Quando o PagSeguro dá o erro Unauthorized, e temos certeza que nosso token está correto. O que fazer? Bom, minha minha recomendação sempre será: Teste em nossa ferramenta, assim você terá certeza se é o token ou não.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://sounoob.com.br/assets/uploads/2017/07/verificando-seu-token-do-pagseguro.png" /><media:content medium="image" url="https://sounoob.com.br/assets/uploads/2017/07/verificando-seu-token-do-pagseguro.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>