Create a costum controller to patch api request - last strapi version

Hi everyone, I’m new to the forum, could someone explain to me how to refactor a custom controller from version 3 to 4 of strapi.

What I’m trying to do is via a ‘patch’ request from react that takes the ‘code’ of a transaction, if the payment is successful, the order created in the ui (backend) of strapi is changed from 'status “payment_required” to status “paid”
My code:

// OLD VERSION CONTROLLER STRAPI - v3
// src/api/order/controllers/order.js

// "use strict";
// const { sanitizeEntity } = require("strapi-utils");

// module.exports = {
// search by code param
//   async findOne(ctx) {
//     const { code } = ctx.params;
//     const order = await strapi.services.order.findOne({ code });
//     return sanitizeEntity(order, { model: strapi.models.order });
//   },
//   async updateOrderStatus(ctx) {
// update id order and status order from 'payment
//     const { code } = ctx.params;
//     const order = await strapi.services.order.findOne({ code });
//     await strapi.services.order.update({ id: order.id }, { status: "payed" });
//     return { success: true };
//   },
// };

// @ts-nocheck
"use strict";

const order = require("../routes/order");

/**
 * order controller
 * setting controller custom docs: https://docs.strapi.io/developer-docs/latest/development/backend-customization/controllers.html#implementation
   update: https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/entity-service/crud.html#update
*/

const { createCoreController } = require("@strapi/strapi").factories;

module.exports = createCoreController("api::order.order", ({ strapi }) => ({
// WORK FINE!
  async findOne(ctx) {
    const { code } = ctx.params;

    const query = {
      filters: { code },
      ...ctx.query,
    };

    const order = await strapi.entityService.findMany(
      "api::order.order",
      query
    );

    const sanitizedEntity = await this.sanitizeOutput(order);

    return this.transformResponse(sanitizedEntity[0]);
  },
  // DON'T WORK!!!
  async updateOrderStatusTest(ctx) {
    // update order status
    try {
      const { code } = ctx.params;

      const query = {
        filters: { code },
        ...ctx.query,
      };

      const order = await strapi.entityService.findMany(
        "api::order.order",
        query
      );

      // update order logic
      await strapi.services["order"]
        .update({ id: order.id }, { status: "payed" })
        .then(() => {
          return {
            success: true,
          };
        });
    } catch (error) {
      ctx.body = error;
    }
  },```

updateOrderStatusTest is most likely never called in a route so there is no way to access the controler from the frontent