Skip to content

Commit 8c26496

Browse files
author
Rajat Saxena
committed
WIP: Razorpay refactoring
1 parent 616637c commit 8c26496

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

apps/web/payments-new/payment.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import { MembershipEntityType, PaymentPlan } from "@courselit/common-models";
22

33
export interface InitiateProps {
4-
metadata: Record<string, unknown>;
4+
metadata: Metadata;
55
paymentPlan: PaymentPlan;
66
product: {
77
id: string;
88
title: string;
99
type: MembershipEntityType;
1010
};
1111
origin: string;
12-
email: string;
12+
}
13+
14+
interface Metadata {
15+
membershipId: string;
16+
invoiceId: string;
1317
}
1418

1519
export default interface Payment {

apps/web/payments-new/razorpay-payment.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { SiteInfo, UIConstants } from "@courselit/common-models";
22
import Payment, { InitiateProps } from "./payment";
33
import { responses } from "@config/strings";
44
import Razorpay from "razorpay";
5+
import { getUnitAmount } from "./helpers";
56

67
const {
78
payment_invalid_settings: paymentInvalidSettings,
@@ -35,8 +36,12 @@ export default class RazorpayPayment implements Payment {
3536
return this;
3637
}
3738

38-
async initiate({ course, purchaseId }: InitiateProps) {
39-
const order = await this.generateOrder({ course, purchaseId });
39+
async initiate({ product, paymentPlan, metadata }: InitiateProps) {
40+
const order = await this.generateOrder({
41+
product,
42+
paymentPlan,
43+
metadata,
44+
});
4045
return order.id;
4146
}
4247

@@ -57,16 +62,20 @@ export default class RazorpayPayment implements Payment {
5762
}
5863

5964
private generateOrder({
60-
course,
61-
purchaseId,
62-
}: Pick<InitiateProps, "course" | "purchaseId">): Promise<{ id: string }> {
65+
metadata,
66+
product,
67+
paymentPlan,
68+
}: Pick<InitiateProps, "product" | "paymentPlan" | "metadata">): Promise<{
69+
id: string;
70+
}> {
6371
return new Promise((resolve, reject) => {
72+
const unit_amount = getUnitAmount(paymentPlan) * 100;
6473
this.razorpay.orders.create(
6574
{
66-
amount: course.cost * 100,
75+
amount: unit_amount,
6776
currency: this.siteinfo.currencyISOCode?.toUpperCase(),
6877
notes: {
69-
purchaseId,
78+
...metadata,
7079
},
7180
},
7281
(err, order) => {

0 commit comments

Comments
 (0)