tiexpert/ws-boleto-santander

WS Boletos Santander 是为简化 PHP 应用程序与 Santander 银行在线票据生成集成而创建的类。

1.2.1 2018-11-16 20:23 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:47:36 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads License
SensioLabsInsight

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。

重要问题

在与数据库通信之前,首先需要要求他们在那里注册其数字证书。没有这个,银行的服务无法知道是谁在请求。

还有一点,您的数字证书也必须遵守一些规则。

首先,它应该是客户端类型或两者都是,也就是说,它必须以任何方式提供证明其身份的手段。

Aba de informações gerais do certificado

此外,您的证书必须包含4个重要信息

  1. 公钥的密钥长度应该是2048位。

Tamanho da chave-pública

  1. 必须包含序列号。

Chave Serial

  1. 拥有一个数字指纹。

Impressão Digital do Certificado

  1. 以及,一个通用名称。

Common Name

为了简化与桑坦德服务通信的过程,下载他们的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.没有任何隶属关系、联系或其他关系。

软件在此提供“现状”且不提供任何保证。因此,使用此软件是用户完全负责的。