|
|
|
|
|
|
|
|
|
|
|
const stripe = Stripe('pk_test_51P8KpGDMHO4ZxtzFDMHO4ZxtzFDMHO4ZxtzF'); |
|
|
const elements = stripe.elements({ |
|
|
appearance: { |
|
|
theme: 'stripe', |
|
|
variables: { |
|
|
colorPrimary: '#6366f1', |
|
|
colorText: '#1f2937', |
|
|
colorBackground: '#ffffff', |
|
|
colorDanger: '#ef4444', |
|
|
}, |
|
|
rules: { |
|
|
'.Input': { |
|
|
borderColor: '#d1d5db', |
|
|
borderRadius: '0.5rem', |
|
|
boxShadow: 'none', |
|
|
}, |
|
|
'.Input:focus': { |
|
|
borderColor: '#6366f1', |
|
|
boxShadow: '0 0 0 3px rgba(99, 102, 241, 0.3)', |
|
|
}, |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
const paymentElement = elements.create('payment', { |
|
|
layout: { |
|
|
type: 'tabs', |
|
|
defaultCollapsed: false, |
|
|
radios: false, |
|
|
spacedAccordionItems: false |
|
|
}, |
|
|
paymentMethodOrder: ['card', 'klarna', 'afterpay_clearpay', 'affirm'], |
|
|
wallets: { |
|
|
applePay: 'never', |
|
|
googlePay: 'never' |
|
|
} |
|
|
}); |
|
|
|
|
|
paymentElement.mount('#payment-element'); |
|
|
|
|
|
|
|
|
const submitButton = document.getElementById('submit-button'); |
|
|
const errorMessage = document.getElementById('error-message'); |
|
|
|
|
|
submitButton.addEventListener('click', async (e) => { |
|
|
e.preventDefault(); |
|
|
|
|
|
|
|
|
submitButton.disabled = true; |
|
|
submitButton.innerHTML = ` |
|
|
<div class="flex items-center justify-center"> |
|
|
<svg class="animate-spin -ml-1 mr-3 h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> |
|
|
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> |
|
|
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> |
|
|
</svg> |
|
|
Processing... |
|
|
</div> |
|
|
`; |
|
|
|
|
|
|
|
|
const {error} = await stripe.confirmPayment({ |
|
|
elements, |
|
|
confirmParams: { |
|
|
return_url: 'https://your-website.com/order-confirmation', |
|
|
}, |
|
|
}); |
|
|
|
|
|
|
|
|
if (error) { |
|
|
errorMessage.classList.remove('hidden'); |
|
|
errorMessage.textContent = error.message; |
|
|
submitButton.disabled = false; |
|
|
submitButton.innerHTML = 'Pay $55.98'; |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
paymentElement.on('change', (event) => { |
|
|
if (event.error) { |
|
|
errorMessage.classList.remove('hidden'); |
|
|
errorMessage.textContent = event.error.message; |
|
|
} else { |
|
|
errorMessage.classList.add('hidden'); |
|
|
} |
|
|
}); |