Download the PHP package klebervmv/bs2pay without Composer
On this page you can find all versions of the php package klebervmv/bs2pay. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package bs2pay
SDK PHP - BS2 Pay ADIQ E-commerce
SDK PHP completo e pronto para produção da adquirente BS2 Pay ADIQ, construído sobre a biblioteca HTTP easyCurl.
- ✅ Compatível com PHP 7.1 → 8.4
- ✅ OAuth2 com cache e renovação automática de token
- ✅ Sem retry automático — evita risco de cobrança duplicada por timeout
- ✅ Suporte completo a 3DS 2.0 integrado
- ✅ Vault, Zero Auth, recorrência (incluindo nridElo da Elo) e marketplace
- ✅ Webhooks com validação de assinatura HMAC SHA-256 constant-time
- ✅ Logging estruturado em JSON com mascaramento automático de PAN, CVV e tokens
- ✅ Mapeamento dos códigos de retorno de Visa, Mastercard, Elo, Amex e MAC
Instalação
Dependências:
php≥ 7.1, com extensõesjsonecurlklebervmv/easycurl^1.0
Configuração rápida
Ambientes
| Ambiente | URL |
|---|---|
| sandbox | https://ecommerce-sandbox.adiq.io |
| homologation | https://ecommerce-hml.adiq.io |
| production | https://ecommerce.adiq.io |
Uso
1. Tokenizar cartão (uso único, ~10 min)
2. Criar pagamento (autoriza + captura)
3. Capturar pagamento autorizado (late capture)
4. Cancelar / refund
5. Consultar pagamento
6. Vault (one-click / recorrência)
7. Zero Auth (validar cartão sem cobrar)
8. Consulta BIN
9. 3DS 2.0 integrado
10. Webhook
Tratamento de erros
Todas as exceptions herdam de Adiq\Exceptions\AdiqException:
| Exception | Quando ocorre |
|---|---|
ValidationException |
Validação local OU HTTP 400 |
AuthException |
HTTP 401 / 403, falha de OAuth |
NotFoundException |
HTTP 404 |
RateLimitException |
HTTP 429 (com getRetryAfter()) |
PaymentException |
Recusa de bandeira (com getReturnCode(), MAC, etc) |
NetworkException |
Timeout, DNS, conexão recusada, 5xx persistente |
Política de retry — leia antes
O SDK não faz retry automático. Essa é uma decisão deliberada de segurança.
Em pagamentos, um POST /v1/payments que falha com timeout ou 5xx pode ter sido processado com sucesso pelo servidor — apenas a resposta se perdeu. Retentar automaticamente nesse caso pode debitar o cartão do cliente duas vezes.
Como lidar com falhas incertas
- Use
orderNumberúnico e determinístico por pedido (emsellerInfo.orderNumber). - Em caso de
NetworkExceptionempayments->create(), não retente cegamente. Antes, consulte:
Quando retentar é seguro (decisão do caller)
| Operação | Seguro retentar? |
|---|---|
| GET (consultas) | ✅ Sempre — idempotente |
| DELETE vault | ✅ — idempotente |
POST /v1/tokens/cards |
⚠️ Baixo risco — não cobra |
POST /v1/payments |
❌ Apenas após verificar via getByOrderNumber |
PUT capture/cancel |
❌ "Já capturado" pode ser falso-OK |
RateLimitException (HTTP 429) expõe getRetryAfter() — você pode aguardar e reenviar manualmente.
Logging
Por padrão, o SDK loga em JSON em STDERR com mascaramento automático de campos sensíveis (cardNumber, securityCode, numberToken, clientSecret, authorization, etc).
Para usar logger customizado:
Estrutura
Executando os testes
O tests/3ds-challenge.html é uma página auxiliar — abra direto no browser
(via Laragon ou servidor PHP embutido) para concluir manualmente o passo de
challenge do fluxo 3DS 2.0.
Boas práticas
- Valores em centavos:
amounté sempre inteiro (1000= R$ 10,00). - PCI-DSS: nunca persista PAN ou CVV. Use
tokens->create()no momento da cobrança ouvault->store()para armazenar. - Idempotência: use
sellerInfo.orderNumberúnico por pedido — permite consulta posterior porpayments->getByOrderNumber(). - Webhooks: sempre valide a assinatura HMAC e responda 2xx rapidamente; processe em background.
- 3DS: mesmo após captura imediata (
ac), inclua deviceInfo + threeDs para ter liability shift. - Recorrência Elo: salve
nridEloda primeira transação para reenviar nas subsequentes.
Próximos passos
- /help:
/helpna CLI Claude Code - Feedback: https://github.com/anthropics/claude-code/issues
Licença
MIT — veja LICENSE.