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
print (element: HTMLElement, config?: IPrinterConfig, callback?: function)
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
//