tom-microservice
Version:
Tom creates customers, subscriptions plans & send notifications.
58 lines (46 loc) • 1.19 kB
JavaScript
const createStripe = require('stripe')
const { get } = require('lodash')
const { wardCredential, ward, is } = require('../../ward')
const getMetadata = require('../../get-metadata')
module.exports = ({ config }) => {
const errFn = wardCredential(config, [
{ key: 'payment.stripe_key', env: 'TOM_STRIPE_KEY' }
])
if (errFn) return errFn
const stripe = createStripe(get(config, 'payment.stripe_key'))
const session = async ({
ipAddress,
headers,
planId,
successUrl,
cancelUrl
}) => {
ward(planId, {
label: 'planId',
test: is.string.nonEmpty
})
const metadata = await getMetadata({ ipAddress, headers })
const session = await stripe.checkout.sessions.create({
billing_address_collection: 'required',
mode: 'subscription',
line_items: [
{
price: planId,
quantity: 1
}
],
tax_id_collection: {
enabled: true
},
automatic_tax: {
enabled: true
},
success_url: successUrl,
cancel_url: cancelUrl,
metadata: { ...metadata, planId }
})
return { sessionId: session.id }
}
return session
}