From 715e26a9eb219808d5c899d418e1d596f9318f61 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 22 Jun 2026 16:59:19 +0000
Subject: [PATCH] =Debugging and implementing the Checkout.js logic. Will be uploading to test integration with square next.
---
inc/integrations/Square.php | 83 +++++++++++++++++++++--------------------
1 files changed, 43 insertions(+), 40 deletions(-)
diff --git a/inc/integrations/Square.php b/inc/integrations/Square.php
index a6346f1..9094778 100644
--- a/inc/integrations/Square.php
+++ b/inc/integrations/Square.php
@@ -54,7 +54,7 @@
*/
protected bool $isOAuthService = true;
- protected string $orderPostType = '_sq_order';
+ protected string $orderPostType = '_square_order';
protected array $newOrder = [];
protected array $oauth = [
'authorize' => '',
@@ -326,7 +326,7 @@
public function registerSquarePostTypes():void
{
- $orders = Registrar::forPost('_sq_orders', 'Square Order', 'Square Orders');
+ $orders = Registrar::forPost($this->orderPostType, 'Square Order', 'Square Orders');
$orders->make([
'public' => true
]);
@@ -769,7 +769,7 @@
'name' => $variation['name'],
'pricing_type' => 'FIXED_PRICING',
'price_money' => [
- 'amount' => intval($variation['price'] * 100), // Convert to cents
+ 'amount' => intval($variation['_square_price'] * 100), // Convert to cents
'currency' => 'USD'
]
]
@@ -784,7 +784,7 @@
'name' => 'Regular',
'pricing_type' => 'FIXED_PRICING',
'price_money' => [
- 'amount' => intval(($itemData['price'] ?? 0) * 100),
+ 'amount' => intval(($itemData['_square_price'] ?? 0) * 100),
'currency' => 'USD'
]
]
@@ -842,11 +842,10 @@
}
add_action('wp_login', [$this, 'trackUserLogin'], 10, 2);
- add_action('wp_enqueue_scripts', [$this, 'enqueueScripts']);
+ add_action('wp_enqueue_scripts', [$this, 'enqueueScripts']);
add_filter('jvbAdditionalActions', [Checkout::class, 'render']);
-
add_filter('jvb_checkout_description', function (string $desc, string $provider) {
if ($provider === 'square') {
return 'Securely checkout with your name, email, and payments processed by Square.';
@@ -864,9 +863,8 @@
add_filter('jvb_checkout_browse_text', function () {
return 'browse our menu';
});
-
// Register queue executor types
- $this->registerQueueTypes();
+ add_action('init', [$this, 'registerQueueTypes'], 10);
}
/**
@@ -895,7 +893,7 @@
]);
}
- protected function registerQueueTypes(): void
+ public function registerQueueTypes(): void
{
$queue = JVB()->queue();
$executor = new IntegrationExecutor();
@@ -1274,7 +1272,7 @@
if (!empty($product_variations) && is_array($product_variations)) {
foreach ($product_variations as $index => $variation_data) {
// Skip empty variations
- if (empty($variation_data['name']) && empty($variation_data['sku'])) {
+ if (empty($variation_data['name']) && empty($variation_data['_square_sku'])) {
continue;
}
@@ -1306,7 +1304,7 @@
break;
case 'sku':
- $variation['item_variation_data']['sku'] = $variation_data[$wp_field];
+ $variation['item_variation_data']['_square_sku'] = $variation_data[$wp_field];
break;
case 'track_inventory':
@@ -1367,15 +1365,15 @@
$defaults = [
'name' => 'name',
- 'id' => '_square_catalog_id',
- 'sku' => 'sku',
- 'price' => 'price',
- 'track_inventory' => 'track_inventory',
- 'service_duration' => 'service_duration',
- 'available_for_booking' => 'available_for_booking',
- 'gift_card_type' => 'gift_card_type',
- 'ingredients' => 'ingredients',
- 'preparation_time_duration' => 'preparation_time_duration'
+ 'id' => '_square_item_id',
+ 'sku' => '_square_sku',
+ 'price' => '_square_price',
+ 'track_inventory' => '_square_track_inventory',
+ 'service_duration' => '_square_service_duration',
+ 'available_for_booking' => '_square_available_for_booking',
+ 'gift_card_type' => '_square_gift_card_type',
+ 'ingredients' => '_square_ingredients',
+ 'preparation_time_duration' => '_square_preparation_time_duration'
];
$extended = apply_filters(
@@ -1444,15 +1442,15 @@
'description_html' => 'post_content',
'abbreviation' => 'abbreviation',
'id' => '_square_catalog_id',
- 'sku' => 'sku',
+ 'sku' => '_square_sku',
'category_id' => 'category',
'image_ids' => 'post_thumbnail',
- 'price' => 'price',
+ 'price' => '_square_price',
'tax_ids' => 'tax_ids',
// Availability
- 'available_online' => 'available_online',
- 'available_for_pickup' => 'available_for_pickup',
- 'available_electronically' => 'available_electronically',
+ 'available_online' => '_square_available_online',
+ 'available_for_pickup' => '_square_available_for_pickup',
+ 'available_electronically' => '_square_available_electronically',
// Modifiers
'modifier_list_info' => 'modifiers',
// Item options
@@ -1977,7 +1975,7 @@
wp_enqueue_script('jvb-square-checkout');
wp_localize_script('jvb-square-checkout', 'squareConfig', [
-//TODO 'isOpen' => jvbIsOpen(),
+ 'isOpen' => jvbIsOpen()?'1':'0',
'application_id' => $this->credentials['client_id'] ?? '',
'location_id' => $this->locationId,
'environment' => $this->environment,
@@ -2290,7 +2288,7 @@
foreach ($item['item_data']['variations'] as $index => $variation) {
$var_data = [
'name' => $variation['item_variation_data']['name'] ?? '',
- 'sku' => $variation['item_variation_data']['sku'] ?? '',
+ 'sku' => $variation['item_variation_data']['_square_sku'] ?? '',
];
// Extract price
@@ -2734,7 +2732,7 @@
if ($content_type && array_key_exists($content_type, $this->contentTypes)){
$array = $this->contentTypes[$content_type];
return array_combine(
- array_map(fn($k) => 'sq_' . $k, array_keys($array)),
+ array_map(fn($k) => '_square_' . $k, array_keys($array)),
$array
);
} else if ($content_type && !array_key_exists($content_type, $this->contentTypes)) {
@@ -2742,12 +2740,10 @@
return [];
}
$array = $this->setBaseFields();
- $return = array_combine(
- array_map(fn($k) => 'sq_' . $k, array_keys($array)),
- $array
- );
-
- return $return;
+ return array_combine(
+ array_map(fn($k) => '_square_' . $k, array_keys($array)),
+ $array
+ );
}
protected function setBaseFields():array
{
@@ -2798,6 +2794,11 @@
'label' => 'Variation Name',
'description' => 'e.g., "Small", "Large", "Red", etc.'
],
+ 'sku' => [
+ 'type' => 'text',
+ 'label' => 'SKU',
+ 'description' => 'Stock keeping unit'
+ ],
'price' => [
'type' => 'number',
'label' => 'Price',
@@ -2805,18 +2806,17 @@
'max' => 99999,
'description' => 'Price for this variation'
],
-
'track_inventory' => [
'type' => 'true_false',
'label' => 'Track Inventory',
],
- '_square_item_id' => [
+ 'item_id' => [
'type' => 'text',
'label' => 'Square Variation ID',
'description' => 'Square catalog ID for this variation',
'hidden' => true
],
- '_square_last_sync' => [
+ 'last_sync' => [
'type' => 'datetime',
'label' => 'Last Sync',
'hidden' => true
@@ -2857,7 +2857,10 @@
];
break;
}
- return $fields;
+ return array_combine(
+ array_map(fn($k) => '_square_' . $k, array_keys($fields)),
+ $fields
+ );
}
protected function setFoodAndBevFields():array
{
@@ -3341,7 +3344,7 @@
// Ad-hoc line item (not recommended - no tax/inventory automation)
$line_item['name'] = $item['name'];
$line_item['base_price_money'] = [
- 'amount' => (int)$item['price'],
+ 'amount' => (int)$item['_square_price'],
'currency' => $this->getCurrency()
];
}
@@ -3433,7 +3436,7 @@
// Create order post
$order_post_id = wp_insert_post([
- 'post_type' => BASE . '_sq_orders',
+ 'post_type' => BASE . '_square_orders',
'post_title' => 'Order #' . $order_data['square_order_id'],
'post_status' => 'publish',
'post_author' => $user_id // Associate with user if logged in
--
Gitblit v1.10.0