integrate backend with paddle

This commit is contained in:
m5r
2021-09-27 06:08:02 +08:00
parent 9cec49f255
commit 0f2c3daf77
16 changed files with 679 additions and 25 deletions

41
integrations/paddle.ts Normal file
View File

@ -0,0 +1,41 @@
import { getConfig } from "blitz";
import got from "got";
const { publicRuntimeConfig, serverRuntimeConfig } = getConfig();
const vendor_id = publicRuntimeConfig.paddle.vendorId;
const vendor_auth_code = serverRuntimeConfig.paddle.apiKey;
const client = got.extend({
prefixUrl: "https://vendors.paddle.com/api/2.0",
});
async function request<T>(path: string, data: any) {
return client.post<T>(path, {
...data,
vendor_id,
vendor_auth_code,
});
}
type UpdateSubscriptionPlanParams = {
subscriptionId: string;
planId: string;
prorate?: boolean;
};
export async function updateSubscriptionPlan({ subscriptionId, planId, prorate = true }: UpdateSubscriptionPlanParams) {
const { body } = await request("/subscription/users/update", {
subscription_id: subscriptionId,
plan_id: planId,
prorate,
});
return body;
}
export async function cancelPaddleSubscription({ subscriptionId }: { subscriptionId: string }) {
const { body } = await request("/subscription/users_cancel", { subscription_id: subscriptionId });
return body;
}