Improve webhook handling in AbacatePay route to accurately detect paid events, support anonymous donations, and log structured data for future database and email integrations. Add frontend logic in DonationCard to check payment confirmation via localStorage for real-time UI updates without API polling.
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
// Helper para gerenciar confirmações de pagamento via localStorage
|
|
// Este arquivo será usado pelo webhook para notificar o frontend
|
|
|
|
export function confirmPayment(pixId: string) {
|
|
if (typeof window === "undefined") return;
|
|
|
|
try {
|
|
// Obter array de pixIds confirmados
|
|
const confirmedStorage = localStorage.getItem("confirmedPixIds");
|
|
let confirmed: string[] = confirmedStorage
|
|
? JSON.parse(confirmedStorage)
|
|
: [];
|
|
|
|
// Adicionar novo pixId se ainda não estiver na lista
|
|
if (!confirmed.includes(pixId)) {
|
|
confirmed.push(pixId);
|
|
localStorage.setItem("confirmedPixIds", JSON.stringify(confirmed));
|
|
console.log("✅ Pagamento confirmado via helper:", pixId);
|
|
}
|
|
} catch (error) {
|
|
console.error("Erro ao confirmar pagamento:", error);
|
|
}
|
|
}
|
|
|
|
export function isPaymentConfirmed(pixId: string): boolean {
|
|
if (typeof window === "undefined") return false;
|
|
|
|
try {
|
|
const confirmedStorage = localStorage.getItem("confirmedPixIds");
|
|
const confirmed: string[] = confirmedStorage
|
|
? JSON.parse(confirmedStorage)
|
|
: [];
|
|
return confirmed.includes(pixId);
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Expor função global para o webhook (se necessário)
|
|
if (typeof window !== "undefined") {
|
|
(window as any).confirmPaymentPix = confirmPayment;
|
|
}
|