Caminho no Gestor bibliotecas/stripe.php
Chamadas diretas à API REST do Stripe (api.stripe.com) com cURL, sem o SDK oficial. A versão da API é fixada em STRIPE_API_VERSION (2024-06-20), para o formato das respostas não mudar com a configuração da conta.
Credenciais
O caminho normal é um registro da tabela gateways_pagamentos (cadastrado no módulo de gateways) do tipo stripe:
| Coluna | Uso |
|---|---|
client_id |
Publishable key (pk_…) |
client_secret |
Secret key (sk_…) |
webhook_secret |
Signing secret do webhook (whsec_…) |
ambiente |
P = produção; qualquer outro valor = sandbox |
moeda |
Padrão BRL |
gestor_incluir_biblioteca('stripe');
stripe_gateways_pagamentos_configurar(); // o gateway padrão (padrao='S') ou o primeiro ativo
stripe_gateways_pagamentos_configurar(['id' => 7]); // um gateway específicoA configuração vai para $_CONFIG['stripe'], que também pode ser preenchido à mão. stripe_obter_credenciais() devolve false sem secret_key; stripe_info() resume o estado; stripe_testar_conexao() chama GET /v1/balance. stripe_is_modo_gateway(), stripe_obter_gateway_id() e stripe_obter_gateway_dados() informam qual gateway foi carregado.
Requisição
stripe_requisicao(['endpoint' => '/v1/…', 'method' => 'GET'|'POST'|'DELETE', 'data' => [...], 'idempotency_key' => …]) devolve ['http_code', 'data'] ou false (sem credencial ou erro de rede). Erro da API (4xx/5xx) não é false: confira http_code. Erros vão para gestor/logs/stripe-<data>.log via log.php, sem a chave.
Valores: stripe_valor_menor_unidade(19.9, 'BRL') → 1990; stripe_valor_decimal() faz o inverso; stripe_moeda_sem_decimais() cobre JPY, KRW, VND, CLP e PYG.
Operações
| Área | Funções |
|---|---|
| Clientes | stripe_obter_ou_criar_cliente(['email', 'nome', 'metadata']): procura pelo e-mail antes de criar |
| Pagamento único | stripe_criar_payment_intent(), stripe_consultar_payment_intent(), stripe_consultar_setup_intent() |
| Assinaturas | stripe_criar_assinatura() (nasce default_incomplete e devolve o client_secret da primeira fatura, ou trialing com trial_period_days; coupon_id aplica um coupon do Stripe em discounts; add_invoice_items põe produtos e frete na primeira fatura), stripe_consultar_assinatura() (com expand opcional), stripe_definir_metodo_padrao_assinatura(), stripe_trocar_preco_assinatura() (upgrade/downgrade com proration, padrão always_invoice; corpo em stripe_troca_preco_payload()), stripe_suspender_assinatura() (pause_collection), stripe_ativar_assinatura() (desfaz pausa ou cancelamento agendado), stripe_cancelar_assinatura() |
| Reembolso | stripe_reembolsar() |
| Catálogo | stripe_criar_produto(), stripe_atualizar_produto() (merge parcial; corpo em stripe_produto_payload()), stripe_consultar_produto(), stripe_listar_produtos(), stripe_arquivar_produto(); stripe_criar_preco(), stripe_consultar_preco(), stripe_listar_precos(), stripe_arquivar_preco() (um preço é imutável no Stripe: mudar valor é criar outro) |
| Apoio | stripe_traduzir_status() (status → texto em português), stripe_log_registro() |
Webhook
stripe_validar_webhook(['payload' => $corpoCru, 'signature_header' => $cabecalho, 'tolerancia' => 300]) confere o cabeçalho Stripe-Signature (HMAC-SHA256 de t.payload com o webhook_secret, comparação em tempo constante, janela de 300 s) e devolve o evento decodificado ou false.
O endpoint é /_gateways/stripe/webhook (controlador plataforma-gateways), que valida com o gateway padrão e dispara o hook stripe.webhook.
Funções
Gerado a partir de gestor/bibliotecas/stripe.php · 37 funções
stripe_log_registro
ver no código · linha 20 ↗stripe_log_registro($logData = [])Parâmetros
$logData
stripe_gateways_pagamentos_configurar
ver no código · linha 31 ↗stripe_gateways_pagamentos_configurar(array|false $params = false): boolConfigura a biblioteca a partir de um registro da tabela gateways_pagamentos.
Parâmetros
$paramsarray|false- ['id' => id do gateway] ou vazio para o gateway padrão do tipo stripe.
Retorno
stripe_is_modo_gateway
ver no código · linha 87 ↗stripe_is_modo_gateway()stripe_obter_gateway_id
ver no código · linha 92 ↗stripe_obter_gateway_id()stripe_obter_gateway_dados
ver no código · linha 97 ↗stripe_obter_gateway_dados()stripe_obter_credenciais
ver no código · linha 105 ↗stripe_obter_credenciais(): array|falseRetorno
stripe_requisicao
ver no código · linha 134 ↗stripe_requisicao(array|false $params = false): array|falseRequisição HTTP à API do Stripe.
Parâmetros
$paramsarray|false
Retorno
stripe_moeda_sem_decimais
ver no código · linha 204 ↗stripe_moeda_sem_decimais($moeda)Moedas sem casas decimais na API do Stripe (subset relevante).
Parâmetros
$moeda
stripe_valor_menor_unidade
ver no código · linha 209 ↗stripe_valor_menor_unidade($valor, $moeda = 'BRL')Converte valor decimal para a menor unidade da moeda (centavos em BRL).
Parâmetros
$valor$moeda
stripe_valor_decimal
ver no código · linha 215 ↗stripe_valor_decimal($valor, $moeda = 'BRL')Converte da menor unidade para decimal.
Parâmetros
$valor$moeda
stripe_obter_ou_criar_cliente
ver no código · linha 230 ↗stripe_obter_ou_criar_cliente(array $params = Array()): array|falseLocaliza um cliente pelo e-mail ou cria um novo. Evita duplicar customers a cada checkout.
Parâmetros
$paramsarray- ['email' => string, 'nome' => string opcional, 'metadata' => array opcional]
Retorno
stripe_criar_payment_intent
ver no código · linha 265 ↗stripe_criar_payment_intent(array $params = Array()): array|falseCria um PaymentIntent para pagamento único no Payment Element.
Parâmetros
$paramsarray- ['valor' => decimal, 'moeda' => 'BRL', 'customer_id' => opc,
Retorno
stripe_consultar_payment_intent
ver no código · linha 298 ↗stripe_consultar_payment_intent($params = Array())Parâmetros
$params
stripe_consultar_setup_intent
ver no código · linha 315 ↗stripe_consultar_setup_intent(array $params = Array()): array|falseConsulta um SetupIntent (seti_...).
Parâmetros
$paramsarray- ['setup_intent_id' => obrig]
Retorno
stripe_criar_assinatura
ver no código · linha 346 ↗stripe_criar_assinatura(array $params = Array()): array|falseCria uma assinatura em default_incomplete para confirmação no Payment Element.
Parâmetros
$paramsarray- ['customer_id' => obrig, 'price_id' => obrig, 'referencia' => opc,
Retorno
stripe_consultar_assinatura
ver no código · linha 442 ↗stripe_consultar_assinatura(array $params = Array()): array|falseConsulta uma assinatura.
Parâmetros
$paramsarray- ['subscription_id' => obrig, 'expand' => array opcional]
Retorno
stripe_definir_metodo_padrao_assinatura
ver no código · linha 469 ↗stripe_definir_metodo_padrao_assinatura(array $params = Array()): array|falseFixa o método de pagamento padrão de uma assinatura.
Parâmetros
$paramsarray- ['subscription_id' => obrig, 'payment_method_id' => obrig]
Retorno
stripe_cancelar_assinatura
ver no código · linha 482 ↗stripe_cancelar_assinatura($params = Array())Cancela definitivamente uma assinatura.
Parâmetros
$params
stripe_troca_preco_payload
ver no código · linha 509 ↗stripe_troca_preco_payload(array $sub, array $params = Array()): array|falseMonta o corpo da troca de preço de uma assinatura, resolvendo trial_end contra a assinatura em curso. Separada da requisição para ser verificável sem rede.
Parâmetros
$subarray- Assinatura consultada (precisa de items.data[0].id).
$paramsarray- Mesmos parâmetros de stripe_trocar_preco_assinatura.
Retorno
stripe_trocar_preco_assinatura
ver no código · linha 544 ↗stripe_trocar_preco_assinatura(array $params = Array()): array|falseTroca o preço de uma assinatura ativa (upgrade/downgrade) com proration nativa.
Parâmetros
$paramsarray- ['subscription_id' => obrig, 'price_id' => obrig,
Retorno
stripe_suspender_assinatura
ver no código · linha 563 ↗stripe_suspender_assinatura($params = Array())Suspende a cobrança (pause_collection) mantendo a assinatura viva.
Parâmetros
$params
stripe_ativar_assinatura
ver no código · linha 582 ↗stripe_ativar_assinatura($params = Array())Reativa uma assinatura pausada ou com cancelamento agendado. Não ressuscita uma assinatura que já alcançou o estado terminal canceled.
Parâmetros
$params
stripe_reembolsar
ver no código · linha 618 ↗stripe_reembolsar(array $params = Array()): array|falseReembolsa um pagamento.
Parâmetros
$paramsarray- ['payment_intent_id' => ou 'charge_id', 'valor' => decimal opc (total se ausente), 'moeda' => opc]
Retorno
stripe_criar_produto
ver no código · linha 644 ↗stripe_criar_produto(array $params = Array()): array|falseCria um produto no catálogo (POST /v1/products).
Parâmetros
$paramsarray- ['nome' => obrig, 'descricao' => opc, 'imagens' => array de URLs opc,
Retorno
prod_...) ou false.stripe_produto_payload
ver no código · linha 676 ↗stripe_produto_payload(array $params = Array()): arrayMonta o corpo de uma atualização de produto.
Parâmetros
$paramsarray- Mesmos campos de
stripe_atualizar_produto.
Retorno
http_build_query.stripe_atualizar_produto
ver no código · linha 703 ↗stripe_atualizar_produto(array $params = Array()): array|falseAtualiza um produto existente (POST /v1/products/{id}).
Parâmetros
$paramsarray- ['product_id' => obrig, 'nome' => opc, 'descricao' => opc,
Retorno
stripe_consultar_produto
ver no código · linha 718 ↗stripe_consultar_produto($params = Array())Parâmetros
$params
stripe_listar_produtos
ver no código · linha 731 ↗stripe_listar_produtos(array $params = Array()): array|falseLista produtos da conta (GET /v1/products).
Parâmetros
$paramsarray- ['limite' => 1..100 (padrão 100), 'ativo' => bool opc, 'starting_after' => opc]
Retorno
stripe_arquivar_produto
ver no código · linha 746 ↗stripe_arquivar_produto($params = Array())Arquiva um produto (o Stripe não permite exclusão de produto com preços associados).
Parâmetros
$params
stripe_criar_preco
ver no código · linha 763 ↗stripe_criar_preco(array $params = Array()): array|falseCria um preço (POST /v1/prices).
Parâmetros
$paramsarray- ['product_id' => obrig, 'valor' => decimal obrig, 'moeda' => 'BRL',
Retorno
price_...) ou false.stripe_consultar_preco
ver no código · linha 794 ↗stripe_consultar_preco($params = Array())Parâmetros
$params
stripe_listar_precos
ver no código · linha 812 ↗stripe_listar_precos(array $params = Array()): array|falseLista preços da conta (GET /v1/prices).
Parâmetros
$paramsarray- ['product_id' => opc (filtra por produto), 'limite' => 1..100,
Retorno
stripe_arquivar_preco
ver no código · linha 829 ↗stripe_arquivar_preco($params = Array())Arquiva um preço (active=false). Preço em uso por assinatura viva continua cobrando.
Parâmetros
$params
stripe_validar_webhook
ver no código · linha 849 ↗stripe_validar_webhook(array $params = Array()): array|falseValida a assinatura de um webhook (Stripe-Signature) por HMAC-SHA256.
Parâmetros
$paramsarray- ['payload' => corpo cru, 'signature_header' => header, 'tolerancia' => seg (300)]
Retorno
stripe_testar_conexao
ver no código · linha 889 ↗stripe_testar_conexao()Testa a conexão com as credenciais atuais (GET /v1/balance).
stripe_traduzir_status
ver no código · linha 894 ↗stripe_traduzir_status($status)Parâmetros
$status
stripe_info
ver no código · linha 912 ↗stripe_info()