;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Logo Pagbenk Seu dinheiro rende mais
Topo

Comissão sugere proibir que bancos controlem cadeia de máquinas de cartão

Shutterstock
Imagem: Shutterstock

Antonio Temóteo

Do UOL, em Brasília

04/12/2018 12h26

A Comissão de Assuntos Econômicos (CAE) do Senado Federal aprovou nesta terça-feira (4) um relatório que recomenda ao Cade (Conselho istrativo de Defesa Econômica) proibir a verticalização no mercado de meios de pagamentos.

O relatório será encaminhado ao Cade e ao Banco Central. São apenas recomendações --as entidades não têm obrigação de segui-las.

O objetivo das medidas é aumentar a concorrência e tentar diminuir o spread bancário, como é chamada a diferença entre os juros pagos pelos bancos para captar recursos e os juros cobrados por eles para emprestar dinheiro aos clientes. A expectativa é reduzir os juros para o consumidor final. No mês ado, a taxa de juros do rotativo do cartão foi de 275,7% ao ano, em média. 

Leia também:

Na prática, o relator da matéria, senador Armando Monteiro (PTB-PE), quer impedir que um mesmo grupo financeiro seja controlador de empresas que atuam em todos os elos da cadeia do setor. Hoje, há casos em que bandeira, emissora do cartão de crédito e credenciadora (dona da maquininha) têm uma mesma instituição financeira como sócia.

“Em outras palavras, proibir a verticalização poderia ser uma medida mais efetiva que o padrão atual de punições através de multas. Alguns países [e blocos] já caminharam nessa direção, tais como: Israel, Chile, Argentina, União Europeia, Austrália e Estados Unidos”, afirmou o relator.

Subsídios cruzados

Segundo Monteiro, com o fim da verticalização, uma instituição financeira não poderia mais conceder subsídios cruzados.

Isso pode acontecer quando o banco é dono da credenciadora e da bandeira que emite o cartão. 

A credenciadora oferece um desconto ao lojista, cobrando uma taxa menor em cada transação feita na máquina de cartão. Mas o banco compensa esse desconto aumentando a tarifa de intercâmbio, aquela cobrada por eles em cada transação processada pelas credenciadoras. Como a tarifa é estabelecida pela bandeira e paga ao banco emissor, essa prática prejudica os demais competidores, sobretudo as credenciadoras.

Limite para taxa cobrada das credenciadoras

Além disso, o relatório recomenda ao Banco Central (BC) que estabeleça um limite para a tarifa cobrada pelos bancos no uso de cartões de crédito. 

Ele relembrou que, em março desse ano, o BC definiu um teto para a tarifa de intercâmbio para cartões de débito.

Como cobrar dívida de um amigo

UOL Notícias