API Nativa

O Mamba Websdk oferece um conjunto de funções capazes de interagir com as funcionalidades nativas do POS. Para isso, basta importar as funções nativas necessárias

e.g.

import { Native } from 'mamba-websdk'

Native.System.beep()

App

App define funções relacionadas ao aplicativo

close()

Fecha o aplicativo

closeWithFilter(showConfirmationDialog: boolean, callBack: function)

Fecha o aplicativo depois de executar o callback. Se o showConfirmationDialog for TRUE será apresentado um dialog de confirmação para sair do app.

// Coloque esse código no arquivo index.js

import './styles/index.scss'
import Mamba from 'mamba-websdk'
import { Native } from 'mamba-websdk'
import router from './router'

/* eslint-disable no-new */
new Mamba({
  el: '#app'
})

Mamba.use(router)
Native.App.closeWithFilter(true, ()=> {
    console.log('TESTE')
})

Gif

Anima arquivos no formato .gif de forma nativa. Um gif que utilize recursos web (com a tag img por exemplo) terá um desempenho muito inferior, além de ter um comportamento imprevisível.

Recomendamos utilizar o componente MbGif para lidar com gifs no POS. Nele, é abstraída boa parte do trabalho necessário.

show (path: string, x?: number, y?: number): boolean

Mostra o gif em uma determinada posição, relativa ao viewport.

Se x ou y forem negativos, o gif não irá aparecer.

Note que quando um gif está aparecendo, todos os eventos de teclado serão consumidos por ele

Esse método também realiza o cache do gif, caso não tenha sido feito

Parâmetro Tipo Descrição
path string O caminho do gif, relativo à raiz do projeto
x number? A posição do gif no eixo x
y number? A posição do gif no eixo y

retorna true se o gif foi mostrado com sucesso

setPosition (path: string, x: number, y: number): boolean

Muda a posição do gif.

Esse método também realiza o cache do gif, caso não tenha sido feito

Se a posição de x ou y for negativa, a posição não será alterada

Parâmetro Tipo Descrição
path string O caminho do gif, relativo à raiz do projeto
x number? A posição do gif no eixo x
y number? A posição do gif no eixo y

retorna true se a posição foi atualizada com sucesso

hide (): void

Esconde o gif

cache (path: string): boolean

Faz cache do gif para um carregamento mais rápido.

Parâmetro Tipo Descrição
path string O caminho do gif, relativo à raiz do projeto

retorna true se o cache foi feito com sucesso

get (path: string): IRect

Retorna a posição e as dimensões do gif

Parâmetro Tipo Descrição
path string O caminho do gif, relativo à raiz do projeto

O objeto de retorno é um retângulo com as seguintes características

Parâmetro Tipo Descrição
x number Posição do gif no eixo x
y number Posição do gif no eixo y
w number Largura do gif
h number Altura do gif

Http

Http encapsula todos os requests que devem ser realizados pelo POS

send(params: object, callback: function)

import { Native } from 'mamba-websdk'

const Http = Native.Http

// PARAMS DEFAULT:
// method: "GET",
// url: Não possui valor default,
// Headers {
// "content-type": "text/plain"
// },
// connect: "NET",
// data: ""

// CALLBACK:
// data Retorna o body do request
// err Retorna um objeto com err.status(Estatus do erro) e err.msg(Mensagem do erro)

const object = {
    method: "GET/POST", // Verbo http que será feito o request
    url: "https://endpoint.com.br",
    headers: {
    "...": "..." // Headers de configuração
    },
    connect: "LAN/NET" // LAN para requests na mesma rede, e NET para requests externo, irá passar pelo proxy
    data: JSON.stringfy({teste: "dados"}) // Dados a serem enviados
}

Http.send(object, function(data, err) {
    if (err.status != undefined && err.status != 299) {
        alert(err.status)
        alert(err.msg)
    } else {
        alert(data)
    }
});

Keyboard

Lida com o tipo do teclado. Recomendamos utilizar o componente MbInput que já lida com o tipo do teclado

setKeyboardAsNumeric()

Muda o tipo do teclado para numérico

setKeyboardAsAlphanumeric()

Muda o tipo do teclado para alfanumérico

Merchant

Lida com as informações do lojista

getInfo(): IMerchant

Retorna as informações do lojista

Parâmetro Tipo Descrição
street string Rua do lojista
number string Número do local do estabelecimento
complement string Complemento do endereço
neighborhood string Bairro do estabelecimento
zipCode string CEP do estabelecimento
city string Cidade do estabelecimento
state string Estado do estabelecimento
country string País do estabelecimento
acquirerIssuedMerchantId string Stone code do lojista
displayName string Nome mostrado no POS, definido pelo lojista
taxationIdentificationType string ‘CPF’ ou ‘CNPJ’, de acordo com o cadastro do lojista
taxationIdentificationNumber string O valor correspondente ao campo ‘taxationIdentificationType’. Será o CPF ou CNPJ do lojista

checkPassword(password: string)

Verifica se a senha corresponde à senha do lojista no POS

getStoneCode(): string

Retorna o StoneCode do lojista

Payment

Lida com a realização de pagamentos.

pay (proposedAmount: number, callback?: function)

Abre o aplicativo de pagamento para o usuário continuar com a operação. Após o aplicativo fechar, a callback será chamada contendo o valor efetivamente pago pelo usuário. Caso a transação não tenha sido realizada, este parâmetro será 0

Parâmetro Tipo Descrição
proposedAmount number Valor a ser pago, em centavos
callback function Callback chamada assim que a transação é encerrada

e.g.

import { Native } from 'mamba-websdk'

const Payment = Native.Payment

// Abre o app de pagamento com o valor de R$5,00 e imprime o valor que foi pago
Payment.pay(500, (amountPayed) => {
  console.log(amountPayed)
})

// amount: Abre o app de pagamento com o valor de R$5,00
// editable_amount: Bloqueia a edição do valor
// min_installments: valor mínimo do número de parcelas
// max_installments: valor máximo do número de parcelas
const paymentConfig = {
  amount: 500,
  editable_amount: true,
  min_installments: 4,
  max_installments: 8,
}
Payment.pay(paymentConfig, (amountPayed) => {
  console.log(amountPayed)
})

isPaying(): boolean

Retorna true se um pagamento está sendo feito

failedPaying (): boolean

Retorna true se o último pagamento falhou

enableCardEvent ()

Habilita o evento de cartão. Caso um cartão seja inserido ou passado pela tarja magnética, se o evento de cartão estiver habilitado, o evento oncardevent será emitido para o document

e.g.

import { Native } from 'mamba-websdk'

const Payment = Native.Payment

Payment.enableCardEvent()

document.addEventListener('oncardevent', function() {
  console.log('Um cartão foi inserido, vou realizar um pagamento')

  // Abre o app de pagamento com o valor de R$5,00 e imprime o valor que foi pago
  Payment.pay(500, (amountPayed) => {
    console.log(amountPayed)
  })
})

disableCardEvent ()

Desabilita o evento de cartão.

getCardHolderName (): string

Retorna o nome do portador do cartão referente ao último pagamento

import { Native } from 'mamba-websdk'

const Payment = Native.Payment

// Abre o app de pagamento com o valor de R$5,00 e imprime o nome do portador do cartão
Payment.pay(500, (amountPayed) => {
  console.log(Payment.getCardHolderName())
})

getItk (): string

Retorna o itk da transação

getAtk (): string

Retorna o atk da transação

getAuthorizationDateTime (): string

Retorna a data hora da última transação, caso tenha sido bem sucedida

getBrand (): string

Retorna a bandeira do cartão da última transação, caso tenha sido bem sucedida

getOrderId (): string

Retorna o Order ID da última transação, caso tenha sido bem sucedida

getPan (): string

Retorna o pan mascarado da última transação, caso tenha sido bem sucedida

getAuthorizationCode (): string

Retorna o código de autorização da última transação, caso tenha sido bem sucedida

getInstallmentCount (): string

Retorna o número de parcelas da última transação, caso tenha sido bem sucedida

getType (): string

Retorna qual foi o tipo da última transação efetuada com sucesso

Printer

Responsável por lidar com a impressora térmica do POS

Imprime um HTMLElement. Para obter um melhor resultado, é recomendado criar uma div com o tamanho exato da filipeta e imprimí-lo. Desta forma, não há distorções causadas por redimensionamento. Note que o HTMLElement a ser impresso precisa estar inserido no DOM.

Recomendamos utilizar o componente MbPrintArea para realizar impressões de forma fácil e rápida.

e.g.

import { Native } from 'mamba-websdk'

const Printer = Native.Printer

// Pega o elemento a ser impresso
const print = document.getElementById('print')

// Muda a largura do elemento para o mesmo da filipeta
print.style.width = Printer.getPaperWidth() + 'px'

// Imprime o elemento
Printer.print(print, {}, (error) => {
  if (error === undefined) console.log('A impressão terminou com sucesso')
  else console.log('erro de impressão')
})
Parâmetro Tipo Descrição
element HTMLElement Elemento a ser impresso
config IPrinterConfig Objeto que configura alguns parâmetros da impressão
callback function Callback chamada quando a impressão termina. Seu primeiro argumento é o erro da impressão

A interface IPrinterConfig é a seguinte

Parâmetro Tipo Descrição
scale_to_paper_width boolean Define se o elemento deve ser redimensionado para comportar o tamanho da filipeta. Caso não seja e seu tamanho seja maior do que o necessário, ele será cortado
use_dithering boolean Define se deve ser aplicado um algoritmo de dithering no elemento. Use esta função somente para imprimir imagens, pois o dithering diminui a qualidade da impressão de texto

getPaperWidth (): number

Retorna o tamanho da filipeta, em pixels

isPrinting (): boolean

Retorna true se a impressora está ocupada com uma impressão

failedPrinting (): boolean

Retorna true se a última impressão falhou

System

beep (tone?: string, duration?: number)

Faz um beep. Esta função atualmente é blocante no POS, logo a execução do código será bloqueada até que o beep termine.

Parâmetro Tipo Descrição
tone string O tom do beep, no formato ‘TONE*’, onde * é um número de 1 a 7 e quanto maior o número, maior a frequência
duration number A duração do beep, em ms

e.g.

import { Native } from 'mamba-websdk'

const System = Native.System

// Realiza um beep com a frequência mais grave por meio segundo
System.beep('TONE1', 500)

// Realiza um beep com a frequência mais alta pelo tempo padrão
System.beep('TONE7')

// Realiza um beep com a frequência e tempo padrões
System.beep()

getCurrentConnectionType (): string

Retorna em qual rede o POS está conectado - Wifi ou 3G

changeAdapter (desiredAdapter: string): boolean

Muda o adaptador de rede, retorna true em caso de sucesso, false em falha - wifi ou 3G

hasEthernet (): boolean

Retorna true se o POS possui ethernet

hasWifi (): boolean

Retorna true se o POS possui wifi

hasGprs (): boolean

Retorna true se o POS possui GPRS

isBatteryPresent (): boolean

Retorna true se o POS possui uma bateria presente

getPowerSupply (): string

Retorna a fonte de energia atual do POS. Os possíveis valores são USB, ADAPTER e BATTERY

getTimeFromBoot (): number

Retorna o tempo desde o boot em ms

getSerialNumber (): string

Retorna o número serial do POS

getBatteryStatus (): string

Retorna o status da bateria. Os possíveis valores são CHECK_NOT_SUPPORTED, IN_CHARGE, CHARGE_COMPLETE, DISCHARGE, ABSENT

getBatteryLevel (): number

Retorna o nível da bateria. Este nível é discreto e depende do status da bateria. Uma tabela com os possíveis valores para cada estado é apresentada abaixo

Estado da bateria Nível da bateria
CHECK_NOT_SUPPORTED 0
IN_CHARGE 0
CHARGE_COMPLETE 100
DISCHARGE 10, 30, 50, 70, 90
ABSENT 0

Transaction

getSupportedBrands (): string[]

Retorna uma lista contendo todas as bandeiras suportadas para o lojista

e.g.

import { Native } from 'mamba-websdk'

const Transaction = Native.Transaction

console.log(Transaction.getSupportedBrands()) // ['VISA', 'MASTERCARD', 'ELO']

getMaximumDetailedReportEntries (): number

Retorna o número máximo de transações retornadas pela função getDetailedReportList

getReportResume (from: Date, to: Date, callback: function)

Gera um relatório resumido das transações na data especificada

Parâmetro Tipo Descrição
from Date Data hora inicial do relatório
to Date Data hora final do relatório
callback Date função chamada quando o relatório foi gerado. Seu primeiro parâmetro é um objeto contendo o resumo. Seu segundo parâmetro é o erro, se houve algum

O primeiro parâmetro da callback é um objeto com as seguintes características

Chave Tipo Descrição
totalApproved number Total de transações aprovadas
approvedValue number Valor total aprovado, em centavos
approvedTransactionsNumber number Total de transações aprovadas
cancelledValue number Valor total cancelado, em centavos
cancelledTransactionsNumber number Total de transações canceladas
totalDebit number Valor total transacionado em débito
totalCredit number Valor total transacionado em crédito
totalVoucher number Valor total transacionado em voucher

e.g.

import { Native } from 'mamba-websdk'

const Transaction = Native.Transaction
const from = new Date(2018, 1, 2, 0, 0, 0, 0)
const to = new Date()

Transaction.getReportResume(from, to, (resume, error) => {
  if (error === undefined) {
    console.log('Resumo pronto')
    console.log(`Total aprovado: ${resume.totalApproved}`)
    console.log(`Valor aprovado: ${resume.approvedValue}`)
  } else {
    console.log('Erro ao fazer o resumo')
  }
})

getDetailedReportList (from: Date, to: Date, callback: function)

Gera um relatório detalhado por transação

O primeiro parâmetro da callback é uma lista de objetos com as seguintes características

Chave Tipo Descrição
brand string Bandeira do cartão utilizado na transação
transactionType string Tipo de transação (e.g. Crédito à vista, Débito, …)
totalAmountAuthorized number Valor da aprovado da transação, em centavos
totalAmountCancelled number Valor da cancelado da transação, em centavos
authorizationDateTime Date Data hora da transação
lastCancellationDateTime Date Data hora do último cancelamento realizado nesta transação
remainingValue number Valor efetivo em centavos da transação, após descontar o valore cancelado.
installmentCount number Número de parcelas da transação
transactionStatusCode number Código de estado da transação. Uma tabela com os códigos é mostrada abaixo

-

Códigos de estado, acessíveis pela variável window.MbTransaction.TransactionStatusCodes:

Chave Tipo Descrição
PENDING_REVERSAL_BY_TECHNICAL_ERROR number Erro técnico
PENDING_REVERSAL number Ocorre quando o autorizador aprovou, mas o cartão não
PENDING number Pendente
UNKNOWN number Desconhecido
APPROVED number Aprovado
CANCELLED_BY_THE_USER number Cancelada pelo usuário
CANCELLED_IN_REVISION_PROCESS number Pode ocorrer, por exemplo, quando o cartão não aprovou a transação
CANCELLED_AUTOMATICALLY number Pode ocorrer, por exemplo, quando houve uma falha de conexão ou quando houve timeout
FALLBACK_APPROVED number Aprovado utilizando tarja magnética
FALLBACK_CANCELLED_BY_THE_USER number Cancelado utilizando tarja magnética
FALLBACK_CANCELLED_AUTOMATICALLY number Mesmo que CANCELLED_AUTOMATICALLY, mas utilizando tarja magnética
FALLBACK_CANCELLED_IN_REVISION_PROCESS number Mesmo que CANCELLED_IN_REVISION_PROCESS, mas utilizando tarja magnética

e.g.

import { Native } from 'mamba-websdk'

const Transaction = Native.Transaction
const from = new Date(2018, 1, 2, 0, 0, 0, 0)
const to = new Date()

Transaction.getDetailedReportList(from, to, (report, error) => {
  if (error === undefined) {
    // Imprime todas as bandeiras das transações
    report.forEach(transaction => console.log(transaction.brand))
  } else {
    console.log('Erro ao fazer o relatório')
  }
})

getConsolidatedReportList (from: Date, to: Date, callback: function)

Gera um relatório consolidado das transações no período desejado. O relatório é agrupado por bandeira.

O primeiro parâmetro da callback é uma objeto com as seguintes características

Chave Tipo Descrição
<BANDEIRA> IConsolidatedTransaction[] Lista com todas as transações consolidadas da bandeira

A interface IConsolidatedTransaction possui as seguintes características

Chave Tipo Descrição
totalApprovedBrand number Valor total proveniente das transações, após descontar o valor cancelado, em centavos
approvedValueBrand number Valor total aprovado, em centavos
approvedTransactionsNumber number Número de transações aprovadas
cancelledValueBrand number Valor total cancelado, em centavos
cancelledTransactionsNumber number Número de transações canceladas
transactionType string Tipo da transação e.g. Débito, Crédito, Refeição, …

e.g.

import { Native } from 'mamba-websdk'

const Transaction = Native.Transaction
const from = new Date(2018, 1, 2, 0, 0, 0, 0)
const to = new Date()

Transaction.getConsolidatedReportList(from, to, (report, error) => {
  if (error === undefined) {
    const brands = Object.keys(report)

    brands.forEach(brand => {
      const transactions = report[brand]

      console.log(`Bandeira = ${brand}`)

      transaction.forEach(transaction => {
        console.log(`Tipo da transação = ${transaction.transactionType}`)
        console.log(`Total aprovado = ${transaction.totalApprovedBrand}`)
      })

      console.log('')
    })
  } else {
    console.log('Erro ao fazer o relatório')
  }
})

// Saída:
// Bandeira = VISA
// Tipo da transação = Débito
// Total aprovado = 10000
// Tipo da transação = Crédito
// Total aprovado = 18000
// 
// Bandeira = MASTERCARD
// Tipo da transação = Débito
// Total aprovado = 5000
// Tipo da transação = Crédito
// Total aprovado = 98000
//