vitorccs / bradesco-api-php
Bradesco在线汇票API的PHP SDK
v1.6.2
2022-10-17 21:13 UTC
Requires
- php: >=7.1
- ext-json: *
- ext-openssl: *
- guzzlehttp/guzzle: ^6.3.3|^7.0.1
Requires (Dev)
- php: >=7.2
- phpunit/phpunit: ^8.5
README
Bradesco在线汇票API的PHP SDK
要求
- PHP >= 7.1
描述
PHP SDK,用于与Bradesco在线汇票登记服务集成
Manual_Registro_de_Boleto_Bancario_Online_Janeiro 2019.pdf
安装
通过Composer
composer require vitorccs/bradesco-api-php
参数
如何使用
- 参数可以通过环境变量设置
putenv('BRADESCO_SANDBOX=true'); putenv('BRADESCO_TIMEOUT=20'); putenv('BRADESCO_CERT_PATH=myCertificate.pfx'); putenv('BRADESCO_CERT_PASSWORD=myPassword');
或通过array
传递
\BradescoApi\Http\Bradesco::setParams([ 'BRADESCO_SANDBOX' => true, 'BRADESCO_TIMEOUT' => 20, 'BRADESCO_CERT_PATH' => 'myCertificate.pfx', 'BRADESCO_CERT_PASSWORD' => 'myPassword' ]);
- 然后,只需使用以下命令,将汇票数据以
array
格式传递。
$boleto = \BradescoApi\BankSlip::create($data);
数据标准化
添加了多个函数以根据Bradesco API的要求标准化数据
- 缺失的字段使用其默认值填充(手册第19页)。
null
值被替换为空字符串""。integer
或float
值被转换为字符串。- 包含特殊字符的值被替换为基本字符。
- 付款人和地址的名称被截断到最大字符数。
- 日期格式为"yyyy-mm-dd"或"dd/mm/yyyy"的日期被标准化为"dd.mm.yyyy"。
- 货币格式为14.90或"14,90"的货币被标准化为"1490"。
- CPF和CNPJ号码"123.456.789-01"被标准化为"00012345678901"。
实现示例
error_reporting(E_ALL); ini_set('display_errors', 1); require __DIR__.'/vendor/autoload.php'; putenv('BRADESCO_SANDBOX=true'); putenv('BRADESCO_TIMEOUT=20'); putenv('BRADESCO_CERT_PATH=myCertificate.pfx'); putenv('BRADESCO_CERT_PASSWORD=myPassword'); use BradescoApi\Exceptions\BradescoApiException; use BradescoApi\Exceptions\BradescoRequestException; $data = [ "nuCPFCNPJ" => "123456789", "filialCPFCNPJ" => "0001", "ctrlCPFCNPJ" => "39", "idProduto" => "09", "nuNegociacao" => "123400000001234567", "nuCliente" => "123456", "dtEmissaoTitulo" => "25/05/2017", "dtVencimentoTitulo" => "2017-06-20", "vlNominalTitulo" => 100.00, "cdEspecieTitulo" => "04", "nomePagador" => "Cliente Teste", "logradouroPagador" => "Rua Teste", "nuLogradouroPagador" => "90", "complementoLogradouroPagador" => null, "cepPagador" => "12345", "complementoCepPagador" => "500", "bairroPagador" => "Bairro Teste", "municipioPagador" => "Cidade Teste", "ufPagador" => "SP", "nuCpfcnpjPagador" => "549.435.260-98", ]; try { $bankSlip = \BradescoApi\BankSlip::create($data); print_r($bankSlip); } catch (BradescoApiException $e) { // erros retornados pela API Bradesco echo $e->getErrorCode() == 69 // este é o único código de erro que não exige tratativa ? "API Bradesco indica que boleto já foi registrado" : sprintf("%s (%s)", $e->getMessage(), $e->getErrorCode()); } catch (BradescoRequestException $e) { // erros não tratados (erros HTTP 4xx e 5xx) echo sprintf("%s (%s)", $e->getMessage(), $e->getErrorCode()); } catch (\Exception $e) { // demais erros echo $e->getMessage(); }
提示
- 即使在Sandbox环境中,也必须使用正确的证书文件和密码,并使用实际受益人的数据(nuCPFCNPJ,filialCPFCNPJ,ctrlCPFCNPJ,nuNegociacao)。此外,您的汇票钱包已授权给Bradesco以使用在线登记API。
- 与任何服务一样,Bradesco API没有100%的可用性。建议存储成功状态,并预测对未返回成功的案例的处理。
- 当检测到Bradesco API返回的错误消息时,抛出BradescoApiException异常,并抛出BradescoRequestException异常以处理服务器和连接问题(HTTP 4xx和5xx错误)
- 唯一不需要重试的异常是代码69,因为它表示汇票已注册
OpenSSL 3
从OpenSSL 3版本开始,.pfx
证书可能会出现读取错误,需要启用"legacy"模式(查看StackOverflow)
测试
如果您想贡献,请实现PHPUnit单元测试。
为了执行
- 将phpunit.xml.dist复制到项目根目录中的phpunit.xml
- 使用您的访问数据更改ENV参数
- 在项目目录的终端中执行以下命令
composer test