* return 200 asap to paddle and queue webhook received
* paddle ids to int
This commit is contained in:
@ -1,11 +1,43 @@
|
||||
import { getConfig } from "blitz";
|
||||
import got from "got";
|
||||
import type { PaddleSdkSubscriptionCreatedEvent } from "@devoxa/paddle-sdk";
|
||||
import { PaddleSdk, PaddleSdkSubscriptionStatus, stringifyMetadata } from "@devoxa/paddle-sdk";
|
||||
|
||||
import { SubscriptionStatus } from "db";
|
||||
|
||||
const { publicRuntimeConfig, serverRuntimeConfig } = getConfig();
|
||||
|
||||
const vendor_id = publicRuntimeConfig.paddle.vendorId;
|
||||
const vendor_auth_code = serverRuntimeConfig.paddle.apiKey;
|
||||
|
||||
export const paddleSdk = new PaddleSdk({
|
||||
publicKey: serverRuntimeConfig.paddle.publicKey,
|
||||
vendorId: vendor_id,
|
||||
vendorAuthCode: vendor_auth_code,
|
||||
metadataCodec: stringifyMetadata(),
|
||||
});
|
||||
|
||||
export type Metadata = { organizationId: string };
|
||||
|
||||
export function translateSubscriptionStatus(
|
||||
status: PaddleSdkSubscriptionCreatedEvent<unknown>["status"],
|
||||
): SubscriptionStatus {
|
||||
switch (status) {
|
||||
case PaddleSdkSubscriptionStatus.ACTIVE:
|
||||
return SubscriptionStatus.active;
|
||||
case PaddleSdkSubscriptionStatus.CANCELLED:
|
||||
return SubscriptionStatus.deleted;
|
||||
case PaddleSdkSubscriptionStatus.PAUSED:
|
||||
return SubscriptionStatus.paused;
|
||||
case PaddleSdkSubscriptionStatus.PAST_DUE:
|
||||
return SubscriptionStatus.past_due;
|
||||
case PaddleSdkSubscriptionStatus.TRIALING:
|
||||
return SubscriptionStatus.trialing;
|
||||
default:
|
||||
throw new Error("unreachable");
|
||||
}
|
||||
}
|
||||
|
||||
const client = got.extend({
|
||||
prefixUrl: "https://vendors.paddle.com/api/2.0",
|
||||
});
|
||||
@ -22,7 +54,7 @@ async function request<T>(path: string, data: any) {
|
||||
}
|
||||
|
||||
type GetPaymentsParams = {
|
||||
subscriptionId: string;
|
||||
subscriptionId: number;
|
||||
};
|
||||
|
||||
export async function getPayments({ subscriptionId }: GetPaymentsParams) {
|
||||
@ -62,8 +94,8 @@ export async function getPayments({ subscriptionId }: GetPaymentsParams) {
|
||||
}
|
||||
|
||||
type UpdateSubscriptionPlanParams = {
|
||||
subscriptionId: string;
|
||||
planId: string;
|
||||
subscriptionId: number;
|
||||
planId: number;
|
||||
prorate?: boolean;
|
||||
};
|
||||
|
||||
@ -77,7 +109,7 @@ export async function updateSubscriptionPlan({ subscriptionId, planId, prorate =
|
||||
return body;
|
||||
}
|
||||
|
||||
export async function cancelPaddleSubscription({ subscriptionId }: { subscriptionId: string }) {
|
||||
export async function cancelPaddleSubscription({ subscriptionId }: { subscriptionId: number }) {
|
||||
const { body } = await request("subscription/users_cancel", { subscription_id: subscriptionId });
|
||||
|
||||
return body;
|
||||
|
Reference in New Issue
Block a user