O Pagar.me passará a limitar o valor máximo que pode ser enviado no parâmetro count
para buscas na API. Para que o impacto seja o menor possível, essa documentação descreverá como fazer essa migração em diversas linguagens de programação.
O parâmetro count
representa a quantidade de registros que será retornado em uma consulta, enquanto o parâmetro page
diz qual página da consulta está sendo retornada.
Por exemplo, se o parâmetro count=10
for utilizado em conjunto com o parâmetro page=2
, os registros retornados serão respectivos à 11º posição até a 20º posição.
Já, se os parâmetros forem utilizados como: count=20
e page=2
, os registros retornados serão respectivos à 21º posição até a 40º posição.
Atualmente, não há limite para utilizar parâmetro count
, mas a partir de 22/11/2019, o limite será 1000.
Para que não ser afetado, você deverá fazer algumas alterações em seu sistema, para passar à utilizar o parâmetro count
em conjunto com o parâmetro page
. Existem várias soluções para isso, mas a mais simples de ser feita é um loop
buscando por essas informações, assim sua integração terá o menor impacto possível.
Cada uma das bibliotecas terá um exemplo de como fazer essa nova busca. Os exemplos usam a rota /transactions
, mas a busca por qualquer objeto pode ser realizada dessa forma
Antes:
using System;
using PagarMe;
namespace TesteQuery
{
class MainClass
{
public static void Main(string[] args)
{
PagarMeService.DefaultApiKey = "SUA_API_KEY";
var pagarmeRequest = PagarMeService.GetDefaultService().Transactions.BuildFindQuery(new Transaction());
pagarmeRequest.Query.Add(count);
var transactions = PagarMeService.GetDefaultService().Transactions.FinishFindQuery(pagarmeRequest.Execute();
Console.WriteLine(transactions);
}
}
}
Depois:
using System;
using PagarMe;
using System.Collections;
namespace TesteQuery
{
class MainClass
{
public static void Main(string[] args) {
PagarMeService.DefaultApiKey = "SUA_API_KEY";
var transactionsTotal = new ArrayList();
var countTotal = 10000;
var pagarmeRequest = PagarMeService.GetDefaultService().Transactions.BuildFindQuery(new Transaction());
var count = Tuple.Create("count", "1000");
var page = 1;
pagarmeRequest.Query.Add(count);
do
{
pagarmeRequest.Query.Add(Tuple.Create("page", page.ToString()));
var transactions = PagarMeService.GetDefaultService() .Transactions.FinishFindQuery(pagarmeRequest.Execute());
transactionsTotal.Add(transactions);
page++;
} while (1000 * page <= countTotal);
}
}
}
Antes:
public static void main(String[] args) {
PagarMe.init("SUA_API_KEY");
try {
ArrayList<Transaction> trxs = (ArrayList<Transaction>) new Transaction().findCollection(1000, 1);
System.out.println(trxs);
} catch (PagarMeException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
Depois:
public static void main(String[] args) {
PagarMe.init("SUA_API_KEY");
int page = 1;
int countTotal = 10000;
ArrayList<ArrayList<Transaction>> trxs = new ArrayList();
try {
do {
trxs.add((ArrayList<Transaction>) new Transaction().findCollection(1000, page));
page++;
} while(page * 1000 <= countTotal);
System.out.println(trxs);
} catch (PagarMeException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
Antes:
const pagarme = require('pagarme')
const getTransactions = async () => {
const client = await pagarme.client.connect({
api_key: 'SUA_API_KEY'
})
const transactions = await client.transactions.find({
count: 9999
})
console.log(transactions.length)
}
getTransactions()
Depois:
const pagarme = require('pagarme')
const getTransactions = async () => {
let count = 1000
let page = 1
let transactions
let transactionsRequest
const client = await pagarme.client.connect({
api_key: 'SUA_API_KEY'
})
do {
transactionsRequest = await client.transactions.find({
page,
count
})
Array.prototype.push.apply(transactions, transactionsRequest)
page++
} while (transactionsRequest.length === count)
console.log(transactions.length)
}
getTransactions()
Antes:
<?php
require __DIR__.'/vendor/autoload.php';
$apiKey = 'SUA_API_KEY';
$pagarMe = new \PagarMe\Sdk\PagarMe($apiKey);
$page = 1;
$count = 9999;
$transactionList = $pagarMe->transaction()->getList($page, $count);
echo count($transactionList);
?>
Depois:
<?php
require __DIR__.'/vendor/autoload.php';
$apiKey = 'SUA_API_KEY';
$pagarMe = new \PagarMe\Sdk\PagarMe($apiKey);
$transactions = [];
$transactionsRequest = [];
$page = 1;
$count = 1000;
do {
$transactionsRequest = $pagarMe->transaction()->getList($page, $count);
$transactions = array_merge($transactions, $transactionsRequest);
$page++;
} while ($transactionsRequest === $count);
echo count($transactions);
Antes
require __DIR__.'/vendor/autoload.php';
$pagarme = new PagarMe\Client('SUA_API_KEY');
$page = 1;
$count = 9999;
$transactions = $pagarme->transactions()->getList([
"page" => $page,
"count" => $count
]);
echo count($transactions);
Depois
<?php
require __DIR__.'/vendor/autoload.php';
$pagarme = new PagarMe\Client('SUA_API_KEY');
$transactions = [];
$transactionsRequest = [];
$page = 1;
$count = 1000;
do {
$transactionsRequest = $pagarme->transactions()->getList([
"page" => $page,
"count" => $count
]);
$transactions = array_merge($transactions, $transactionsRequest);
$page++;
} while ($transactionsRequest === $count);
echo count($transactions);
Antes:
import pagarme
pagarme.authentication_key("SUA_API_KEY")
count = 9999
page = 1
transactions = pagarme.transaction.find_by({
"count": count,
"page": page
})
print(len(transactions))
Depois:
import pagarme
pagarme.authentication_key("SUA_API_KEY")
count = 1000
page = 1
transactions = []
while True:
transactionsRequest = pagarme.transaction.find_by({
"count": count,
"page": page
})
transactions = transactions + transactionsRequest
page += 1
if (len(transactionsRequest) < count):
break
print(len(transactions))
Antes:
require 'pagarme'
PagarMe.api_key = "SUA_API_KEY"
page = 1
count = 9999
transactions = PagarMe::Transaction.all(page, count)
puts transactions.length
Depois:
require 'pagarme'
PagarMe.api_key = "SUA_API_KEY"
page = 1
count = 1000
transactions = []
loop do
transactionsRequest = PagarMe::Transaction.all(page, count)
transactions += transactionsRequest
page += 1
break if transactionsRequest.length < count
end
puts transactions.length