Jake Vanderwerf
2026-07-12 c204185ae86a98994f80010abf35a190c9406739
inc/rest/routes/IntegrationsSquareRoutes.php
@@ -2,9 +2,10 @@
namespace JVBase\rest\routes;
use Exception;
use JVBase\integrations\services\Square;
use JVBase\meta\Meta;
use JVBase\rest\Rest;
use Exception;
use JVBase\rest\Route;
use WP_REST_Request;
use WP_REST_Response;
@@ -78,6 +79,7 @@
      }
      try {
         /** @var Square $square */
         $square = JVB()->connect('square');
         // Step 1: Get or create Square customer
         $customer_id = $square->getOrCreateSquareCustomer($data['customer']);
@@ -97,7 +99,7 @@
         // Step 3: Create Payment in Square
         $payment_response = $square->createSquarePayment(
            $data['source_id'],
            $data['idempotency_key'],
            $idempotency_key,
            $data['amount'],
            $order_id,
            $customer_id
@@ -148,12 +150,11 @@
   {
      $data = $request->get_params();
      error_log('Getting Saved Cards: '.print_r($data, true));
      $user_id = absint($data['user']??0);
      if ($user_id === 0) {
      $user_id = get_current_user_id();
      if (!$user_id) {
         return $this->success(['cards' => []]);
      }
      $square = JVB()->connect('square');
      // Get Square customer ID for this user
      $square_customer_id = get_user_meta($user_id, BASE . '_square_customer_id', true);
@@ -162,58 +163,30 @@
         return $this->success(['cards' => []]);
      }
      // Fetch cards from Square (2025-compliant - separate endpoint)
      $cards_response = $square->getRequest('cards?customer_id=' . $square_customer_id);
      if (is_wp_error($cards_response)) {
         return $this->error('Failed to fetch cards');
      }
      return $this->success(['cards' => $cards_response['cards']??[]]);
      return $this->success(['cards' => Square::getInstance()->getUserCards( $square_customer_id)]);
   }
   public function getOrderHistory(WP_REST_Request $request):WP_REST_Response
   {
      $data = $request->get_params();
      $user_id = absint($data['user']??0);
      if ($user_id === 0) {
      $user_id = get_current_user_id();
      if (!$user_id) {
         return $this->validationError(['message' => 'Not logged in']);
      }
      // Get orders from custom post type
      $orders = get_posts([
         'post_type' => BASE . '_sq_orders',
         'author' => $user_id,
         'posts_per_page' => 50,
         'orderby' => 'date',
         'order' => 'DESC'
      ]);
      $order_data = [];
      foreach ($orders as $order) {
         $meta = Meta::forPost($order->ID);
         $fields = $meta->getAll(['square_order_id', 'status', 'amount', 'items', 'created_at', 'pickup_time']);
         $order_data[] = array_merge([
            'wp_order_id' => $order->ID,
         ], $fields);
      }
      return $this->success(['orders' => $order_data]);
      return $this->success(['orders' => Square::getInstance()->getOrderHistory($user_id)]);
   }
   public function getOrderStatus(WP_REST_Request $request):WP_REST_Response
   {
      $order_id = $request->get_param('order_id');
      // Find WP post by Square order ID
      $wp_order_id = get_option(BASE . 'square_order_map_' . $order_id);
      $wp_order_id = Square::getInstance()->getOrderPost($order_id);
      if (!$wp_order_id) {
         return $this->error('Order not found');
      }
      $meta = Meta::forPost($wp_order_id);
      $fields = $meta->getAll(['status', 'fulfillment_status', 'pickup_time', 'items']);
      $fields = $meta->getAll(['square_payment_status', 'fulfillment_status', 'pickup_time', 'items']);
      return $this->success(['order' => $fields]);
   }