feat: Tor hidden service, PDF paid details, subaddress placeholder

- Tor onion: mc6wfeaqc7oijgdcudrr5zsotmwok3jzk3tu2uezzyjisn7nzzjjizyd.onion
- Onion link in footer and README
- PDF "BEZAHLT" block shows TX hash + date in second line
- Address placeholder 8... (encourages subaddress usage)
This commit is contained in:
Alexander Schmidt
2026-03-25 17:37:19 +01:00
parent e36ec77bcd
commit 4c93e335f3
6 changed files with 25 additions and 18 deletions

25
app.js
View File

@@ -620,21 +620,28 @@
}
// --- Payment Status ---
if (paymentStatus.classList.contains('paid')) {
if (lastPaidData) {
y += 4;
var paidDateStr = '';
if (lastPaidData.verified_at) {
var pd = new Date(lastPaidData.verified_at * 1000);
paidDateStr = pd.toLocaleDateString(I18n.getLang() === 'de' ? 'de-CH' : 'en-US', {
year: 'numeric', month: 'long', day: 'numeric'
});
}
var paidLine = lastPaidData.amount.toFixed(6) + ' XMR — TX ' +
lastPaidData.tx_hash.substring(0, 8) + '...' +
(paidDateStr ? ' — ' + paidDateStr : '');
doc.setFillColor(76, 175, 80);
doc.roundedRect(margin, y - 4, contentW, 16, 2, 2, 'F');
doc.setFont('helvetica', 'bold');
doc.setFontSize(12);
doc.setTextColor(255, 255, 255);
doc.text(I18n.t('status_paid').toUpperCase(), margin + contentW / 2, y + 2, { align: 'center' });
// Extract details from the paid-detail div
var paidDetail = paymentStatus.querySelector('.paid-detail');
if (paidDetail) {
doc.setFont('helvetica', 'normal');
doc.setFontSize(8);
doc.text(paidDetail.textContent, margin + contentW / 2, y + 8, { align: 'center' });
}
doc.text(I18n.t('status_paid').toUpperCase(), margin + contentW / 2, y + 1, { align: 'center' });
doc.setFont('helvetica', 'normal');
doc.setFontSize(7.5);
doc.text(paidLine, margin + contentW / 2, y + 7, { align: 'center' });
y += 22;
}