betocampoy/cora-sdk 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

betocampoy/cora-sdk

Composer 安装命令:

composer require betocampoy/cora-sdk

包简介

SDK PHP para integrar com as APIs da Cora na modalidade Integracao Direta (mTLS + client_credentials).

README 文档

README

by Beto Campoy

SDK oficial (não-oficial 😄) para integração PHP com a API do Banco Cora, incluindo suporte completo a mTLS com certificado A1/A3, criação de boletos, PIX, consultas e futuros endpoints do ecossistema financeiro Cora.

Este SDK foi projetado para funcionar tanto em PHP puro (legado) quanto em aplicações modernas com Symfony, oferecendo uma camada consistente, simples e modular sobre as APIs da Cora.

📦 Instalação

Via Composer:

composer require betocampoy/cora-sdk

⚙️ Configuração

O SDK utiliza uma classe central chamada CoraConfig, que recebe todas as configurações necessárias:

  • Client ID
  • Client Secret
  • Certificado A1/A3 (PFX/P12)
  • Senha do certificado
  • URL da API (stage/prod)
  • URL mTLS
  • Timeout

Você pode configurar manualmente:

use BetoCampoy\CoraSdk\CoraConfig;

$config = new CoraConfig(
    clientId: 'seu-client-id',
    clientSecret: 'seu-client-secret',
    certPath: '/caminho/do/certificado.pfx',
    certPassword: 'senha-cert',
    baseUrl: 'https://api.stage.cora.com.br',
    matlsBaseUrl: 'https://matls-clients.api.stage.cora.com.br',
);

Ou automaticamente via variáveis de ambiente:

$config = CoraConfig::fromEnv();

Variáveis de ambiente suportadas

CORA_CLIENT_ID=
CORA_CLIENT_SECRET=
CORA_CERT_PATH=
CORA_CERT_PASSWORD=
CORA_BASE_URL=https://api.stage.cora.com.br
CORA_MATLS_BASE_URL=https://matls-clients.api.stage.cora.com.br
CORA_TIMEOUT=30

🔐 Conexão Segura (mTLS)

O SDK configura automaticamente cURL com:

  • Certificado cliente PFX/P12
  • Senha do certificado
  • Auth mTLS bidirecional
  • Timeout configurável

Erros são convertidos para exceções:

  • TransportException → falhas de rede / SSL
  • ApiException → erros HTTP retornados pela Cora

🧰 Uso em PHP puro

Criando cobrança:

$config = CoraConfig::fromEnv();
$client = new CoraClient($config);

$invoiceService = new InvoiceService($client);

$invoice = $invoiceService->createInvoice([
    "code" => "mensal_123",
    "amount" => 19990,
    "description" => "Mensalidade",
    "customer" => [
        "name" => "Transportadora XPTO",
        "document" => "12345678000155",
        "email" => "financeiro@empresa.com"
    ]
]);

✨ NOVO EM v0.1.2 — GERAÇÃO NATIVA DE QR CODE PIX

O SDK agora inclui o serviço PixQrCodeGenerator, que encapsula automaticamente o pacote endroid/qr-code.

Você passa somente o EMV retornado pela Cora → e ele devolve diretamente a Data URI para <img src="">.

📌 Exemplo em PHP puro

use BetoCampoy\CoraSdk\Service\PixQrCodeGenerator;

$qr = new PixQrCodeGenerator();

$emv = $invoice['pix']['emv']; // retornado pela Cora

$dataUri = $qr->dataUriFromEmv($emv);

echo '<img src="' . $dataUri . '" />';

📌 Exemplo em Symfony (Controller)

$qrcode = $pixQrCodeGenerator->dataUriFromEmv($invoice['pix']['emv']);

return $this->render('billing/pix.html.twig', [
    'qrcode' => $qrcode
]);

Twig:

<img src="{{ qrcode }}" alt="Pix QR Code" class="img-fluid" />

🧩 Serviço PixQrCodeGenerator

class PixQrCodeGenerator
{
    public function __construct(
        private int $defaultSize = 700,
        private int $defaultMargin = 5
    ) {}

    public function dataUriFromEmv(string $emv, ?int $size = null, ?int $margin = null): string
    {
        $builder = new Builder(
            writer: new PngWriter(),
            writerOptions: [],
            validateResult: false,
            data: $emv,
            size: $size ?? $this->defaultSize,
            margin: $margin ?? $this->defaultMargin,
            roundBlockSizeMode: RoundBlockSizeMode::Margin,
        );

        return $builder->build()->getDataUri();
    }

    public function pngFromEmv(string $emv): string
    {
        return $builder->build()->getString();
    }
}

🧾 Endpoints disponíveis (v0.1.2)

InvoiceService

  • createInvoice(array $payload): array
  • createBoleto(array $payload): array
  • getInvoice(string $invoiceId): array
  • cancelInvoice(string $invoiceId): array

PixQrCodeGenerator

  • dataUriFromEmv(string $emv): string
  • pngFromEmv(string $emv): string

🚨 Troubleshooting

❌ "could not load PEM client certificate"

  • Caminho incorreto
  • Permissões
  • Certificado corrompido

❌ "schannel: next InitializeSecurityContext failed"

  • Problemas de cadeia PFX no Windows

❌ HTTP 400 / 401 / 403

  • Client ID/Secret incorretos
  • Ambiente errado (stage vs production)
  • Payload fora do padrão Cora

🗺 Roadmap

  • QRCode Pix nativo
  • Transferências
  • Pagamento de boletos
  • Extrato bancário
  • Webhooks
  • Symfony Bundle oficial
  • Testes automatizados
  • Mock server local

📄 Licença

MIT

✨ Autor

Beto Campoy

betocampoy/cora-sdk 适用场景与选型建议

betocampoy/cora-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 12 月 03 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 betocampoy/cora-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 betocampoy/cora-sdk 我们能提供哪些服务?
定制开发 / 二次开发

基于 betocampoy/cora-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 10
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 27
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-12-03