import { env } from '$env/dynamic/private'; import { error, redirect } from '@sveltejs/kit'; import { post, auth } from '$lib/utils'; import { createTicket } from '$lib/ticket'; let stripe = 'https://api.stripe.com/v1'; export const actions = { default: async ({ cookies, request }) => { let form = await request.formData(); let headers = new Headers(); headers.set('Authorization', 'Basic ' + new Buffer(env.STRIPE + ':').toString('base64')); let body = new URLSearchParams({ 'card[number]': form.get('number').replace(/\s+/g, ''), 'card[exp_month]': form.get('expiry').slice(0, 2), 'card[exp_year]': form.get('expiry').slice(-2), 'card[cvc]': form.get('cvc') }); let method = 'POST'; let { id: source } = await fetch(`${stripe}/tokens`, { body, headers, method }).then((r) => r.json() ); body = new URLSearchParams({ amount: 600, currency: 'cad', source, description: 'launch ticket' }); let { status } = await fetch(`${stripe}/charges`, { body, headers, method }).then((r) => r.json() ); if (status !== 'succeeded') throw error(500, { message: 'Card payment failed' }); let asset = await createTicket(cookies, form.get('username')); throw redirect(307, `/launch/thanks/${asset}`); } };