Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const _refreshUserSubscriptionStatus = async (userId: string) => {
chargebee.configure(getChargebeeOptions())
const claims: Claims = {
subscriptions: {},
lastSubscribed: null,
}
const subscriptionQuery = {
customer_id: userId,
'sort_by[asc]': 'created_at',
}
// Query the Chargebee API for this user's subscriptions, adding every active/in_trial sub to the claims object.
// any past subscription updates the lastSubscribed property to know whether a user has subscribed in the past.
await chargebee.subscription
.list(subscriptionQuery)
.request(function(error: any, result: any) {
const _refreshUserSubscriptionStatus = async (userId: string) => {
chargebee.configure(getChargebeeOptions())
const claims: Claims = {
subscriptions: {},
lastSubscribed: null,
}
const subscriptionQuery = {
customer_id: userId,
'sort_by[asc]': 'created_at',
}
// Query the Chargebee API for this user's subscriptions, adding every active/in_trial sub to the claims object.
// any past subscription updates the lastSubscribed property to know whether a user has subscribed in the past.
await chargebee.subscription
.list(subscriptionQuery)
.request(function(error: any, result: any) {
if (error) {
return errorResponse('Provider', error)
} else {
for (const entry of result.list) {
if (
entry.subscription.status === 'active' ||
entry.subscription.status === 'in_trial'
) {
// TODO: verify `next_billing_at` is the right thing to refresh on and not `current_term_end`
claims.subscriptions[entry.subscription.plan_id] = {
refreshAt: entry.subscription.next_billing_at,
}
}
claims.lastSubscribed = entry.subscription.createdAt
async (data: any, context: CallableContext) => {
if (context.auth == null) {
return notAuthenticatedResponse
}
// todo: move this up to the global import runtime context if the tests are okay with it
chargebee.configure(getChargebeeOptions())
const checkoutOptions = {
subscription: { plan_id: data.planId },
customer: getUser(context),
}
return chargebee.hosted_page
.checkout_new(checkoutOptions)
.request(resultFormatter(hostedPage))
},
)
createHostedPageSubscription(planId, user, cb) {
const hostedPage = chargebee.hosted_page;
const checkoutFunc = user.subscriptionId
? hostedPage.checkout_existing : hostedPage.checkout_new;
const params = ({
subscription: {
plan_id: planId
},
customer: {
id: user && user._id.toString(),
email: user && user.email,
first_name: user.name && user.name.split(' ')[0],
last_name: ''
},
reactivate: true,
redirect_url: configChargebee.redirect_url,
cancel_url: configChargebee.cancel_url,
embed: true,
import Stripe from "stripe";
import chargebee, { Customer } from "chargebee";
import {
STRIPE_SECRET_KEY,
CHARGEBEE_SECRET_KEY,
CHARGEBEE_SITE
} from "../config";
import { updateOrganization } from "../crud/organization";
const stripe = new Stripe(STRIPE_SECRET_KEY);
chargebee.configure({
api_key: CHARGEBEE_SECRET_KEY,
site: CHARGEBEE_SITE
});
/**
* @param id - Stripe customer ID
*/
export const getStripeCustomer = (id: string) =>
new Promise((resolve, reject) => {
chargebee.customer.retrieve(id).request((error: any, result: any) => {
if (error) return reject(error);
resolve(result.customer as Customer);
});
});
/**
constructor() {
if (!instance) {
chargebee.configure({
site: configChargebee.site,
api_key: configChargebee.api_key
});
instance = this;
}
return instance;
}
import chargebee from 'chargebee'
import variables from './constants.js'
chargebee.configure({
site: variables.CHARGEBEE_SITE,
api_key: variables.CHARGEBEE_API_KEY
})
new Promise((resolve, reject) => {
chargebee.subscription
.list({
"customer_id[is]": id
})
.request((error: any, result: any) => {
if (error) return reject(error);
resolve(result.list as any);
});
});
reactivateSubscription(subscriptionId, cb) {
chargebee.subscription.reactivate(subscriptionId).request(cb);
}
new Promise((resolve, reject) => {
chargebee.subscription
.retrieve(sourceId)
.request((error: any, result: any) => {
if (error) return reject(error);
resolve(result as any);
});
});