diff --git a/lib/admin/class-wc-datacap-admin-handler.php b/lib/admin/class-wc-datacap-admin-handler.php index 0ad2574..ba875ab 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,10 +94,10 @@ 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); - $invoice_number = get_post_meta($order_id, WC_Datacap_Gateway::META_INVOICE_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); + $invoice_number = $order->get_meta($order_id, WC_Datacap_Gateway::META_INVOICE_NUMBER, true); if ($is_captured) { $order->add_order_note(__('This order has already been captured.', WC_DATACAP_MODULE_NAME)); @@ -129,9 +129,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 4d20af3..94c999c 100644 --- a/lib/class-wc-datacap-gateway.php +++ b/lib/class-wc-datacap-gateway.php @@ -528,6 +528,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); @@ -558,7 +559,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->update_meta_data(self::META_IS_CAPTURED, 1); $order->add_order_note(sprintf(__('Charge complete (RefNo: %s)', WC_DATACAP_MODULE_NAME), $response->getRefNo())); $order->save(); } else { @@ -655,7 +656,7 @@ protected function setup_api_request_parameters($request, $order) $request->setAmount($order->get_total()); $request->setZip($order->get_billing_postcode()); - $request->setInvoiceNo($this->get_invoice_number($order)); // This worked, but not on captures + $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); @@ -734,8 +735,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 1df6079..bf744c9 100644 --- a/woocommerce-gateway-datacap.php +++ b/woocommerce-gateway-datacap.php @@ -1,13 +1,13 @@