started implementing stripe

This commit is contained in:
2025-06-26 15:15:16 +02:00
parent 3a0659b63b
commit 9b85f3bb8d
24 changed files with 2025 additions and 103 deletions

View File

@@ -529,6 +529,95 @@ async function saveCloudflareConnection(event) {
saveModal.show();
}
// Save Stripe Connection
async function saveStripeConnection(event) {
event.preventDefault();
const saveModal = new bootstrap.Modal(document.getElementById('saveConnectionModal'));
const messageElement = document.getElementById('saveConnectionMessage');
messageElement.textContent = '';
messageElement.className = '';
try {
const publishableKey = document.getElementById('stripePublishableKey').value;
const secretKey = document.getElementById('stripeSecretKey').value;
const webhookSecret = document.getElementById('stripeWebhookSecret').value;
const customerPortalUrl = document.getElementById('stripeCustomerPortalUrl').value;
const testMode = document.getElementById('stripeTestMode').checked;
if (!publishableKey || !secretKey) {
throw new Error('Please fill in all required fields');
}
const response = await fetch('/settings/save-stripe-connection', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': getCsrfToken()
},
body: JSON.stringify({
publishable_key: publishableKey,
secret_key: secretKey,
webhook_secret: webhookSecret,
customer_portal_url: customerPortalUrl,
test_mode: testMode
})
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'Failed to save settings');
}
messageElement.textContent = 'Settings saved successfully!';
messageElement.className = 'text-success';
} catch (error) {
messageElement.textContent = error.message || 'Failed to save settings';
messageElement.className = 'text-danger';
}
saveModal.show();
}
// Test Stripe Connection
async function testStripeConnection() {
const saveModal = new bootstrap.Modal(document.getElementById('saveConnectionModal'));
const messageElement = document.getElementById('saveConnectionMessage');
messageElement.textContent = '';
messageElement.className = '';
try {
const secretKey = document.getElementById('stripeSecretKey').value;
if (!secretKey) {
throw new Error('Please enter your Stripe secret key first');
}
const response = await fetch('/settings/test-stripe-connection', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': getCsrfToken()
},
body: JSON.stringify({
secret_key: secretKey
})
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error || 'Connection test failed');
}
messageElement.textContent = 'Connection test successful!';
messageElement.className = 'text-success';
} catch (error) {
messageElement.textContent = error.message || 'Connection test failed';
messageElement.className = 'text-danger';
}
saveModal.show();
}
// Initialize on page load
document.addEventListener('DOMContentLoaded', function() {
const gitSettings = JSON.parse(document.querySelector('meta[name="git-settings"]').getAttribute('content'));