Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions lib/admin/class-wc-datacap-admin-handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand All @@ -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;
}

Expand All @@ -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));
Expand Down Expand Up @@ -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();
}
}
9 changes: 5 additions & 4 deletions lib/class-wc-datacap-gateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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.');
Expand Down
12 changes: 9 additions & 3 deletions woocommerce-gateway-datacap.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<?php
/*
* Plugin Name: WooCommerce Datacap Payment Gateway
* Version: 1.2
* Version: 1.3
* Plugin URI: https://dcap.com/
* Description: Accept payments via Datacap
* Author: Datacap
* Author URI: https://dcap.com/
* WC requires at least: 3.0
* WC tested up to: 7.5.1
* WC requires at least: 3.5
* WC tested up to: 8.2.1
*
* Text Domain: woocommerce-gateway-datacap
* Domain Path: /lang/
Expand All @@ -20,6 +20,12 @@
exit;
}

add_action( 'before_woocommerce_init', function() {
if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
}
} );

if (!defined('WC_DATACAP_MODULE_NAME')) {
define('WC_DATACAP_MODULE_NAME', 'woocommerce-gateway-datacap');
}
Expand Down