misterioso013 / picpay-php
Integração simples com a API do PicPay
Requires
- php: >=8.0.0
README
Vamos utilizar a API do PicPay E-commerce para receber pagamentos em nosso sistema simples criado com PHP 8.
Instalação
Inclua o arquivo PicPay.php
no código:
<?php require_once("src/PicPay.php"); use Misterioso013\Payments\PicPay; $picpay = New PicPay(x_picpay_token, x_seller_token);
Ou utilize o composer para facilitar a sua vida. Instalação:
composer require misterioso013/picpay-php
Exemplo de uso:
<?php require __DIR__. "vendor/autoload.php"; use Misterioso013\Payments\PicPay; $picpay = New PicPay(x_picpay_token, x_seller_token);
Atenção: Lembre-se de substituir x_picpay_token
e x_seller_token
pelos seus token encontrados no site do PicPay.
Solicitar Pagamentos
O cliente decide pagar usando o PicPay e agora é só gerar o pagamento com os dados dele. Teste o código:
$data = array( "referenceId" => 100000000, "callbackUrl" => "http://www.sualoja.com.br/callback", "returnUrl" => "http://www.sualoja.com.br/cliente/pedido/102030", "value" => 0.50, "expiresAt" => "2022-05-01T16:00:00-03:00", "channel" => "my-channel", "purchaseMode" => "in-store", "buyer" => [ "firstName"=> "João", "lastName"=> "Da Silva", "document"=> "123.456.789-10", "email"=> "teste@picpay.com", "phone" => "+55 27 12345-6789" ]); print_r($picpay->Payments($data));
Entenda a resposta
Ao solicitar o pagamento você recebe um Array com os seguintes dados:
Erros
Os erros irão retornar as seguintes mensagens:
- O Token informado é inválido
- Algumas propriedades não passaram no teste de validação.
- Problema geral, verifique se a transação foi criada ou cancele a mesma.
Esperar por erros ajuda a não depender apenas do cliente definir digitar os dados corretamente ou da API que você está usando. Aconteça o que acontecer mas seu sistema nunca cairá por causa de algum erro.
Erro 422 - Validação de Dados
Resposta à possíveis erros:
Array
(
[0] => stdClass Object
(
[message] => O campo reference id é obrigatório.
[field] => referenceId
)
[1] => stdClass Object
(
[message] => O campo value é obrigatório.
[field] => value
)
[2] => stdClass Object
(
[message] => O campo callback url é obrigatório.
[field] => callbackUrl
)
[3] => stdClass Object
(
[message] => O campo buyer é obrigatório.
[field] => buyer
)
[4] => stdClass Object
(
[message] => O campo buyer.document é obrigatório.
[field] => buyer.document
)
)
Exemplo de como verificar esses erros:
$data = array(
"referenceId" => "",
"callbackUrl" => "",
"returnUrl" => "",
"value" => "",
"expiresAt" => "",
"channel" => "my-channel",
"purchaseMode" => "in-store",
"buyer" => [
"firstName"=> "",
"lastName"=> "",
"document"=> "",
"email"=> "",
"phone" => ""
]);
$payment = $picpay->Payments($data);
if(isset($payment->error)) {
if(isset($payment->error->errors)){
foreach($payment->error->errors as $error) {
$message = $error->message;
$field = $error->field;
echo "Atenção! {$message} | Campo: {$field} <br>";
}
}
}
Status
Consulte o status do seu pedido de forma simples. Use nosso exemplo para melhor compreensão
Use o
referenceId
como indetificador do pedido
Exemplo:
$request = $picpay->Status($referenceId); print_r($request);
Retorno em caso de sucesso:
stdClass Object ( [referenceId] => 960361262 [status] => paid [createdAt] => 2021-09-09T07:29:37.000000Z [updatedAt] => 2021-09-09T09:00:17.000000Z [value] => 0.5 [authorizationId] => 0000b800cf788600237f30f3 )
Entenda o Array acima:
Possíveis status:
Cancelamento
Cancele pedidos que ainda não foram pagos ou devolva o dinheiro de pagamentos já concluídos.
Use o
referenceId
como indetificador do pedido Use oauthorizationId
para cancelar pedidos que já estão pagos
Exemplo:
# o authorizationId só é obrigatório para pedidos que já foram pagos $request = $picpay->Cancellations($referenceId, $authorizationId); print_r($request);
Retorno em caso de sucesso:
stdClass Object ( [referenceId] => 960361262 [cancellationId] => 0000b800cf788600237f30f3 )
Entenda o Array acima:
Não pude testar tudo que é possível acontecer com o uso da API, e a sua última documentação se encontra fora de funcionamento no momento desse commit.
Sinta-se a vontade para fazer um fork e continuar esse projeto, tenho certeza que isso ajudará muita gente.