Com a API PlugPix, nós ficamos responsáveis por realizar todo o processo de homologação dos bancos, padronização da geração e recebimento do PIX. Seus clientes poderão ofertar uma nova forma de cobrança e ter a possibilidade de receber o valor instantaneamente a qualquer momento.
Neste artigo você terá todas as informações para conseguir realizar os cadastros e gerar um PIX seguindo os seguintes passos.
- Cadastro no TecnoAccount
- Autenticação da Software House
- Cadastro de uma Empresa
- Autenticar uma Empresa
- Rotas
Cadastro no TecnoAccount
Antes de iniciar a integração com API, é importante que sua conta TecnoSpeed esteja criada. Para isso, clique no link abaixo e preencha com os dados contratuais entre sua Software House e a Tecnospeed. Não utilize dados pessoais!
Autenticação da Software House
Para iniciar o processo de autenticação, o desenvolvedor deve ter uma conta válida e ativa no Tecnoaccount. Com a conta ativa, ele deve enviar uma requisição POST para o endpoint oauth2/token
da API, com o "Content-Type" definido como "application/x-www-form-urlencoded". Nos headers, é necessário incluir o campo "Authorization" no seguinte formato:
- Prefixe o valor "Basic " no campo "Authorization".
- Em seguida, construa uma string que combine o e-mail cadastrado no Tecnoaccount e a senha, separados por “:”.
- Codifique essa string em Base64 e concatene o resultado no valor de "Authorization".
Exemplo: teste@gmail.com:1234567
=> Authorization: Basic dGVzdGVAZ21haWwuY29tOjEyMzQ1Njc=
Além disso, a requisição deve incluir o grant_type
e o role
no corpo da requisição (form-data) com os seguintes valores:
"grant_type": "client_credentials"
"role": "software_house"
Se a autenticação for bem-sucedida, a resposta conterá três dados principais:
-
access_token
: o token usado para autenticar todas as requisições subsequentes. -
expires_in
: o tempo de vida (TTL) do token, definido como 3600 segundos (1 hora). -
token_type
: o tipo do token, que atualmente será sempre "Bearer".
Cadastro de uma Empresa
Nessa rotina será cadastrada a empresa que fará a emissão do PIX. Caso tenha sucesso será disparado um e-mail com informações usadas na integração.
POST
Sandbox:
https://pix.tecnospeed.com.br/sandbox/companies
Produção:
https://pix.tecnospeed.com.br/api/v1/companies
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
Authorization | Bearer | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJ1c2VyIjp7ImVtYWlsIjoicGVkc... |
Body
Campo | Tipo | Descrição | Tamanho |
name | string | Nome da empresa cadastrada. | 1 - 256 |
|
string | E-mail do responsável. Ele receberá as credenciais necessárias para a integração. | 1 - 128 |
cpfCnpj | string | CPF ou CNPJ da empresa. | 11 (CPF) ou 14 (CNPJ) |
city | string | Nome da cidade da empresa. | 1 - 128 |
state | string | UF da empresa. | 2 |
zipcode | string | CEP da empresa. | 1 - 8 |
accounts | array of arrays | Caso queira, é possível fazer o cadastro da conta juntamente com o cadastro da empresa. Utilize o JSON de exemplo no menu accounts. | 1 - 10 items |
Exemplo:
{
"name": "Ingá Softwarehouse",
"email": "contato@ingsoft.com.br",
"cpfCnpj": "32052710000151",
"city": "Maringá",
"state": "PR",
"zipcode": "87045170",
"accounts": [
{
"description": "Conta do Banco ABC",
"bankCode": "341",
"pixKey": "988680626",
"clientId": "089231s",
"clientKey": "kldas21380927",
"clientSecret": "kldas21380927"
}
]
}
Retorno
Exemplo de retorno:
{
"id": "4b0da80a-fbe0-4226-9808-ed05b9e62f01",
"surrogateKey": "4b0da80a-fbe0-4226-9808-ed05b9e62f01",
"name": "Ingá Softwarehouse",
"email": "contato@ingsoft.com.br",
"cpfCnpj": "32052710000151",
"zipcode": "87045170",
"city": "Maringá",
"state": "PR",
"status": "ACTIVE",
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"deletedAt": "2019-08-24T14:15:22Z"
}
Como autenticar como Empresa
Upload do certificado
Nessa rotina será feito o upload do certificado digital.
Cadastro de WebHook
Serão feitas 10 tentativas de comunicação com sua API, caso a primeira requisição não retorne com um statusCode 200, aguardaremos 10 segundos e em seguida enviaremos novamente. Se a segunda consulta não obtiver resposta, aguardaremos mais 20 segundos e enviaremos a terceira tentativa.
Atenção: É importante ressaltar que o envio das notificações webhook estão disponíveis apenas para o ambiente de produção.
POST
Homologação:
https://pix.tecnospeed.com.br/sandbox/webhook
Produção:
https://pix.tecnospeed.com.br/api/v1/webhook
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
Authorization | Bearer | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJ1c2VyIjp7ImVtYWlsIjoicGVkc... |
Body
Campo | Tipo | Descrição | Tamanho |
bankcode | string |
Enum: "001" "033" "237" "341" "364" "748" "756" "999"
|
1 - 3 |
bankaccount |
string |
Número da conta. Obrigatório para o banco 999 TecnoPay
|
1 - 36 |
pixKey | string |
Chave PIX da conta, podendo ser o e-mail, número de telefone, CPF/CNPJ ou chave EMV. Chaves do tipo número de telefone:
|
1-77 |
clientId | string | Identificador do acesso a API do banco, disponibilizado pelo banco. | |
clientKey | string |
Chave de acesso do cliente no banco, disponibilizado pelo banco. Obrigatório para o banco 001
|
|
clientSecret | string |
Chave secreta do cliente no banco, disponibilizado pelo banco. Obrigatório exceto para o banco 756
|
|
websericeVersion | string |
Obrigatório para o banco 001 . Preencher com v1 ou v2 de acordo com a versão do banco.
|
Exemplo:
{
"onEvents": [
"PIX_SUCCESSFUL"
],
"method": "POST",
"url": "http://minhaapi.com/callback",
"headers": {
"Content-type": "application/json",
"Authorization": "Basic bWV1IHNlZ3JlZG8="
}
}
Retorno
Exemplo de retorno:
{
"id": "string",
"surrogateKey": "string",
"onEvents": [
"string"
],
"method": "string",
"url": "string",
"headers": {},
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}
Criar PIX Dinâmico (cobrança imediata)
Rotina responsável por efetuar a emissão de um Pix cobrança imediata.
Disponível para os bancos:
-
001
: Banco do Brasil -
033
: Santander -
237
: Bradesco -
341
: Itaú -
364
: GerenciaNet -
748
: Sicredi -
756
: Sicoob -
999
: TecnoPay
POST
Sandbox:
https://pix.tecnospeed.com.br/sandbox/pix/dynamic
Produção:
https://pix.tecnospeed.com.br/api/v1/pix/dynamic
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
Authorization | Bearer | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJ1c2VyIjp7ImVtYWlsIjoicGVkc... |
Body
Campo | Tipo | Descrição | Tamanho | ||||
accountId | string | UUID da conta que será usado para emissão do PIX | 1 - 256 | ||||
description | string | Breve descrição da cobrança, será apresentado ao cliente no pagamento do PIX | 1 - 140 | ||||
tags | string | Lista de tags para vincular ao pagamento | 1 - 5 | ||||
amount | string | Valor da cobrança, o valor final apresentado ao pagador | 1 - 128 | ||||
duration | string |
Tempo de duração da cobrança do PIX em segundos. Caso não seja informado um valor, a duração padrão de cada banco será:
|
2 | ||||
payerName | string | Nome do pagador do PIX, caso preenchido o campo "payerCpfCnpj" também deve ser preenchido. | 1 - 8 | ||||
payerCofCnpj | string | CPF ou CNPJ do pagador, caso preenchido o campo "payerName" também deve ser preenchido | 1-14 | ||||
aditionalinformation | array of objects |
Informações adicionais que serão apresentadas ao pagador
|
1-50 items |
Exemplo:
{
"accountId": "0e001b8f-64a5-481a-a564-14b823bf836c",
"description": "Cobrança relativa a compra do dia 01-01-2021",
"tags": [
"compra",
"pix",
"2021"
],
"amount": 120,
"duration": 123123,
"payerName": "João da Silva",
"payerCpfCnpj": "01001001000113",
"aditionalInformation": [
{
"name": "loja",
"value": "Loja de teste"
}
]
}
Retorno
Exemplo de retorno:
{
"id": "string",
"surrogateKey": "string",
"transactionId": "string",
"description": "string",
"status": "string",
"amount": 0,
"duration": 0,
"kind": "string",
"reason": "string",
"revision": 0,
"payerName": "string",
"payerCpfCnpj": "string",
"tags": [
"string"
],
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"aditionalInformation": [
{
"name": "string",
"value": "string"
}
],
"errors": []
}
Como emitir um pix com data de vencimento
É importante ressaltarmos que conforme normas do BACEN, caso o PIX tenha seu vencimento no sábado, domingo ou em feriados nacionais, o pagador terá até o próxima dia útil para efetuar o pagamento do PIX. Ou seja, se um PIX foi emitido para vencer em um sábado, o pagador terá até a próxima segunda-feira para efetuar a liquidação do mesmo.
Disponível para os bancos:
-
341
: Itaú -
748
: Sicredi -
756
: Sicoob -
999
: TecnoPay
POST
Sandbox:
https://pix.tecnospeed.com.br/sandbox/pix/charge
Produção:
https://pix.tecnospeed.com.br/api/v1/pix/charge
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
Authorization | Bearer | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJ1c2VyIjp7ImVtYWlsIjoicGVkc... |
Geração do PIX
É possível realizar a inclusão dos seguintes campos:
accountIdrequired | Você pode verificar também através do portal do cedente |
description |
string<= 140
Breve descrição da cobrança, será apresentado ao cliente no pagamento do PIX |
tags |
Array ofstrings<= 5 items
Lista de tags para vincular ao pagamento |
calendarrequired |
object
Informações a respeito de controle de tempo da cobrança |
payerrequired |
object
Informações sobre o pagador da cobrança |
valuerequired |
object
Valores referentes a cobrança |
aditionalInformation |
Array ofobjects<= 50 items
Informações adicionais que serão apresentadas ao pagador |
Segue abaixo Json de exemplo sobre a emissão de PIX de cobrança com vencimento:
{
"accountId": "0e001b8f-64a5-481a-a564-14b823bf836c",
"description": "Cobrança relativa a compra do dia 01-01-2021",
"tags": [
"compra",
"pix",
"2021"
],
"calendar": {
"dueDate": "2021-01-01",
"daysAfterDueDate": 10
},
"payer": {
"cpfCnpj": "01001001000113",
"name": "João da Silva",
"email": "email@email.com",
"street": "Av. Brasil, 100, Centro",
"city": "Maringá",
"state": "PR",
"zipcode": "87045170"
},
"value": {
"original": 132.9,
"fine": {},
"interest": {},
"reduction": {},
"discount": {}
},
"aditionalInformation": [
{
"name": "loja",
"value": "Loja de teste"
}
]
}
Response 201:
id |
string
|
surrogateKey
required
|
string
|
transactionId
required
|
string
|
description |
string
|
tags
required
|
Array ofstrings
|
kind
required
|
string
|
revision
required
|
number
|
status
required
|
string
Os possiveis status de retorno são:
|
errors
required
|
Array ofstrings
|
reason |
string
|
calendar |
object
|
payer |
object
|
value |
object
|
aditionalInformation
required
|
Array ofobjects
|
createdAt
required
|
string<date-time>
|
updatedAt
required
|
string<date-time>
|
E assim também temos o Json de retorno da API com a response 201:
{
"id": "string",
"surrogateKey": "string",
"transactionId": "string",
"description": "string",
"tags": [
"string"
],
"kind": "string",
"revision": 0,
"status": "string",
"errors": [
"string"
],
"reason": "string",
"calendar": {
"dueDate": "string",
"daysAfterDueDate": 0
},
"payer": {
"cpfCnpj": "string",
"name": "string",
"email": "string",
"street": "string",
"city": "string",
"state": "string",
"zipcode": "string"
},
"value": {
"original": 0,
"fine": {
"modality": 0,
"valuePerc": 0
},
"interest": {
"modality": 0,
"valuePerc": 0
},
"reduction": {
"modality": 0,
"valuePerc": 0
},
"discount": {
"modality": 0,
"fixedDateDiscount": [
{
"date": "string",
"valuePerc": 0
}
],
"valuePerc": 0
}
},
"aditionalInformation": [
{
"name": "string",
"value": "string"
}
],
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}
Response com erro ( 422 ):
code
required
|
number
Código HTTP |
errors
required
|
Array ofobjects(SubErrorsFormat)
Lista dos erros de validação |
Json com erro:
{
"code": 422,
"errors": [
{
"type": "business_logic",
"property": "dueDate",
"message": "email should not be empty"
}
]
}
Consulta do PIX cobrança imediata
Rotina responsável por efetuar a consulta de um Pix cobrança com vencimento.
GET
Sandbox:
https://pix.tecnospeed.com.br/sandbox/pix/charge/{id}
Produção:
https://pix.tecnospeed.com.br/api/v1/pix/charge/{id}
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
Authorization | Bearer | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJ1c2VyIjp7ImVtYWlsIjoicGVkc... |
Responses
200
id |
string
|
surrogateKey |
string
|
transactionId |
string
|
description |
string
|
tags |
Array ofstrings
|
kind |
string
|
revision |
number
|
status |
string
|
reason |
string
|
emv |
string
|
qrcodeLocation |
string
|
errors |
Array ofstrings
|
payments |
Array ofarrays
|
calendar |
object
|
payer |
object
|
value |
object
|
aditionalInformation |
Array ofobjects
|
createdAt |
string<date-time>
|
updatedAt |
string<date-time>
|
{
"id": "string",
"surrogateKey": "string",
"transactionId": "string",
"description": "string",
"tags": [
"string"
],
"kind": "string",
"revision": 0,
"status": "string",
"reason": "string",
"emv": "string",
"qrcodeLocation": "string",
"errors": [
"string"
],
"payments": [ ],
"calendar": {
"dueDate": "string",
"daysAfterDueDate": 0
},
"payer": {
"cpfCnpj": "string",
"name": "string",
"email": "string",
"street": "string",
"city": "string",
"state": "string",
"zipcode": "string"
},
"value": {
"original": 0,
"fine": {},
"interest": {},
"reduction": {},
"discount": {}
},
"aditionalInformation": [
{}
],
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}
404
RESPONSE SCHEMA:application/json
code
required
|
number
Código HTTP |
message
required
|
string
Descrição do erro de validação |
Json:
{
"code": 404,
"message": "Resource not found"
}
Consulta do PIX cobrança com vencimento
Rotina responsável por efetuar a consulta de um Pix cobrança com vencimento através de uma Query.
GET
Sandbox:
https://pix.tecnospeed.com.br/sandbox/pix/charge/query
Produção:
https://pix.tecnospeed.com.br/api/v1/pix/charge/query
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
Authorization | Bearer | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJ1c2VyIjp7ImVtYWlsIjoicGVkc... |
QUERYPARAMETERS
queryType |
string
Enum:"CREATE""PAYMENT"
Example:queryType=CREATE
Tipo da consulta. Define o campo que será consultado, data de criação ou data de pagamento. Por padrão será utilizado o "CREATE" |
date |
date
Example:date=2021-08-25
Data para consulta. Caso seja preenchido não informar os paramêtros "betweenDateStart" e "betweenDateEnd" |
betweenDateStart |
date
Example:betweenDateStart=2021-08-01
Data inicial para consulta. Caso seja preenchido o paramêtro "betweenDateEnd" é obrigatório e não informar o paramêtro "date" |
betweenDateEnd |
date
Example:betweenDateEnd=2021-08-31
Data final para consulta. Caso seja preenchido o paramêtro "betweenDateStart" é obrigatório e não informar o paramêtro "date" |
status |
string
Enum:"SAVED""ACTIVE""LIQUIDATED""REJECTED""USER_REMOVED""PSP_REMOVED""EXPIRED"
Example:status=ACTIVE
Status a ser consultado. Por padrão será consultado como "ACTIVE", caso o parametro "queryType" seja "PAYMENT" será desconsiderado. |
dueDate |
date
Example:dueDate=2021-08-25
Data de vencimento do PIX |
payerCpfCnpj |
string
Example:payerCpfCnpj=01001001000113
CPF ou CNPJ do pagador. |
emv |
string
Example:emv=00000000000000000000br.gov.bcb.pix000qrcodes.banco.com.br/v1/AAAA000000000BR
EMV do PIX |
limit |
number
Example:limit=10
Número máximo de registros por página |
page |
number
Example:page=2
Pagina que será exibida |
sort |
string
Enum:"ASC""DESC"
Example:sort=DESC
Tipo de ordenação dos registros por data de criação, podendo ser crescente (ASC) ou decrescente (DESC) |
Responses
RESPONSE SCHEMA:application/json
id |
string
|
surrogateKey
required
|
string
|
status
required
|
string
|
amount
required
|
number
|
dueDate |
date
|
paymentDate |
date
|
payerCpfCnpj
required
|
string
|
payerName |
string
|
emv |
string
|
createdAt
required
|
date
|
RESPONSE SCHEMA:application/json
code
required
|
number
Código HTTP |
errors
required
|
Array ofobjects(SubErrorsFormat)
Lista dos erros de validação |
Json de erro:
{
"code": 422,
"errors": [
{
"type": "business_logic",
"property": "dueDate",
"message": "email should not be empty"
}
]
}
Imprimir QR code
Rotina utilizada para imprimir o QR code do PIX.
GET
Sandbox:
https://pix.tecnospeed.com.br/sandbox/qr/{id}
Produção:
https://pix.tecnospeed.com.br/api/v1/qr/{id}
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
Authorization | Bearer | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJ1c2VyIjp7ImVtYWlsIjoicGVkc... |
Body
Campo | Tipo | Descrição | Tamanho |
type | string |
Enum: "html" "png" "base64" "emv"
Example: type=html
Tipo do retorno. Padrão "html". |
|
size | number |
Example: size=400
Tamanho do qrcode retornado, somente para type "html". |
Retorno
Exemplo de retorno com erro:
{
"code": 404,
"message": "Resource not found"
}
Comentários
0 comentário
Por favor, entre para comentar.