forked from UKSOURCE/ipv6
paypal
This commit is contained in:
@@ -16,6 +16,13 @@ function docToRow(doc: ISummitRequest): AdminRequestRow {
|
||||
status: doc.status,
|
||||
notes: doc.notes,
|
||||
source: doc.source,
|
||||
// Payment fields
|
||||
paymentStatus: doc.paymentStatus,
|
||||
paypalOrderId: doc.paypalOrderId,
|
||||
paypalCaptureId: doc.paypalCaptureId,
|
||||
paymentAmount: doc.paymentAmount,
|
||||
paymentCurrency: doc.paymentCurrency,
|
||||
paymentCompletedAt: doc.paymentCompletedAt?.toISOString(),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -52,3 +59,66 @@ export async function updateSummitRequestStatus(publicId: string, status: Submis
|
||||
throw new Error(`Request not found: ${publicId}`);
|
||||
}
|
||||
}
|
||||
|
||||
export async function createRegistrationWithPayment(
|
||||
row: AdminRequestRow,
|
||||
paypalOrderId: string
|
||||
): Promise<void> {
|
||||
await connectDB();
|
||||
await SummitRequest.create({
|
||||
publicId: row.id,
|
||||
submittedAt: row.submittedAt,
|
||||
displayDate: row.displayDate,
|
||||
fullName: row.fullName,
|
||||
jobTitle: row.jobTitle,
|
||||
company: row.company,
|
||||
segment: row.segment,
|
||||
email: row.email,
|
||||
phone: row.phone,
|
||||
status: row.status,
|
||||
notes: row.notes,
|
||||
source: row.source,
|
||||
paymentStatus: "payment_pending",
|
||||
paypalOrderId,
|
||||
paymentAmount: 120,
|
||||
paymentCurrency: "USD",
|
||||
});
|
||||
}
|
||||
|
||||
export async function markPaymentPaid(
|
||||
paypalOrderId: string,
|
||||
captureId: string
|
||||
): Promise<void> {
|
||||
await connectDB();
|
||||
const updated = await SummitRequest.findOneAndUpdate(
|
||||
{ paypalOrderId, paymentStatus: { $ne: "paid" } },
|
||||
{
|
||||
$set: {
|
||||
paymentStatus: "paid",
|
||||
paypalCaptureId: captureId,
|
||||
paymentCompletedAt: new Date(),
|
||||
},
|
||||
},
|
||||
{ new: true }
|
||||
);
|
||||
if (!updated) {
|
||||
// Either not found or already paid — both are acceptable (idempotent)
|
||||
console.log(`markPaymentPaid: no update for orderId=${paypalOrderId} (not found or already paid)`);
|
||||
}
|
||||
}
|
||||
|
||||
export async function markPaymentCancelled(paypalOrderId: string): Promise<void> {
|
||||
await connectDB();
|
||||
await SummitRequest.findOneAndUpdate(
|
||||
{ paypalOrderId },
|
||||
{ $set: { paymentStatus: "payment_cancelled" } },
|
||||
{ new: true }
|
||||
);
|
||||
}
|
||||
|
||||
export async function findByPaypalOrderId(
|
||||
paypalOrderId: string
|
||||
): Promise<ISummitRequest | null> {
|
||||
await connectDB();
|
||||
return SummitRequest.findOne({ paypalOrderId }).lean<ISummitRequest>();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user