Skip to content

Commit 9684489

Browse files
committed
Add nextPaymentDate to compose-payment
1 parent 14607a7 commit 9684489

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/billing/cloudpayments.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,18 +142,33 @@ userId: ${userId}`
142142

143143
const isCardLinkOperation = workspace.tariffPlanId.toString() === tariffPlanId && !workspace.isTariffPlanExpired();
144144

145+
// Calculate next payment date
146+
const lastChargeDate = new Date(workspace.lastChargeDate);
147+
const now = new Date();
148+
let nextPaymentDate: Date;
149+
150+
if (isCardLinkOperation) {
151+
nextPaymentDate = new Date(lastChargeDate);
152+
nextPaymentDate.setMonth(lastChargeDate.getMonth() + 1);
153+
} else {
154+
nextPaymentDate = new Date(now);
155+
nextPaymentDate.setMonth(nextPaymentDate.getMonth() + 1);
156+
}
157+
145158
let checksum;
146159

147160
try {
148161
const checksumData = isCardLinkOperation ? {
149162
isCardLinkOperation: true,
150163
workspaceId: workspace._id.toString(),
151164
userId: userId,
165+
nextPaymentDate: nextPaymentDate.toISOString(),
152166
} : {
153167
workspaceId: workspace._id.toString(),
154168
userId: userId,
155169
tariffPlanId: tariffPlan._id.toString(),
156170
shouldSaveCard: shouldSaveCard === 'true',
171+
nextPaymentDate: nextPaymentDate.toISOString(),
157172
};
158173

159174
checksum = await checksumService.generateChecksum(checksumData);
@@ -175,6 +190,7 @@ userId: ${userId}`
175190
isCardLinkOperation,
176191
currency: 'RUB',
177192
checksum,
193+
nextPaymentDate: nextPaymentDate.toISOString(),
178194
});
179195
}
180196

src/utils/checksumService.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ interface PlanPurchaseChecksumData {
2020
* If true, we will save user card
2121
*/
2222
shouldSaveCard: boolean;
23+
/**
24+
* Next payment date
25+
*/
26+
nextPaymentDate: string;
2327
}
2428

2529
interface CardLinkChecksumData {
@@ -35,6 +39,10 @@ interface CardLinkChecksumData {
3539
* True if this is card linking operation – charging minimal amount of money to validate card info
3640
*/
3741
isCardLinkOperation: boolean;
42+
/**
43+
* Next payment date
44+
*/
45+
nextPaymentDate: string;
3846
}
3947

4048
/**
@@ -67,13 +75,15 @@ class ChecksumService {
6775
workspaceId: payload.workspaceId,
6876
userId: payload.userId,
6977
isCardLinkOperation: payload.isCardLinkOperation,
78+
nextPaymentDate: payload.nextPaymentDate,
7079
};
7180
} else {
7281
return {
7382
workspaceId: payload.workspaceId,
7483
userId: payload.userId,
7584
tariffPlanId: payload.tariffPlanId,
7685
shouldSaveCard: payload.shouldSaveCard,
86+
nextPaymentDate: payload.nextPaymentDate,
7787
};
7888
}
7989
}

0 commit comments

Comments
 (0)