summaryrefslogtreecommitdiff
path: root/payments/static/js/payments/stripe.js
blob: feca99c884d66f6a2706db1df8685eb4dccbe2f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
document.addEventListener('DOMContentLoaded', function () {
    var stripeInput = document.getElementById('id_stripe_token');
    var form = stripeInput.form;
    var publishableKey = stripeInput.attributes['data-publishable-key'].value;
    Stripe.setPublishableKey(publishableKey);
    form.addEventListener('submit', function (e) {
        var button = this.querySelector('[type=submit]');
        button.disabled = true;
        Stripe.card.createToken({
            name: this.elements.id_name.value,
            number: this.elements.id_number.value,
            cvc: this.elements.id_cvv2.value,
            exp_month: this.elements.id_expiration_0.value,
            exp_year: this.elements.id_expiration_1.value,
            address_line1: stripeInput.attributes['data-address-line1'].value,
            address_line2: stripeInput.attributes['data-address-line2'].value,
            address_city: stripeInput.attributes['data-address-city'].value,
            address_state: stripeInput.attributes['data-address-state'].value,
            address_zip: stripeInput.attributes['data-address-zip'].value,
            address_country: stripeInput.attributes['data-address-country'].value
        }, function (status, response) {
            if (400 <= status && status <= 500) {
                alert(response.error.message);
                button.disabled = false;
            } else {
                stripeInput.value = response.id;
                form.submit();
            }
        });
        e.preventDefault();
    }, false);
}, false);