QR Code
Transação QR Code
int DIRETIVA_CALLBACK TransacaoQRCode(char *pValorTransacao, char *pNumeroCupom,
char *pNumeroControle, char *pTransactionParamsData)
A solicitação de transação com QR Code através da chamada à função TransacaoQRCode, descrita acima.
Na resposta da chamada à função será preenchido o campo NumeroControle e será devolvido o Status, indicando o resultado da transação:
[ 00 ] indica que não existiram restrições para a efetivação da transação.
[ 11 ] indica que existiram restrições para a efetivação da transação. O sistema de automação deve retornar à rotina de recebimento de valores, pois a transação solicitada não foi autorizada, não sendo válida como forma de pagamento.
O NumeroControle, incluído na resposta, deverá ser armazenado pelo sistema de automação, pois na função de confirmação este número será, obrigatoriamente, utilizado.
Caso a transação seja autorizada, será disponibilizado no diretório parametrizado para os cupons um arquivo contendo o comprovante da operação a ser impresso pela automação. O nome desse arquivo tem o formato NNNNNN.PPP, onde NNNNNN é o NumeroControle e PPP é o número do terminal configurado.
Se a rede autorizadora permitir e se estiver configurada no TEF Linx a impressão de cupom reduzido, além do arquivo acima será liberado um arquivo com o comprovante reduzido no formato RNNNNNN.PPP, onde NNNNNN é o NumeroControle e PPP é o número do terminal configurado. Assim, o comprovante reduzido deverá ser impresso no espaço destinado à mensagem promocional do cupom fiscal e o comprovante normal continuará a ser impresso no cupom vinculado
O PDV deverá verificar a existência do arquivo com o comprovante reduzido após a aprovação da transação. Se o arquivo com o comprovante reduzido estiver disponível, o PDV deverá imprimir no cupom fiscal e em seguida realizar a confirmação do mesmo, antes da impressão do comprovante normal. Se o comprovante reduzido não estiver disponível, a confirmação deverá ser realizada após a impressão do comprovante normal
Ao final da venda, tanto no caso do comprovante reduzido como no comprovante normal, para encerrar a operação deve ser chamada a função FinalizaTransacao.
Campo | Tamanho | Descrição |
---|---|---|
ValorTransacao | 12N | 10 inteiros, 2 decimais |
NumeroCupom | 06N | Número do cupom (fiscal ou não fiscal) |
NumeroControle | 06N | NSU (número seqüencial único) |
TransactionParamsData | variavel A | Esse campo é opcional e somente será utilizado pela rede QRLinx. Quando enviado é esperado que contenha um JSON que será descrito mais abaixo. Pelo campo ser opcional e de tamanho variável, em caso de não envio a automação deve passar NULL ou um buffer vazio nesse campo, em caso de envio a automação deve garantir que ao final da string contendo o json exista o caracter de terminação de string ('\0') caso contrário o Paykit não irá processar o conteúdo recebido |
O Campo pTransactionParamsData bem como os itens descritos abaixo desse alerta são instruções não liberadas 100% em produção, não utilize-as sem a expressa recomendação, ou seja, atualmente envie um valor nulo conforme indicado no quadro acima
TransactionParamsData
Json de Exemplo
Clique para expandir e mostrar o JSON de exemplo
{
"specific_wallets":[
"PIX",
"PICPAY"
],
"is_pix_upfront":true,
"payments":[
{
"value:":1.50,
"payer":{
"first_name":"Juan",
"last_name":"Cardoso",
"email":"jc@linx.com.br",
"external_code":"0",
"client_phone":{
"area_code":"11",
"number":"982232155",
"extension":"0"
},
"client_identification":{
"type":"CPF",
"number":"12345678901"
}
},
"expiration_time":100000,
"withdraw_pix":0,
"change_pix":0
}
],
"order_items":[
{
"name":"produto1",
"quantity":1,
"amount":1.50,
"subtotal":1.50,
"discount_value":0.0,
"add_value":0.0,
"number_external":"123",
"ncm":"12345678"
}
]
}
TransactionParamsData
Descrição dos parametros de entradas possíveis, não representa a estrutura do JSON, apenas os atributos possíveis.
Parâmetro | Descrição | Tipo | Obrigatório |
---|---|---|---|
is_pix_upfront | Campo para criação de PIX parcelado junto a Paga leve. Caso enviado para operações que não sejam da Paga Leve, o QRCode não será enviado ao PDV. | bool (true/false) | Não |
specific_wallets | Informação necessária para criação de cobrança específica. | array | Não |
payments | Informações necessárias à realização do pagamento. | objeto | Não |
payer | Informações do pagador. | objeto | Não |
client_phone | Telefone do pagador | objeto | Não |
client_identification | Natureza jurídica do pagador (Pessoa Física/Jurídica). Valores aceitos: "PF" e "PJ". | objeto | Não |
order_items | Itens da ordem de venda. | objeto | Não |
shipping_address | Endereço para entrega da compra. | objeto | Não |
specific_wallets
Este objeto é necessário para criação de uma cobrança específica, ou seja, quando a loja não deseja criar uma cobrança com todas as carteiras disponíveis.
O campo aceita apenas o nome da carteira, caso a loja não possua a informação de quais carteiras estão ativas para transacionar, o PDV poderá utilizar API “Consulta Carteiras”, essa API retorna as carteiras ativas da loja.
O campo é uma lista, pois o PDV pode escolher criar a cobrança apenas com uma carteira ou mais de uma. Quando o PDV for enviar a chamada para criação de cobrança ele deverá enviar uma das opções da lista abaixo:
Clique para mostrar o Objeto
Valores Possíveis |
---|
AME |
CASH_BERTI |
MERCADO_PAGO |
PEDE_PRONTO |
PICPAY |
PIX |
VERO |
payments
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatorio |
---|---|---|---|
value | Valor total da venda. Campo utilizado apenas nas transações de PIX Saque e PIX Troco | decimal (7,2) | Sim |
payer | Informações do pagador. | objeto | Não |
expiration_time | Tempo em segundos da expiração da cobrança criada. | integer (10) | Não |
withdraw_pix | Representa o valor que o cliente deseja sacar na loja, ou seja, utilizar o PIX SAQUE. | decimal (7,2) | Não |
change_pix | Representa o valor que o cliente deseja de troco na transação, ou seja, utilizar o PIX TROCO. | decimal (7,2) | Não |
payer
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatorio |
---|---|---|---|
first_name | Primeiro nome do pagador | string (30) | Não |
last_name | Último nome do pagador. | string (30) | Não |
E-mail do pagador. | string (50) | Não | |
external_code | Código do cliente no PSP de dados do EC. | string (36) | Não |
client_phone | Dados do telefone do pagador. | objeto | Não |
client_phone
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatorio |
---|---|---|---|
area_code | Código de área do telefone do pagador. | string (4) | Não |
number | Número do telefone do pagador. | string (12) | Não |
extension | Ramal do telefone do pagador. | string (7) | Não |
client_identification
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatorio |
---|---|---|---|
type | Natureza jurídica do pagador. Valores Aceitos: "CPF" para pessoa física; "CNPJ" para pessoa jurídica. | string (5) | Não |
number | Número do CPF/CNPJ do pagador. Campo obrigatório para integrações com Paga Leve. | string (15) | Não |
order_items
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatório |
---|---|---|---|
name | Descrição do item. | string (150) | Não |
quantity | Quantidade do item. | decimal (7,2) | Não |
amount | Valor total do item | decimal (7,2) | Não |
subtotal | Subtotal do item. | decimal (7,2) | Não |
discount_value | Valor do desconto concedido. | decimal (7,2) | Não |
add_value | Valor adicionado à venda. Ex.: frete, embalagem. | decimal (7,2) | Não |
number_external | Código do item. | string (14) | Não |
ncm | Natureza jurídica do pagador (Pessoa Física/Jurídica). | string (8) | Não |
shipping_address
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatório |
---|---|---|---|
street | Descrição do logradouro. | string (60) | Não |
postal_code | CEP do logradouro. | string (10) | Não |
number | Número do logradouro | string (15) | Não |
complement | Complemento do endereço. | string (40) | Não |
state | Estado/UF do endereço. | string (2) | Não |
district | Bairro do logradouro | string (60) | Não |
city | Código do item. | string (14) | Não |
ncm | Cidade do logradouro. | string (60) | Não |
OBS: Preencher campos conforme documentado nas Convenções do manual, documentadas na página inicial.
OBS: Para realização da confirmação da transação deverá ser realizada chamada à função ConfirmaCartao, e para o desfazimento da transação deverá ser realizada chamada à função DesfazCartao. Para maiores detalhes, consulte a página Confirmação e Desfazimento de Transações.
PIX Troco
No caso do Pix Troco, a dinâmica é idêntica, com a diferença que o saque de recursos em espécie acontece junto com a realização de uma compra no agente de saque. Nesse caso, o Pix é feito pelo valor total (compra + saque). O extrato do cliente evidenciará o valor correspondente ao saque e o valor correspondente à compra.
Importante que para gerar um PIX Troco automação deverá enviar o campo “payments.value” conforme a compra realizada pelo cliente, e no campo “payments.change_pix” informar o valor que o cliente deseja sacar/receber de troco. Por fim o campo “order_items.amount” representa a soma dos dois campos acima na criação da cobrança.
Segue abaixo o campo obrigatório na criação da cobrança PIX Troco:
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatorio |
---|---|---|---|
change_pix | Representa o valor que o cliente deseja de troco na transação, ou seja, utilizar o PIX TROCO. | decimal (7,2) | Sim |
Não é permitido gerar uma cobrança de PIX Saque e PIX Troco em conjunto, caso os campos específicos sejam enviados o QRLinx retornará erro na criação da cobrança.
PIX Saque
O Pix Saque permitirá que todos os clientes de qualquer participante do Pix realizem um saque em um dos pontos que ofertar o serviço. Estabelecimentos comerciais, redes de caixas eletrônicos (ATMs) compartilhados e os próprios participantes do Pix, por meio de seus ATMs próprios, poderão ofertar o serviço. Para ter acesso aos recursos em espécie, basta que o cliente faça um Pix para o agente de saque, em dinâmica similar à de um Pix normal, a partir da leitura de um QRCode mostrado ao cliente ou a partir do aplicativo do prestador do serviço.
Importante que para gerar um PIX Saque automação deverá enviar o campo “payments.value” zerado, já que não está ocorrendo uma compra e sim apenas um saque junto ao estabelecimento.
Segue abaixo o campo obrigatório na criação da cobrança PIX Saque:
Clique para mostrar o Objeto
Parâmetro | Descrição | Tipo | Obrigatorio |
---|---|---|---|
withdraw_pix | Representa o valor que o cliente deseja sacar na loja, ou seja, utilizar o PIX SAQUE. | decimal (7,2) | Sim |
Não é permitido gerar uma cobrança de PIX Saque e PIX Troco em conjunto, caso os campos específicos sejam enviados o QRLinx retornará erro na criação da cobrança.
Link de Pagamento QRLinx
Ao realizar um pagamento via a rede QRLinx, esta disponibilizará um link de pagamento que pode ser disponibilizado ao cliente final via whatsapp, e-mail, SMS ou de alguma outra forma que a automação encontre facilidade de enviar e disponibilizar mais um canal de pagamento para seu cliente. Esta informação será enviada para a automação através da Callback Informações Transacionais.
Transação Generica QRCode
Essa integração com o Paykit visa disponibilizar métodos de consultas para a automação sobre as transações de QR, e tem por objetivo receber da automação um JSON com os dados da integração bem como o tipo de consulta a ser realizada, e o Paykit disponibilizará um objeto JSON de retorno compatível com a solicitação feita.
O valor retornado para a automação não aceita modificações e seu conteúdo deve ser copiado pra um atributo interno do software consumidor do Paykit, sendo que no inicio da proxima solicitação para o Paykit o buffer será limpo.
O status da transação (se bem sucedido ou não) será retornado para a automação através do parametro status.
Os inputs e outputs de cada possibilidade de interação com este método, estarão descritos abaixo:
Carteiras Ativas para a loja no QRLinx
Automação poderá consultar as carteiras que estão disponíveis para uma determinada loja, essa consulta se faz necessária na geração de uma cobrança específica, pois assim o PDV poderá solicitar a geração do QRCode apenas para as carteiras desejadas.
Clique para expandir e mostrar o exemplo de Requisição e Reposta
Exemplo Requisição
Sendo, methodRequest um valor fixo para identificar essa requisição.Exemplo Resposta
{
"success":true,
"message":"Carteiras retornadas com sucesso",
"data":[
{
"cnpj":"22896431000110",
"name":"Picpay Servicos S.A",
"trading_name":"PicPay",
"logo_link":"https://static.linxpayhub.com.br/images/logos/LogoPicPay.png",
"logo_link_download":"https://static.linxpayhub.com.br/images/logos/LogoPicPay.png",
"specific_wallet":"PICPAY"
},
{
"cnpj":"00000000000000",
"name":"Pix",
"trading_name":"Pix",
"logo_link":"https://static.linxpayhub.com.br/images/logos/LogoPix.jpg",
"logo_link_download":"https://static.linxpayhub.com.br/images/logos/LogoPix.jpg",
"specific_wallet":"PIX",
"integrationTypePixModel":{
"id":7,
"name":"Pagar.me",
"priority":"Primary"
}
},
{
"cnpj":"00000000000000",
"name":"Pix",
"trading_name":"Pix",
"logo_link":"https://static.linxpayhub.com.br/images/logos/LogoPix.jpg",
"logo_link_download":"https://static.linxpayhub.com.br/images/logos/LogoPix.jpg",
"specific_wallet":"PIX",
"integrationTypePixModel":{
"id":5,
"name":"Santander",
"priority":"Secondary"
}
}
]
}
Consulta Parcelamento (Paga Leve - QRLinx)
Na integração com o PSP Paga Leve existe uma integração de PIX com a opção do parcelamento, devido a isso os objetos payer, client_identification, is_pix_upfront passa a ser obrigatório para a TransacaoQRCode, e o client_phone um parametro recomendado.
Para que a loja consulte se o parcelamento está disponivel para o cliente em questão a automação deve consumir este método, assim o lojista poderá oferecer um parcelamento de pix antes da finalização da transação:
Clique para expandir e mostrar o exemplo de Requisição e Reposta
Exemplo Requisição
Sendo, methodRequest um valor fixo para identificar essa requisição, value o valor da transação e document o CPF do cliente.Exemplo Resposta
Essa consulta possui apenas duas mensagens de retorno “Approved” ou “Declined”, assim a loja terá a informação se o PIX parcelado está aprovado ou não para o seu cliente.
Caso o cliente do lojista seja aprovado no pagamento do PIX parcelado automação deverá enviar o campo is_pix_upfront com o valor false. O QRLinx retornará no campo