Ты не описал эти файлы:
├── db
│   ├── Dockerfile
└── templates
│   │       ├── header.php
│   │       └── footer.php
так же я просил выше следующее: 
Не написал вот эти пункты:

product.php (страница карточки товара):
cart.php (страница корзины):
checkout.php (страница оформления заказа):
А еще в логике бота не вижу что бы он писал после оформления заказа сообщение с оплатой, сообщение что товар оплачен и сообщение менеджеру как было описано выше
Менеджеру приходит сообщение что заказ такой то такой то оплачен, но как он узнает что входит в этот заказ и кто его оплатил, судя по коду "
Заказ #{order_id} оплачен и готов к обработке."
А теперь обработай все доработки и составь полную структуру файлов со всеми кодами что ты мне написал, а так же уточни как настроить оплату и куда вставлять id чата менеджера.

Объедини то что выше с тем что писал ранее:
1. Проектная структура

Проект включает следующие компоненты:

    Телеграм-бот — обрабатывает команды, открывает WebApp, выполняет связь с пользователем.
    WebApp — интернет-магазин, размещённый в контейнере Docker, доступный через браузер.
    База данных — хранение информации о пользователях, товарах, заказах и бонусах.

2. Структура файлов

├── docker-compose.yml
├── telegram-bot
│   ├── Dockerfile
│   ├── bot.py
│   └── requirements.txt
├── webapp
│   ├── Dockerfile
│   ├── src
│   │   ├── index.php
│   │   ├── product.php
│   │   ├── cart.php
│   │   ├── checkout.php
│   │   ├── assets
│   │   │   ├── css
│   │   │   │   └── styles.css
│   │   │   ├── js
│   │   │   │   └── scripts.js
│   │   └── templates
│   │       ├── header.php
│   │       └── footer.php
├── db
│   ├── Dockerfile
│   └── init.sql

3. Docker Compose

Создайте файл docker-compose.yml, чтобы определить и запустить все необходимые сервисы:

version: '3.7'

services:
  db:
    image: mysql:8.0
    container_name: db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: shop_db
      MYSQL_USER: shop_user
      MYSQL_PASSWORD: shoppassword
    volumes:
      - db_data:/var/lib/mysql
      - ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
    networks:
      - shop-network

  webapp:
    build: ./webapp
    container_name: webapp
    ports:
      - "8080:80"
    volumes:
      - ./webapp/src:/var/www/html
    networks:
      - shop-network

  telegram-bot:
    build: ./telegram-bot
    container_name: telegram-bot
    environment:
      BOT_TOKEN: your_telegram_bot_token
      DATABASE_URL: mysql://shop_user:shoppassword@db/shop_db
    networks:
      - shop-network

networks:
  shop-network:

volumes:
  db_data:

4. База данных

Создайте инициализационный SQL скрипт (db/init.sql) для создания необходимых таблиц в базе данных:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    telegram_id BIGINT NOT NULL UNIQUE,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    phone VARCHAR(20),
    email VARCHAR(100),
    bonuses INT DEFAULT 0
);

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    category VARCHAR(50),
    description TEXT,
    price DECIMAL(10, 2),
    image_url VARCHAR(255)
);

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    status VARCHAR(20),
    total_price DECIMAL(10, 2),
    address TEXT,
    contact_phone VARCHAR(20),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

CREATE TABLE order_items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT,
    product_id INT,
    quantity INT,
    FOREIGN KEY (order_id) REFERENCES orders(id),
    FOREIGN KEY (product_id) REFERENCES products(id)
);

5. WebApp
5.1 Dockerfile для WebApp

Создайте Dockerfile для PHP и Apache:

FROM php:8.2-apache

RUN docker-php-ext-install mysqli

COPY ./src /var/www/html/

EXPOSE 80

5.2 Страницы WebApp

Создайте основные страницы для веб-приложения:
index.php (главная страница с товарами)

<?php
$conn = new mysqli("db", "shop_user", "shoppassword", "shop_db");

$categories = ["Категория 1", "Категория 2", "Категория 3"];
?>

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Магазин</title>
    <link rel="stylesheet" href="assets/css/styles.css">
</head>
<body>
    <?php include('templates/header.php'); ?>

    <div class="container">
        <div class="categories">
            <?php foreach ($categories as $category): ?>
                <div class="category"><?= $category ?></div>
            <?php endforeach; ?>
        </div>

        <div class="products">
            <?php
            $result = $conn->query("SELECT * FROM products LIMIT 21");
            while($product = $result->fetch_assoc()): ?>
                <div class="product">
                    <img src="<?= $product['image_url'] ?>" alt="<?= $product['name'] ?>">
                    <h3><?= $product['name'] ?></h3>
                    <p><?= $product['price'] ?> ₽</p>
                    <button class="add-to-cart">В корзину</button>
                </div>
            <?php endwhile; ?>
        </div>
    </div>

    <?php include('templates/footer.php'); ?>
    <script src="assets/js/scripts.js"></script>
</body>
</html>

product.php, cart.php, checkout.php

Создайте страницы карточки товара, корзины и оформления заказа по аналогии с index.php.
5.3 CSS и JS

Создайте стили и скрипты для WebApp:
styles.css

body {
    font-family: Arial, sans-serif;
}

.container {
    max-width: 1200px;
    margin: 0 auto;
}

.categories, .products {
    margin-top: 20px;
}

.product {
    display: inline-block;
    width: 200px;
    margin: 10px;
    border: 1px solid #ddd;
    padding: 10px;
    border-radius: 10px;
    text-align: center;
}

scripts.js

document.addEventListener('DOMContentLoaded', function () {
    document.querySelectorAll('.add-to-cart').forEach(function (button) {
        button.addEventListener('click', function () {
            alert('Товар добавлен в корзину');
        });
    });
});

6. Телеграм-бот
6.1 Dockerfile для Телеграм-бота

Создайте Dockerfile для Python и бота:

FROM python:3.11

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "bot.py"]

6.2 requirements.txt для Телеграм-бота

Укажите зависимости для бота:

aiogram
mysql-connector-python

6.3 bot.py (основная логика бота)

Создайте файл bot.py с основной логикой бота:

from aiogram import Bot, Dispatcher, types
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, WebAppInfo
import mysql.connector

bot = Bot(token="your_telegram_bot_token")
dp = Dispatcher(bot)

# Подключение к БД
db_conn = mysql.connector.connect(
    host="db",
    user="shop_user",
    password="shoppassword",
    database="shop_db"
)

# Приветственное сообщение
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    keyboard = InlineKeyboardMarkup()
    webapp_button = InlineKeyboardButton(text="Открыть магазин", web_app=WebAppInfo(url="http://localhost:8080"))
    feedback_button = InlineKeyboardButton(text="Обратная связь", callback_data="feedback")
    keyboard.add(webapp_button, feedback_button)

    await message.answer_photo(
        photo="https://example.com/shop_image.jpg",
        caption="Добро пожаловать в наш магазин! Здесь вы можете найти лучшие товары.",
        reply_markup=keyboard
    )

# Обработка кнопки "Обратная связь"
@dp.callback_query_handler(lambda c: c.data == 'feedback')
async def process_feedback(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id, "Спасибо за обратную связь!")

# Запуск бота
if __name__ == '__main__':
    from aiogram import executor
    executor.start_polling(dp, skip_updates=True)

7. Запуск

    Клонируйте проект на сервер.
    Настройте переменные окружения для бота.
    Запустите проект:

docker-compose up --build

Это развернет все сервисы. Бот будет работать в Telegram, а веб-приложение будет доступно по адресу http://localhost:8080.