From 58903d1ea3fb276aae78a01f80d1bc92fff33294 Mon Sep 17 00:00:00 2001 From: Tyler Diaz Date: Mon, 30 Oct 2023 11:56:03 -0400 Subject: [PATCH 1/3] HPOS db support for WooCommerce 8.2.1, min now 3.5 --- lib/admin/class-wc-datacap-admin-handler.php | 15 ++++++++------- lib/class-wc-datacap-gateway.php | 8 ++++++-- woocommerce-gateway-datacap.php | 12 +++++++++--- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/admin/class-wc-datacap-admin-handler.php b/lib/admin/class-wc-datacap-admin-handler.php index c657e93..4bf75d1 100644 --- a/lib/admin/class-wc-datacap-admin-handler.php +++ b/lib/admin/class-wc-datacap-admin-handler.php @@ -48,7 +48,7 @@ public function add_capture_charge_order_action($actions) $payment_method = $order->get_payment_method(); // bail if the order wasn't paid for with this gateway - if ($payment_method !== WC_DATACAP_PAYMENT_METHOD_ID || get_post_meta($order->get_id(), WC_Datacap_Gateway::META_IS_CAPTURED, true)) { + if ($payment_method !== WC_DATACAP_PAYMENT_METHOD_ID || $order->get_meta(WC_Datacap_Gateway::META_IS_CAPTURED, true)) { return $actions; } @@ -71,7 +71,7 @@ public function maybe_capture_charge($order) $order = wc_get_order($order); } - if (get_post_meta($order->get_id(), WC_Datacap_Gateway::META_IS_CAPTURED, true)) { + if ($order->get_meta(WC_Datacap_Gateway::META_IS_CAPTURED, true)) { return true; } @@ -94,9 +94,9 @@ public function capture_payment($order_id) return; } - $is_captured = get_post_meta($order_id, WC_Datacap_Gateway::META_IS_CAPTURED, true); - $card_token = get_post_meta($order_id, WC_Datacap_Gateway::META_DATACAP_CARD_TOKEN, true); - $po_number = get_post_meta($order_id, WC_Datacap_Gateway::META_DATACAP_PO_NUMBER, true); + $is_captured = $order->get_meta(WC_Datacap_Gateway::META_IS_CAPTURED, true); + $card_token = $order->get_meta(WC_Datacap_Gateway::META_DATACAP_CARD_TOKEN, true); + $po_number = $order->get_meta(WC_Datacap_Gateway::META_DATACAP_PO_NUMBER, true); if ($is_captured) { $order->add_order_note(__('This order has already been captured.', WC_DATACAP_MODULE_NAME)); @@ -127,9 +127,10 @@ public function capture_payment($order_id) return; } - update_post_meta($order_id, WC_Datacap_Gateway::META_IS_CAPTURED, '1'); - update_post_meta($order_id, WC_Datacap_Gateway::META_TRANSACTION_ID, $response->getRefNo()); + $order->update_meta_data(WC_Datacap_Gateway::META_IS_CAPTURED, 1); + $order->update_meta_data(WC_Datacap_Gateway::META_TRANSACTION_ID, $response->getRefNo()); $order->add_order_note(sprintf(__('Charge complete (RefNo: %s)', WC_DATACAP_MODULE_NAME), $response->getRefNo())); + $order->save(); } } \ No newline at end of file diff --git a/lib/class-wc-datacap-gateway.php b/lib/class-wc-datacap-gateway.php index 80af687..05615de 100644 --- a/lib/class-wc-datacap-gateway.php +++ b/lib/class-wc-datacap-gateway.php @@ -527,6 +527,7 @@ public function process_payment($order_id) $poNumber = $this->get_post_key($this->id . '_po_number') ?: ''; $order = new WC_Order($order_id); + $order->add_meta_data(self::META_IS_CAPTURED, 0); if ($this->should_auth_and_capture()) { $response = $this->execute_sale_request($order); @@ -555,6 +556,8 @@ public function process_payment($order_id) if ($this->should_auth_and_capture()) { $order->payment_complete($response->getRefNo()); + $order->update_meta_data(self::META_IS_CAPTURED, 1); + $order->add_order_note(sprintf('Charge complete (RefNo:%s)', WC_DATACAP_MODULE_NAME, $response->getRefNo())); } else { if ($order->has_status(array('pending', 'failed'))) { wc_reduce_stock_levels($order->get_id()); @@ -649,6 +652,7 @@ protected function setup_api_request_parameters($request, $order) $request->setAmount($order->get_total()); $request->setZip($order->get_billing_postcode()); + $request->setInvoiceNo(self::get_invoice_number($order)); if ($this->is_level_ii_enabled() && $this->should_auth_and_capture()) { $this->setup_level_ii_request_parameters($request, $order); @@ -727,8 +731,8 @@ public function process_refund($order_id, $amount = null, $reason = '') { $order = new WC_Order($order_id); - $transactionId = get_post_meta($order_id, self::META_TRANSACTION_ID, true); - $cardToken = get_post_meta($order_id, self::META_DATACAP_CARD_TOKEN, true); + $transactionId = $order->get_meta(self::META_TRANSACTION_ID, true); + $cardToken = $order->get_meta(self::META_DATACAP_CARD_TOKEN, true); if (!$cardToken) { return new WP_Error('datacap_refund_error', 'A refund is not possible because this order does not have a token assigned to it.'); diff --git a/woocommerce-gateway-datacap.php b/woocommerce-gateway-datacap.php index 853b803..078ff01 100644 --- a/woocommerce-gateway-datacap.php +++ b/woocommerce-gateway-datacap.php @@ -1,13 +1,13 @@ Date: Tue, 31 Oct 2023 11:46:41 -0400 Subject: [PATCH 2/3] sprintf fix --- lib/class-wc-datacap-gateway.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/class-wc-datacap-gateway.php b/lib/class-wc-datacap-gateway.php index 05615de..fb7bf00 100644 --- a/lib/class-wc-datacap-gateway.php +++ b/lib/class-wc-datacap-gateway.php @@ -557,7 +557,7 @@ public function process_payment($order_id) if ($this->should_auth_and_capture()) { $order->payment_complete($response->getRefNo()); $order->update_meta_data(self::META_IS_CAPTURED, 1); - $order->add_order_note(sprintf('Charge complete (RefNo:%s)', WC_DATACAP_MODULE_NAME, $response->getRefNo())); + $order->add_order_note(sprintf(__('Charge complete (RefNo:%s)', WC_DATACAP_MODULE_NAME, $response->getRefNo()))); } else { if ($order->has_status(array('pending', 'failed'))) { wc_reduce_stock_levels($order->get_id()); From 2d7806e686631ca38ff2d775fbc4a4a30cefe849 Mon Sep 17 00:00:00 2001 From: Tyler Diaz Date: Tue, 31 Oct 2023 11:58:56 -0400 Subject: [PATCH 3/3] space --- lib/class-wc-datacap-gateway.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/class-wc-datacap-gateway.php b/lib/class-wc-datacap-gateway.php index 852876c..94c999c 100644 --- a/lib/class-wc-datacap-gateway.php +++ b/lib/class-wc-datacap-gateway.php @@ -560,7 +560,7 @@ public function process_payment($order_id) if ($this->should_auth_and_capture()) { $order->payment_complete($response->getRefNo()); $order->update_meta_data(self::META_IS_CAPTURED, 1); - $order->add_order_note(sprintf(__('Charge complete (RefNo:%s)', WC_DATACAP_MODULE_NAME), $response->getRefNo())); + $order->add_order_note(sprintf(__('Charge complete (RefNo: %s)', WC_DATACAP_MODULE_NAME), $response->getRefNo())); $order->save(); } else { if ($order->has_status(array('pending', 'failed'))) {