-
Notifications
You must be signed in to change notification settings - Fork 134
/
Copy pathstripe.js
80 lines (67 loc) · 2.18 KB
/
stripe.js
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { loadStripe } from '@stripe/stripe-js'
import { placeOrder } from './apiService'
import { CardWidget } from './CardWidget'
export async function initStripe() {
const stripe = await loadStripe('pk_test_51Hf6vbDfWW6uHRy7b6Upoa4bWhGYmk2ElEN4AiFeqozzlccU6OpAoD9d1oIar3qg9i8ASiOs9ly4rFJQOTPM5MMk00GN7COA2N');
let card = null;
// function mountWidget() {
// const elements = stripe.elements()
// let style = {
// base: {
// color: '#32325d',
// fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
// fontSmoothing: 'antialiased',
// fontSize: '16px',
// '::placeholder': {
// color: '#aab7c4'
// }
// },
// invalid: {
// color: '#fa755a',
// iconColor: '#fa755a'
// }
// };
// card = elements.create('card', { style, hidePostalCode: true })
// card.mount('#card-element')
// }
const paymentType = document.querySelector('#paymentType');
if(!paymentType) {
return;
}
paymentType.addEventListener('change' , (e)=> {
if(e.target.value === 'card') {
// Display Widget
card = new CardWidget(stripe)
card.mount()
} else {
card.destroy()
}
})
// Ajax call
const paymentForm = document.querySelector('#payment-form');
if(paymentForm) {
paymentForm.addEventListener('submit', async (e) => {
e.preventDefault();
let formData = new FormData(paymentForm);
let formObject = {}
for(let [key, value] of formData.entries()) {
formObject[key] = value
}
if (!card) {
// Ajax
placeOrder(formObject);
return;
}
const token = await card.createToken()
formObject.stripeToken = token.id;
placeOrder(formObject);
// // Verify card
// stripe.createToken(card).then((result) => {
// formObject.stripeToken = result.token.id;
// placeOrder(formObject);
// }).catch((err) => {
// console.log(err)
// })
})
}
}