feat: implement plan upgrade logic with prorated pricing and MercadoPago integration
This commit is contained in:
@@ -25,6 +25,17 @@ export type CreatePlanSuscriptionParams = {
|
||||
pendingPaymentInitPoint?: string;
|
||||
pendingPaymentPreferenceId?: string;
|
||||
pendingPaymentBillingMonths?: number;
|
||||
pendingPaymentType?: "extension" | "upgrade";
|
||||
pendingPaymentPlanId?: string;
|
||||
pendingPaymentCurrentPlanPrice?: number;
|
||||
pendingPaymentRequestedPlanPrice?: number;
|
||||
pendingPaymentProratedAmount?: number;
|
||||
pendingPaymentRemainingDays?: number;
|
||||
pendingPaymentPeriodEndDate?: Date;
|
||||
lastPaymentStatus?: LastPlanPaymentStatus;
|
||||
lastPaymentPreferenceId?: string;
|
||||
lastPaymentAt?: Date;
|
||||
lastPaymentType?: LastPlanPaymentType;
|
||||
};
|
||||
|
||||
export type CancellPlanSuscriptionParams = {
|
||||
@@ -75,6 +86,22 @@ export type GetSubscriptionInitPointParams = {
|
||||
sessionUser: string;
|
||||
};
|
||||
|
||||
export type VerifyPendingPlanPaymentParams = {
|
||||
sessionUser: string;
|
||||
};
|
||||
|
||||
export type VerifyPendingPlanPaymentResponse = {
|
||||
status: "approved" | "pending" | "not_found" | "rejected" | "failed" | "cancelled";
|
||||
approved: boolean;
|
||||
message: string;
|
||||
subscriptionId?: string;
|
||||
paymentId?: string;
|
||||
paymentType?: "new" | "extension" | "upgrade";
|
||||
};
|
||||
|
||||
export type LastPlanPaymentStatus = "rejected" | "failed" | "cancelled";
|
||||
export type LastPlanPaymentType = "new" | "extension" | "upgrade";
|
||||
|
||||
export interface GetSuscriptionInitPointResponse {
|
||||
init_point: string;
|
||||
}
|
||||
@@ -99,6 +126,17 @@ export interface IPlanSuscription {
|
||||
pendingPaymentInitPoint?: string; // URL de pago pendiente para extender el plan actual.
|
||||
pendingPaymentPreferenceId?: string; // ID de preferencia pendiente para extender el plan actual.
|
||||
pendingPaymentBillingMonths?: number; // Meses pendientes de acreditar al aprobarse la extensión.
|
||||
pendingPaymentType?: "extension" | "upgrade";
|
||||
pendingPaymentPlanId?: string;
|
||||
pendingPaymentCurrentPlanPrice?: number;
|
||||
pendingPaymentRequestedPlanPrice?: number;
|
||||
pendingPaymentProratedAmount?: number;
|
||||
pendingPaymentRemainingDays?: number;
|
||||
pendingPaymentPeriodEndDate?: Date;
|
||||
lastPaymentStatus?: LastPlanPaymentStatus;
|
||||
lastPaymentPreferenceId?: string;
|
||||
lastPaymentAt?: Date;
|
||||
lastPaymentType?: LastPlanPaymentType;
|
||||
}
|
||||
|
||||
export interface ISubscriptionInfo {
|
||||
@@ -110,6 +148,13 @@ export interface ISubscriptionInfo {
|
||||
autoRenew: boolean;
|
||||
mpStatus: string;
|
||||
mpDateCreated: Date;
|
||||
pendingPaymentInitPoint?: string;
|
||||
pendingPaymentPreferenceId?: string;
|
||||
pendingPaymentType?: "extension" | "upgrade";
|
||||
lastPaymentStatus?: LastPlanPaymentStatus;
|
||||
lastPaymentPreferenceId?: string;
|
||||
lastPaymentAt?: Date;
|
||||
lastPaymentType?: LastPlanPaymentType;
|
||||
}
|
||||
|
||||
export interface IPlanSuscriptionsAdapter {
|
||||
|
||||
Reference in New Issue
Block a user