addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request, event.env));
});
async function handleRequest(request, env) {
const corsHeaders = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, OPTIONS', // لاحظ التعديل هنا، حذفنا GET
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
'Access-Control-Max-Age': '86400',
};
// التعامل مع طلبات "Preflight"
if (request.method === 'OPTIONS') {
return new Response(null, {
status: 204,
headers: corsHeaders,
});
}
// رفض الطلبات التي ليست من نوع POST
if (request.method !== 'POST') {
return new Response('Method Not Allowed', {
status: 405,
headers: corsHeaders
});
}
// التحقق من نوع المحتوى
const contentType = request.headers.get('Content-Type');
if (!contentType || !contentType.includes('application/json')) {
return new Response('Unsupported Media Type', {
status: 415,
headers: corsHeaders
});
}
try {
const orderDetails = await request.json();
const BOT_TOKEN = env.BOT_TOKEN;
const CHAT_ID = env.CHAT_ID;
// بناء رسالة تيليجرام
let messageText = '✅ طلب جديد من السوبر ماركت:\n\n';
messageText += `- الاسم: ${orderDetails.customer.name}\n`;
messageText += `- الهاتف: ${orderDetails.customer.phone}\n\n`;
messageText += `المنتجات:\n`;
for (const itemName in orderDetails.items) {
const item = orderDetails.items[itemName];
messageText += `• ${item.name} (الكمية: ${item.quantity}) - السعر: ${(item.price * item.quantity).toLocaleString('ar-SY')} د.ع\n`;
}
messageText += `\nالمجموع الإجمالي: ${orderDetails.total.toLocaleString('ar-SY')} د.ع`; // تعديل لتحسين الرسالة
const telegramUrl = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`;
const telegramResponse = await fetch(telegramUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Cloudflare-Worker'
},
body: JSON.stringify({
chat_id: CHAT_ID,
text: messageText,
parse_mode: 'HTML',
}),
});
if (!telegramResponse.ok) {
const errorData = await telegramResponse.text();
console.error('Telegram API Error:', errorData);
throw new Error(`Failed to send message: ${telegramResponse.status}`);
}
return new Response(JSON.stringify({
success: true,
message: 'Order sent to Telegram successfully'
}), {
status: 200,
headers: {
'Content-Type': 'application/json',
...corsHeaders
},
});
} catch (error) {
console.error('Error:', error);
return new Response(JSON.stringify({
success: false,
error: error.message
}), {
status: 500,
headers: {
'Content-Type': 'application/json',
...corsHeaders
},
});
}
}