mirror of
https://git.mirrors.martin98.com/https://github.com/mendableai/firecrawl
synced 2025-08-11 13:49:03 +08:00
Nick: fix auto charge failing when payment is through Link
This commit is contained in:
parent
20e5348e9a
commit
801f0f773e
@ -113,15 +113,24 @@ export async function autoCharge(
|
|||||||
// Reset ACUC cache to reflect the new credit balance
|
// Reset ACUC cache to reflect the new credit balance
|
||||||
const cacheKeyACUC = `acuc_${chunk.api_key}`;
|
const cacheKeyACUC = `acuc_${chunk.api_key}`;
|
||||||
await deleteKey(cacheKeyACUC);
|
await deleteKey(cacheKeyACUC);
|
||||||
if (process.env.SLACK_ADMIN_WEBHOOK_URL ) {
|
|
||||||
|
if (process.env.SLACK_ADMIN_WEBHOOK_URL) {
|
||||||
|
const webhookCooldownKey = `webhook_cooldown_${chunk.team_id}`;
|
||||||
|
const isInCooldown = await getValue(webhookCooldownKey);
|
||||||
|
|
||||||
|
if (!isInCooldown) {
|
||||||
sendSlackWebhook(
|
sendSlackWebhook(
|
||||||
`Auto-recharge successful: Team ${chunk.team_id}. ${AUTO_RECHARGE_CREDITS} credits added. Payment status: ${paymentStatus.return_status}. User was notified via email.`,
|
`Auto-recharge: Team ${chunk.team_id}. ${AUTO_RECHARGE_CREDITS} credits added. Payment status: ${paymentStatus.return_status}.`,
|
||||||
false,
|
false,
|
||||||
process.env.SLACK_ADMIN_WEBHOOK_URL
|
process.env.SLACK_ADMIN_WEBHOOK_URL
|
||||||
).catch((error) => {
|
).catch((error) => {
|
||||||
Logger.debug(`Error sending slack notification: ${error}`);
|
Logger.debug(`Error sending slack notification: ${error}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Set cooldown for 1 hour
|
||||||
|
await setValue(webhookCooldownKey, 'true', 60 * 60);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
message: "Auto-recharge successful",
|
message: "Auto-recharge successful",
|
||||||
|
@ -7,7 +7,7 @@ async function getCustomerDefaultPaymentMethod(customerId: string) {
|
|||||||
const paymentMethods = await stripe.customers.listPaymentMethods(customerId, {
|
const paymentMethods = await stripe.customers.listPaymentMethods(customerId, {
|
||||||
limit: 3,
|
limit: 3,
|
||||||
});
|
});
|
||||||
return paymentMethods.data[0]?.id;
|
return paymentMethods.data[0] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReturnStatus = "succeeded" | "requires_action" | "failed";
|
type ReturnStatus = "succeeded" | "requires_action" | "failed";
|
||||||
@ -16,13 +16,18 @@ export async function createPaymentIntent(
|
|||||||
customer_id: string
|
customer_id: string
|
||||||
): Promise<{ return_status: ReturnStatus; charge_id: string }> {
|
): Promise<{ return_status: ReturnStatus; charge_id: string }> {
|
||||||
try {
|
try {
|
||||||
|
const defaultPaymentMethod = await getCustomerDefaultPaymentMethod(customer_id);
|
||||||
|
if (!defaultPaymentMethod) {
|
||||||
|
Logger.error(`No default payment method found for customer: ${customer_id}`);
|
||||||
|
return { return_status: "failed", charge_id: "" };
|
||||||
|
}
|
||||||
const paymentIntent = await stripe.paymentIntents.create({
|
const paymentIntent = await stripe.paymentIntents.create({
|
||||||
amount: 1100,
|
amount: 1100,
|
||||||
currency: "usd",
|
currency: "usd",
|
||||||
customer: customer_id,
|
customer: customer_id,
|
||||||
description: "Firecrawl: Auto re-charge of 1000 credits",
|
description: "Firecrawl: Auto re-charge of 1000 credits",
|
||||||
payment_method_types: ["card"],
|
payment_method_types: [defaultPaymentMethod?.type ?? "card"],
|
||||||
payment_method: await getCustomerDefaultPaymentMethod(customer_id),
|
payment_method: defaultPaymentMethod?.id,
|
||||||
off_session: true,
|
off_session: true,
|
||||||
confirm: true,
|
confirm: true,
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user