Jump to content
Sign in to follow this  
mruoppolo

envio de dados json

Recommended Posts

Olá, tudo bem?

Estou desenvolvendo uma integração do pagseguro com checkout transparente e pagamento recorrente. Na documentação oficial: https://dev.pagseguro.uol.com.br/documentacao/pagamentos/pagamento-recorrente-transparente esta falando que preciso enviar os seguinte requisição:

{
    "preApproval": {
        "name": "Assinatura da Revista Fictícia",
        "charge": "AUTO",
        "period": "MONTHLY",
        "amountPerPayment": 100.00,
        "expiration": {
            "value": 1,
            "unit": "YEARS"
        }
    },
    "receiver": {
        "email": "seu@email.com.br"
    }
}

Para a URL: https://ws.pagseguro.uol.com.br/pre-approvals/request?email=a@b.com&token=123ABC

Mas eu não tenho a menor ideia de como fazer isso, nunca trabalhei com json como funciona este envio??

Estou tentando assim (seguindo um tutorial que encontrei na net):

<?php
$servidor = "https://ws.sandbox.pagseguro.uol.com.br/pre-approvals/request?email=financeiro@lumihost.com.br&token=DC351FB3A06742D289FE052738AA8F6D";


$req = '{
    "preApproval": {
        "name": "Assinatura da Revista Fictícia",
        "charge": "AUTO",
        "period": "MONTHLY",
        "amountPerPayment": 100.00,
        "expiration": {
            "value": 1,
            "unit": "YEARS"
        }
    },
    "receiver": {
        "email": "seu@email.com.br"
    }
}';


$contents = file_get_contents($servidor, null, $req);            
$resposta = json_decode($contents);  //Parser da resposta Json

echo $resposta;

Mas o resultado é sempre uma tela em branco

Muito obrigado :D

Share this post


Link to post
Share on other sites

Quando eu utilizei o PagSeguro, era para o checkout transparente. Eles disponibilizam um arquivo javascript, no qual você deve importar utilizando a tag script.

Com a importação, vem uma série de objetos. Um deles é o que você irá enviar o JSON.

O chato, é que você precisa criar uma série de controles para os eventos que podem ser realizados. Lembro que deu um trabalhão na época.

----

Edit,

a biblioteca em JavaScript é apenas para realizar algumas validações.

Pelo PHP, você utilza a seguinte biblioteca:

https://dev.pagseguro.uol.com.br/bibliotecas/php

Tudo pode ser feito com ela.

Edited by Gabriel Heming
  • +1 1

Share this post


Link to post
Share on other sites

Para a parte de JavaScript, está tudo aqui: http://download.uol.com.br/pagseguro/docs/pagseguro-checkout-transparente.pdf

A parte de PHP, não encontro mais nada, mas deve ser realizada pela classe PagSeguroDirectPaymentRequest.

Eu limpei o pouco do código que eu localizei, pode lhe ajudar.

Primeiro é a inicialização do checkout.

\PagSeguroLibrary::init();
\PagSeguroConfig::setEnvironment($environment);

$credentials = new \PagSeguroAccountCredentials(
    $email,
    $token//cada ambiente tem seu próprio token
);
$sessionId = PagSeguroSessionService::getSession($credentials);

esse session ID precisa ser enviado para o JavaScript

<script type="text/javascript">
  PagSeguroDirectPayment.setSessionId('sessionId');
</script>

Agora o checkout:

$directPaymentRequest = new \PagSeguroDirectPaymentRequest();
$directPaymentRequest->setPaymentMode('DEFAULT'); // GATEWAY
$directPaymentRequest->setPaymentMethod('CREDIT_CARD');//tipo de pagamento (aqui, em específico, cartão de crédito)
$directPaymentRequest->setCurrency("BRL");
$directPaymentRequest->setReference($referenceCode);//código de referência para o que está sendo vendido (ordem de venda, registro, etc...)
$directPaymentRequest->setReceiverEmail($pagSeguroEmail);//e-mail do cadastro do PagSeguro

$directPaymentRequest->addItem(
    $itemCodigo,
    $descricao,
    1,//quantidade
    $valor
);


//comprador
$directPaymentRequest->setSender(
    $nome,
    $email,
    $ddd,
    $telefone,
    'CPF',//TIPO: CPF ou CNPJ
    $cpf//CPF ou CNPJ
);

// esse é gerado pelo javascript
$directPaymentRequest->setSenderHash($post['sender-hash']);

//parcelas, para cartão de crédito
$installments = new \PagSeguroInstallment(
    array(
        'quantity' => '1',
        'value' => $valor
    )
);

$address = new \PagSeguroAddress(
    array(
        'postalCode' => $cep,
        'street' => $logradouro,
        'number' => $numero,
        'complement' => $complemento,
        'district' => $bairro,
        'city' => $cidade,
        'state' => $uf,
        'country' => $pais
    )
);

//endereço para o pagamento
$billingAddress = new \PagSeguroBilling($address);

$directPaymentRequest->setBillingAdress($billingAddress);

//quando não há frete. Na época era obrigatório adicionar o frete zerado com endereço
$directPaymentRequest->setShipping($address , \PagSeguroShippingType::getCodeByType('NOT_SPECIFIED'));
$directPaymentRequest->setShippingCost(0);

//informações sobre o cartão de crédito. Dados pessoais são do dono do cartão
$creditCardHolder = new \PagSeguroCreditCardHolder(
    array(
        'name' => ,
        'birthDate' => $dataNascimente,
        'areaCode' => $ddd,
        'number' => $telefone,
        'documents' => array(
            'type' => 'CPF',
            'value' => $cpfCartao
        )
    )
);

$creditCardData = new \PagSeguroCreditCardCheckout(
    array(
        'token' => $creditCardToken,//gerado pelo javascript
        'installment' => $installments,
        'billing' => $billingAddress,
        'holder' => $creditCardHolder
    )
);

try {
    $directPaymentRequest->setCreditCard($creditCardData);

    $response = $directPaymentRequest->register($this->entity->getApplication()->getAccountCredentials());

} catch (\PagSeguroServiceException $exception) {
}

Entretanto, isso é apenas 50% do necessário, a parte client-side com o javascript já é trabalhosa o suficiente.

Use e muito a SandBox. E, antes de colocar o código em produção, você precisa pedir liberação para o PagSeguro e peça com antecedência, eles vão demorar. Se não me engano, o endereço de e-mail para liberação está no PDF acima linkado.

Edit---
https://pagseguro.uol.com.br/v2/guia-de-integracao/documentacao-da-biblioteca-pagseguro-em-php.html#checkout-transparente

Edited by Gabriel Heming
adicionar novas informações
  • +1 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.