# ivyforms/1.5/backend/src/Routes/Square/Square.php

The Innovative Form Builder – IvyForms, version 1.5. 81 lines.

- Page: https://pluginprobe.com/plugins/ivyforms/1.5/code/backend/src/Routes/Square/Square.php
- Raw: https://pluginprobe.com/plugins/ivyforms/1.5/raw/backend/src/Routes/Square/Square.php
- Modified: 2026-10-05T14:37:20+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ivyforms/1.5/code/backend/src/Routes/Square/Square.php#L10-L20`.

```php
<?php

namespace IvyForms\Routes\Square;

use IvyForms\Controllers\Square\SquareAuthTokenController;
use IvyForms\Controllers\Square\SquareAuthUrlController;
use IvyForms\Controllers\Square\SquareDisconnectController;
use IvyForms\Controllers\Square\SquareLocationsController;
use IvyForms\Controllers\Square\SquareWebhookController;
use IvyForms\Vendor\DI\Container;
use WP_REST_Server;

/**
 * Square payment integration REST routes (OAuth pattern matches MailChimp).
 */
class Square
{
    public static function registerRoutes(Container $container, string $namespace): void
    {
        register_rest_route(
            $namespace,
            '/integration/square/connect',
            [
                'methods' => WP_REST_Server::CREATABLE,
                'callback' => $container->get(SquareAuthUrlController::class),
                'permission_callback' => static function () {
                    return current_user_can('manage_options');
                },
            ]
        );

        register_rest_route(
            $namespace,
            '/integration/square/authorization/token',
            [
                'methods' => WP_REST_Server::CREATABLE,
                'callback' => $container->get(SquareAuthTokenController::class),
                'permission_callback' => static function () {
                    return true;
                },
            ]
        );

        register_rest_route(
            $namespace,
            '/integration/square/disconnect',
            [
                'methods' => WP_REST_Server::CREATABLE,
                'callback' => $container->get(SquareDisconnectController::class),
                'permission_callback' => static function () {
                    return current_user_can('manage_options');
                },
            ]
        );

        register_rest_route(
            $namespace,
            '/integration/square/webhook',
            [
                'methods' => WP_REST_Server::CREATABLE,
                'callback' => $container->get(SquareWebhookController::class),
                'permission_callback' => static function () {
                    return true;
                },
            ]
        );

        register_rest_route(
            $namespace,
            '/integration/square/locations',
            [
                'methods' => WP_REST_Server::READABLE,
                'callback' => $container->get(SquareLocationsController::class),
                'permission_callback' => static function () {
                    return current_user_can('manage_options');
                },
            ]
        );
    }
}

```
