Я хочу постоянно импортировать банковские операции через HBCI.
Проблема в том, что они не имеют ни уникального ключа, ни точной отметки времени (отметка времени указывается только в разрешении дня, то есть всегда в 12:00).
Это данные, которые я получаю от API
Генерация хеша для всех полей может привести к ложным срабатываниям (если кто-то передает одно и то же значение в один и тот же день с тем же текстом цели и т. Д.)
Как я могу избежать двойного импорта и генерировать уникальный ключ?
/**
* Generate a unique ID per transaction
* We assume, that all transactions of a day are always present in the fetched transactions
* (after a while, very old transactions might not appear)
* So we generate a continues key per day, combine it with the date and have a globally unique key
*
* @return Transaction[]
*/
public static function getKeyedTransactions()
{
$transactions = self::getTransactions();
$result = [];
$dateCounters = array();
foreach($transactions as $transaction) {
$date = $transaction->getDate()->format('Ymd');
if (!isset($dateCounters[$date])) {
$dateCounters[$date] = 0;
}
$dateCounters[$date]++;
$uniqId = $date . sprintf('%05d', $dateCounters[$date]);
$result[$uniqId] = $transaction;
}
return $result;
}
Других решений пока нет …