UNPKG

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

Version:

Vodafone Cash manual payment provider for Medusa

74 lines • 5.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GET = GET; exports.POST = POST; const zod_1 = require("zod"); // Validation schema for Vodafone Cash phone number const vodafoneCashSchema = zod_1.z.object({ phone_number: zod_1.z.string() .regex(/^0100\d{7}$/, "Phone number must start with 0100 and be exactly 11 digits") .transform((phone) => phone.replace(/\s+/g, '').replace(/[^\d]/g, '')), customer_name: zod_1.z.string().optional(), amount: zod_1.z.number().positive("Amount must be positive"), currency_code: zod_1.z.string().default("EGP") }); async function GET(req, res) { res.json({ message: "Vodafone Cash Payment Provider", provider_id: "vodafone-cash", supported_currencies: ["EGP"], phone_format: "0100XXXXXXX (11 digits starting with 0100)" }); } async function POST(req, res) { try { // Validate request body const validatedData = vodafoneCashSchema.parse(req.body); const { phone_number, customer_name, amount, currency_code } = validatedData; // Format phone number for display const formattedPhone = `${phone_number.slice(0, 4)} ${phone_number.slice(4, 7)} ${phone_number.slice(7)}`; // Create payment session data const paymentSession = { id: `vodafone_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, provider_id: "vodafone-cash", amount, currency_code, phone_number: formattedPhone, customer_name, status: "pending", created_at: new Date().toISOString(), payment_instructions: { message: `Please send ${amount} ${currency_code} via Vodafone Cash`, phone_number: formattedPhone, steps: [ "Open your Vodafone Cash app or dial *9*", `Send ${amount} ${currency_code} to the merchant`, "Keep your transaction reference number", "Your order will be confirmed once payment is verified" ] } }; res.status(201).json({ success: true, data: paymentSession }); } 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: "Internal server error", message: error.message }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3BsdWdpbi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLGtCQVVDO0FBRUQsb0JBeURDO0FBakZELDZCQUF3QjtBQUV4QixtREFBbUQ7QUFDbkQsTUFBTSxrQkFBa0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xDLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1NBQ3JCLEtBQUssQ0FBQyxhQUFhLEVBQUUsNERBQTRELENBQUM7U0FDbEYsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLGFBQWEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3BDLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO0lBQ3RELGFBQWEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUN6QyxDQUFDLENBQUM7QUFFSSxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsT0FBTyxFQUFFLGdDQUFnQztRQUN6QyxXQUFXLEVBQUUsZUFBZTtRQUM1QixvQkFBb0IsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUM3QixZQUFZLEVBQUUsNENBQTRDO0tBQzNELENBQUMsQ0FBQztBQUNMLENBQUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCx3QkFBd0I7UUFDeEIsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RCxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsYUFBYSxDQUFDO1FBRTdFLGtDQUFrQztRQUNsQyxNQUFNLGNBQWMsR0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUxRyw4QkFBOEI7UUFDOUIsTUFBTSxjQUFjLEdBQUc7WUFDckIsRUFBRSxFQUFFLFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN2RSxXQUFXLEVBQUUsZUFBZTtZQUM1QixNQUFNO1lBQ04sYUFBYTtZQUNiLFlBQVksRUFBRSxjQUFjO1lBQzVCLGFBQWE7WUFDYixNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDcEMsb0JBQW9CLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxlQUFlLE1BQU0sSUFBSSxhQUFhLG9CQUFvQjtnQkFDbkUsWUFBWSxFQUFFLGNBQWM7Z0JBQzVCLEtBQUssRUFBRTtvQkFDTCx5Q0FBeUM7b0JBQ3pDLFFBQVEsTUFBTSxJQUFJLGFBQWEsa0JBQWtCO29CQUNqRCx3Q0FBd0M7b0JBQ3hDLHVEQUF1RDtpQkFDeEQ7YUFDRjtTQUNGLENBQUM7UUFFRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsSUFBSTtZQUNiLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksT0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7b0JBQ3pCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztpQkFDckIsQ0FBQyxDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMifQ==