Obtenha suas credenciais de lojista
Cadastre-se, adicione o seu site e envie para moderação. Depois de aprovado, o ID do lojista e a senha secreta ficam no painel.
Desenvolvedores
Requisições HTTP assinadas contra endpoints simples. Use a página de pagamento hospedada ou peça os dados de pagamento em JSON e monte o seu próprio checkout — nos dois casos o resultado chega até você como um único webhook assinado.
# Solicita os dados de pagamento - a assinatura é montada a partir da sua senha de lojista # hash = md5(id : summ : password : sistems : order_id) HASH=$(printf '%s' "5:100.00:$PAYOU_PASSWORD:card_RUB:4444" | md5sum | cut -d' ' -f1) curl -G https://payou.pro/api/new/api.php \ --data-urlencode id=5 \ --data-urlencode sistems=card_RUB \ --data-urlencode summ=100.00 \ --data-urlencode order_id=4444 \ --data-urlencode user_code=1 \ --data-urlencode user_email=[email protected] \ --data-urlencode hash="$HASH"
Cadastre-se, adicione o seu site e envie para moderação. Depois de aprovado, o ID do lojista e a senha secreta ficam no painel.
Monte o hash com o ID do lojista, o valor, o segredo, o método e o ID do pedido e chame o endpoint. O valor é uma string decimal com ponto.
A Payou envia o resultado para a sua URL com uma assinatura. Confira a assinatura, responda MERCHANT_ORDER_ID|success e credite o pedido uma só vez.
AUTENTICAÇÃO
As requisições são assinadas, não autenticadas por token: não existe cabeçalho de autorização. O hash é um md5 sobre o ID do lojista, o valor, a sua senha secreta, o método e o ID do pedido, de modo que o segredo em si nunca trafega. Os repasses usam uma chave de API separada, assinada com HMAC-SHA256.
VALORES
O valor é enviado como uma string decimal com ponto como separador — 100.00, nunca 100,00. A mesma string entra na assinatura, então uma diferença de formatação quebra o hash, e não o pagamento.
ID DO PEDIDO
order_id é o seu próprio identificador. É por ele que o endpoint de status faz a busca, é ele que o webhook devolve para você e é contra ele que você concilia — por isso precisa ser único do seu lado.
WEBHOOKS
A Payou envia AMOUNT, status, intid, MERCHANT_ORDER_ID e SIGN para a sua URL como application/x-www-form-urlencoded. Verifique o SIGN e responda MERCHANT_ORDER_ID|success — qualquer outro corpo é tratado como não entregue.
STATUS
Duas consultas: uma pelo id da transação na Payou, outra pelo seu order_id. As duas respondem com id, order_id, status, paysys e summ, então uma rotina de conciliação não precisa de mais nada.
PRODUÇÃO
Não existe um host de sandbox separado. Você integra direto nos endpoints do ambiente de produção, com uma conta de lojista liberada depois da moderação.
Toda a superfície de uma primeira integração. As chamadas de pagamento são assinadas com a sua senha de lojista; os repasses usam uma chave de API separada e HMAC-SHA256.
| Método | Endpoint | Finalidade |
|---|---|---|
| GET | /sci/v1/ | Página de pagamento hospedada — envie o pagador para cá |
| GET | /api/new/api.php | Dados de pagamento em JSON, para o seu próprio checkout |
| GET | /api/status | Status do pagamento pelo id da transação na Payou |
| GET | /api/status2 | Status do pagamento pelo seu order_id |
| POST | /api/new/confirm_payment.php | O pagador confirma ou cancela um pagamento |
| POST | /api/payout_create.php | Cria um repasse para um cartão ou uma conta |
API
País e método são parâmetros da mesma chamada, não integrações separadas. A rota por trás deles é escolhida pela camada.
Requisição
# Solicita os dados de pagamento - a assinatura é montada a partir da sua senha de lojista # hash = md5(id : summ : password : sistems : order_id) curl -G https://payou.pro/api/new/api.php \ --data-urlencode id=5 \ --data-urlencode sistems=card_RUB \ --data-urlencode summ=100.00 \ --data-urlencode order_id=4444 \ --data-urlencode user_code=1 \ --data-urlencode hash="$HASH"
Resposta
# HTTP 200 · application/json { "id": "3874512", "card": "0000 0000 0000 0000", "wallet_owner": "CARDHOLDER NAME", "sbp_bank": "BANK NAME", "amount": "100.00" }
Resposta de demonstração. Nenhum valor real é movimentado.
A documentação é aberta — não é preciso reunião de vendas para começar a ler nem para desenvolver sobre os endpoints.