mpma/serpro-proid-consumer

ProId SERPRO API 的消费者

2.0.0 2020-06-18 13:35 UTC

README

此库的目的是将 SERPRO 的 ProID API 用于文档的发行、封锁、限制、解封和删除,以及向 ProID 应用发送消息。

由马拉尼昂州人民检察院现代化与技术协调处开发。

安装

要在您的项目中安装此库,请使用 composer

composer require mpma/serpro-proid-consumer:2.0.0

由 SERPRO 提供的数据

以下数据将由 SERPRO 提供,在测试和生产环境中有所不同。括号内是以下示例中使用的参数名称。

  • 基本 URL ($config->baseUrl)
  • 认证 URL ($config->authUrl)
  • 应用程序 ID ($config->appId)
  • 应用程序密钥 ($config->appKey)
  • 认证范围 ($config->scope)
  • 成员文档 ID ($config->docIdMembro)
  • 服务器文档 ID ($config->docIdServidor)

使用示例

脚本的基本结构

use \MPMA\ProIDConsumer\Service\Consumer,
    \MPMA\ProIDConsumer\Model\VO\ImagemFuncional,
    \MPMA\ProIDConsumer\Model\VO\ImagensFuncionais,
    \MPMA\ProIDConsumer\Model\VO\DadosFuncionais,
    \MPMA\ProIDConsumer\Model\CarteiraFuncional,
    \MPMA\ProIDConsumer\Model\Autenticacao;

require 'vendor/autoload.php';

$authConsumer = new Consumer();
$dataConsumer = new Consumer();

$authConsumer
    ->setBaseUrl($config->authUrl)
    ->setDebug(true);

$autenticacao = new Autenticacao($authConsumer);
$token = $autenticacao
    ->setAppId($config->appId)
    ->setAppKey($config->appKey)
    ->setScope($config->scope)
    ->getToken();

$dataConsumer
    ->setBaseUrl($config->baseUrl)
    ->setDebug(true)
    ->setToken($token);

添加新文档

$dadosFuncionais = new DadosFuncionais();
$dadosFuncionais
    ->setNumeroRegistro('0000001') // matrícula
    ->setNome('RICARDO AUGUSTO MARTINS COELHO')
    ->setCargo('ANALISTA MINISTERIAL')
    ->setEspecialidade('INFORMATICA')
    ->setRG('123456789-0')
    ->setEmissorRG('SSP')
    ->setUFRG('MA')
    ->setDtEmissaoRg('01/01/2001')
    ->setCPF('123.456.789-00')
    ->setDtNascimento('01/01/2000')
    ->setNaturalidade('SAO LUIS')
    ->setNomePai('NOME DO PAI')
    ->setNomeMae('NOME DA MAE')
    ->setUFNascimento('MA')
    ->setNacionalidade('BRASIL')
    ->setGrupoSanguineo('X')
    ->setFatorRH('+/-')
    ->setLocalExpedicao('SAO LUIS')
    ->setDataExpedicao('31/12/2020')
    ->setCodigo('123456');   // senha

$foto = new ImagemFuncional();
$foto->load('assets/foto.jpg');

$assinatura = new ImagemFuncional();
$assinatura->load('assets/assinatura.png');

$assinatura_pgj = new ImagemFuncional();
$assinatura_pgj->load('assets/assinatura_pgj.png');
$assinatura_pgj->chave = 'assinatura_presidente';  // chave SERPRO desta imagem

/* Este QRCode é gerado internamente e só é apresentado na cópia digital
 * da carteira impressa. Não confundir com o QRCode Vio, gerado pelo
 * ProID autormaticamente.
 */
$qrcode = new ImagemFuncional();
$qrcode->load('assets/qrcode.png');
$qrcode->chave = 'qrcode';    // chave SERPRO desta imagem

$imagensFuncionais = new ImagensFuncionais();
$imagensFuncionais
    ->setFoto($foto)
    ->setAssinatura($assinatura)
    ->setOutrasImagens([
        $assinatura_pgj,
        $qrcode
    ]);

$carteira = new CarteiraFuncional(
    $dataConsumer,
    $config->docIdServidor,  // ou $config->docIdMembro
    $dadosFuncionais,
    $imagensFuncionais
);

$carteira->add();

管理文档

$dadosFuncionais = new DadosFuncionais();
$dadosFuncionais->setNumeroRegistro('0000001'); // matrícula

$carteira = new CarteiraFuncional(
    $dataConsumer,
    $config->docIdServidor,  // ou $config->docIdMembro
    $dadosFuncionais
);

/* Bloqueia o documento */
$carteira->block('Motivo do bloqueio');

/* Adiciona restrição a um documento */
$carteira->restrict('Descrição da restrição');

/* Ativa (remove bloqueios e/ou restrições) um documento */
$carteira->activate();

/* Exclui o documento */
$carteira->delete();

发送定向消息

$carteira = new CarteiraFuncional(
    $dataConsumer,
    $config->docIdServidor  // ou $config->docIdMembro
);

$carteira->sendMessage(
    'Teste de mensagem direcionada',  // título
    'Este é um teste de mensagem ProID',   // conteúdo
    [ '0000001' ], // matrículas dos destinatários
    [ 'https://www.mpma.mp.br' => 'Site do Ministério Público do Estado do Maranhão' ] // link (opcional)
);

sendMessage 方法接受两个可选参数,用于指定消息的开始和结束有效时间。这些字段是带有 timezonetimestamp 类型,可以使用 date('Y-m-d\TH:i:s-03:00') 生成。

向所有人发送消息

$carteira = new CarteiraFuncional(
    $dataConsumer,
    $config->docIdServidor  // ou $config->docIdMembro
);

$carteira->sendBroadcast(
    'Teste de mensagem geral', // título
    'Este é um teste de broadcast ProID. Não é necessário informar destinatários.',  // conteúdo
    [ 'https://www.mpma.mp.br' => 'Site do Ministério Público do Estado do Maranhão' ] // link (opcional)
);

sendBroadcast 方法接受两个可选参数,用于指定消息的开始和结束有效时间。这些字段是带有 timezonetimestamp 类型,可以使用 date('Y-m-d\TH:i:s-03:00') 生成。