fix(stripe): pass metadata to subscription object in upgrade method (#7090)

This commit is contained in:
Taesu
2026-01-02 13:26:58 +09:00
committed by GitHub
parent a420081245
commit 6e4821cef5
2 changed files with 74 additions and 1 deletions

View File

@@ -532,15 +532,23 @@ export const upgradeSubscription = (options: StripeOptions) => {
],
subscription_data: {
...freeTrial,
metadata: {
...ctx.body.metadata,
...params?.params?.subscription_data?.metadata,
userId: user.id,
subscriptionId: subscription.id,
referenceId,
},
},
mode: "subscription",
client_reference_id: referenceId,
...params?.params,
metadata: {
...ctx.body.metadata,
...params?.params?.metadata,
userId: user.id,
subscriptionId: subscription.id,
referenceId,
...params?.params?.metadata,
},
},
params?.options,

View File

@@ -329,6 +329,71 @@ describe("stripe", () => {
expect(mockStripe.subscriptions.update).not.toHaveBeenCalled();
});
it("should pass metadata to subscription when upgrading", async () => {
const { client, sessionSetter } = await getTestInstance(
{
database: memory,
plugins: [stripe(stripeOptions)],
},
{
disableTestUser: true,
clientOptions: {
plugins: [
stripeClient({
subscription: true,
}),
],
},
},
);
await client.signUp.email(
{
...testUser,
email: "metadata-test@email.com",
},
{
throw: true,
},
);
const headers = new Headers();
await client.signIn.email(
{
...testUser,
email: "metadata-test@email.com",
},
{
throw: true,
onSuccess: sessionSetter(headers),
},
);
const customMetadata = {
customField: "customValue",
organizationId: "org_123",
projectId: "proj_456",
};
await client.subscription.upgrade({
plan: "starter",
metadata: customMetadata,
fetchOptions: {
headers,
},
});
expect(mockStripe.checkout.sessions.create).toHaveBeenCalledWith(
expect.objectContaining({
subscription_data: expect.objectContaining({
metadata: expect.objectContaining(customMetadata),
}),
metadata: expect.objectContaining(customMetadata),
}),
undefined,
);
});
it("should list active subscriptions", async () => {
const { client, auth, sessionSetter } = await getTestInstance(
{