tiexpert / ws-boleto-santander
WS Boletos Santander 是为简化 PHP 应用程序与 Santander 银行在线票据生成集成而创建的类。
Requires
- php: >=5.6
- ext-curl: *
- ext-dom: *
- ext-xmlwriter: *
Requires (Dev)
- fzaninotto/faker: 1.6.*
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: 5.6.*
This package is not auto-updated.
Last update: 2024-09-14 19:47:36 UTC
README
WSBoletoSantander
WS Boleto Santander 是一组用于简化 PHP 应用程序与 Santander 银行在线票据生成集成的类。
索引
功能
- 票据的包含/注册
- 已注册票据调查
- 处理与 Santander 服务的通信错误
要求
- PHP 5.6 或更高版本
PHP 5.6 和 7.0 的支持将于 2018 年 12 月结束。
强烈建议迁移到更高版本。
以下扩展必须启用
- cURL
- DOM
- XmlWriter
基本使用指南
安装库
WS Boleto Santander 可以通过以下命令使用 Composer 安装 Composer
composer require tiexpert/ws-boleto-santander
Composer 将自动检查您的环境以确定您的服务器是否可以运行 WSBoletoSantander 库。
票据组装
注册票据需要以下类
use TIExpert\WSBoletoSantander\Boleto; use TIExpert\WSBoletoSantander\BoletoSantanderServico; use TIExpert\WSBoletoSantander\ComunicadorCurlSOAP; use TIExpert\WSBoletoSantander\Convenio; use TIExpert\WSBoletoSantander\InstrucoesDeTitulo; use TIExpert\WSBoletoSantander\Pagador; use TIExpert\WSBoletoSantander\Titulo;
现在,在您的脚本中定义公约。
$convenio = new Convenio();
如果配置文件已经准备好了,公约的信息也已经正确设置。如果没有,您现在可以设置它们。
$convenio->setCodigoBanco("0033"); $convenio->setCodigoConvenio("123456");
然后,定义票据付款人的信息。
$pagador = new Pagador($tipoDoc, $numeroDoc, $nome, $endereco, $bairro, $cidade, $UF, $CEP);
如果您不想使用已经包含数据的付款人实例,也是可以的。付款人有一个无参数的默认构造函数,每个属性都有一个 set 方法来设置值,例如,setNome, setCidade, setCEP 等。
最后,一个复合对象,包含票据的标题信息。
首先定义标题的说明。
$instrucoes = new InstrucoesDeTitulo();
最常见的说明可以通过 config.ini 进行配置。但,如 $multa
, $multarApos
, $juros
, $tipoDesconto
, $valorDesconto
, $dataLimiteDesconto
, $valorAbatimento
, $tipoProtesto
, $protestarApos
, $baixarApos
等所有属性都有 set 方法。
表示日期的属性应使用 DateTime 实例或 "dmY" 格式的字符串。例如:$instrucao->setDataLimiteDesconto("28032017")
,即折扣应适用于 2017 年 3 月 28 日。
最后,我们将使用这些说明在 Titulo 类中组成标题信息。
$titulo = new Titulo($valor, $nossoNumero, $seuNumero, $dataVencimento, $mensagem, $dataEmissao, $especie, $instrucoes);
与其他类一样,所有属性都有相应的 set 方法。
重要的是要强调,每个 Título 实例都必须包含一个 InstrucoesDeTitulo 实例。否则,在导出 XML 时将发生错误。
现在,所有部分都准备好了,只需组装票据。
$boleto = new Boleto($convenio, $pagador, $titulo);
注册票据
票据已组装,即对象和字段已填充,需要进行两步注册:请求票据注册请求并确认它。
首先,让我们通过在服务客户端中注入一个通信者来准备服务。
$comunicador = new ComunicadorCurlSOAP (); $svc = new BoletoSantanderServico($comunicador);
现在,我们必须使用 solicitarTicketInclusao
方法请求一个票据。
WebService 返回的任何错误都将通过方法抛出异常。
$ticket = $svc->solicitarTicketInclusao($boleto);
如果没有发生错误,则创建一个带有银行安全认证的 Ticket 实例。此时,将需要确定一个唯一的序列号(NSU),这将作为您的票据的标识符。对于每天的每个公约的每个票据注册,这个 NSU 必须是唯一的,即不能在相同的一天和公约中使用相同的 NSU。
$ticket->setNsu(1);
一旦票据准备好,只需将其作为参数传递给 incluirTitulo
方法。
$resultado = $svc->incluirTitulo($ticket);
此方法在注册成功时返回 true
,或者返回 false
。尽管,在失败的情况下,最有可能抛出一个带有失败原因的 Exception。
重要问题
在与数据库通信之前,首先需要要求他们在那里注册其数字证书。没有这个,银行的服务无法知道是谁在请求。
还有一点,您的数字证书也必须遵守一些规则。
首先,它应该是客户端类型或两者都是,也就是说,它必须以任何方式提供证明其身份的手段。
此外,您的证书必须包含4个重要信息
- 公钥的密钥长度应该是2048位。
- 必须包含序列号。
- 拥有一个数字指纹。
- 以及,一个通用名称。
为了简化与桑坦德服务通信的过程,下载他们的CA证书是很有趣的,目前是Entrust Root Certificate Authority—G2。
它可以在以下位置找到: https://www.entrust.com/get-support/ssl-certificate-support/root-certificate-downloads/
还需要将您的数字证书导出为PEM格式。
有了这两个文件,请将它们配置在WSBoletoSantander的config.ini文件中。
示例
[certificado] arquivo = "/var/www/html/meu_certificado_digital.pem" senha = "Senha do meu certificado" tipo_arquivo = "PEM" arquivo_ca = "/var/www/html/entrust_g2_ca.cer"
更多文档
在项目Wiki中很快将提供。
许可证
WS Boleto Santander是在Apache 2.0许可下分发的,并且不得以与该许可中明确表达的方式不同使用。
更多信息,请访问 https://apache.ac.cn/licenses/LICENSE2.0。
法律声明
此项目的作者与桑坦德银行S.A.没有任何隶属关系、联系或其他关系。
软件在此提供“现状”且不提供任何保证。因此,使用此软件是用户完全负责的。