UNPKG

@m-nasser-m/medusa-payment-vodafone-cash-manual

Version:

Vodafone Cash manual payment provider for Medusa

138 lines 10 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GET = GET; exports.POST = POST; exports.PATCH = PATCH; const zod_1 = require("zod"); // Validation schema for payment verification const verifyPaymentSchema = zod_1.z.object({ payment_id: zod_1.z.string().min(1, "Payment ID is required"), transaction_reference: zod_1.z.string().optional(), verified: zod_1.z.boolean(), admin_notes: zod_1.z.string().optional() }); // Validation schema for payment status update const updatePaymentStatusSchema = zod_1.z.object({ payment_id: zod_1.z.string().min(1, "Payment ID is required"), status: zod_1.z.enum(["pending", "verified", "failed", "refunded", "canceled"]), admin_notes: zod_1.z.string().optional() }); async function GET(req, res) { try { // This endpoint could be used to list pending Vodafone Cash payments const { status, limit = 50, offset = 0 } = req.query; // In a real implementation, you would query the database for payments // For now, return mock data structure const mockPayments = { payments: [ { id: "vodafone_123456789", provider_id: "vodafone-cash", amount: 1000, currency_code: "EGP", phone_number: "0100 123 4567", customer_name: "John Doe", status: "pending", created_at: new Date().toISOString(), payment_instructions: { message: "Please send 1000 EGP via Vodafone Cash", phone_number: "0100 123 4567" } } ], count: 1, offset: Number(offset), limit: Number(limit) }; res.json({ success: true, data: mockPayments }); } catch (error) { res.status(500).json({ success: false, error: "Failed to fetch payments", message: error.message }); } } // Verify a Vodafone Cash payment async function POST(req, res) { try { const validatedData = verifyPaymentSchema.parse(req.body); const { payment_id, transaction_reference, verified, admin_notes } = validatedData; // In a real implementation, you would: // 1. Update the payment status in the database // 2. Trigger order completion if verified // 3. Send notifications to customer const verificationResult = { payment_id, status: verified ? "verified" : "failed", transaction_reference, admin_notes, verified_at: new Date().toISOString(), verified_by: "admin" // In real app, get from authenticated user context }; res.json({ success: true, message: verified ? "Payment verified successfully" : "Payment marked as failed", data: verificationResult }); } catch (error) { if (error instanceof zod_1.z.ZodError) { return res.status(400).json({ success: false, error: "Validation failed", details: error.errors.map(err => ({ field: err.path.join('.'), message: err.message })) }); } res.status(500).json({ success: false, error: "Failed to verify payment", message: error.message }); } } // Update payment status async function PATCH(req, res) { try { const validatedData = updatePaymentStatusSchema.parse(req.body); const { payment_id, status, admin_notes } = validatedData; // In a real implementation, you would update the payment in the database const updatedPayment = { payment_id, status, admin_notes, updated_at: new Date().toISOString(), updated_by: "admin" // In real app, get from authenticated user context }; res.json({ success: true, message: `Payment status updated to ${status}`, data: updatedPayment }); } catch (error) { if (error instanceof zod_1.z.ZodError) { return res.status(400).json({ success: false, error: "Validation failed", details: error.errors.map(err => ({ field: err.path.join('.'), message: err.message })) }); } res.status(500).json({ success: false, error: "Failed to update payment status", message: error.message }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BsdWdpbi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSxrQkEyQ0M7QUFHRCxvQkE2Q0M7QUFHRCxzQkF3Q0M7QUF2SkQsNkJBQXdCO0FBRXhCLDZDQUE2QztBQUM3QyxNQUFNLG1CQUFtQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkMsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDO0lBQ3ZELHFCQUFxQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDNUMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUU7SUFDckIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbkMsQ0FBQyxDQUFDO0FBRUgsOENBQThDO0FBQzlDLE1BQU0seUJBQXlCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsd0JBQXdCLENBQUM7SUFDdkQsTUFBTSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekUsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDbkMsQ0FBQyxDQUFDO0FBRUksS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gscUVBQXFFO1FBQ3JFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEdB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