From d4885e89fb827af1b72101822fd57c0e0576570a Mon Sep 17 00:00:00 2001 From: Dedye Date: Fri, 2 Sep 2022 17:28:40 +0700 Subject: [PATCH] regex filter line_items and address --- woo-doku-jokul/JokulMainPg.php | 2 +- woo-doku-jokul/Module/JokulCheckoutModule.php | 14 ++-- .../Module/JokulCreditCardModule.php | 68 ++++++++++++++++--- .../Service/JokulAlfaO2OService.php | 4 +- woo-doku-jokul/Service/JokulBcaVaService.php | 4 +- woo-doku-jokul/Service/JokulBriVaService.php | 4 +- woo-doku-jokul/Service/JokulBsmVaService.php | 4 +- .../Service/JokulCheckoutService.php | 4 +- .../Service/JokulCreditCardService.php | 4 +- woo-doku-jokul/Service/JokulDokuVaService.php | 4 +- .../Service/JokulMandiriVaService.php | 4 +- .../Service/JokulPermataVaService.php | 4 +- 12 files changed, 85 insertions(+), 35 deletions(-) diff --git a/woo-doku-jokul/JokulMainPg.php b/woo-doku-jokul/JokulMainPg.php index 5bd68a5..b6043f4 100644 --- a/woo-doku-jokul/JokulMainPg.php +++ b/woo-doku-jokul/JokulMainPg.php @@ -3,7 +3,7 @@ * Plugin Name: Jokul - WooCommerce * Plugin URI: http://www.doku.com * Description: Accept payment through various payment channels with Jokul. Make it easy for your customers to purchase on your store. - * Version: 1.3.7 + * Version: 1.3.8 * Author: DOKU * Author URI: http://www.doku.com * WC requires at least: 2.2 diff --git a/woo-doku-jokul/Module/JokulCheckoutModule.php b/woo-doku-jokul/Module/JokulCheckoutModule.php index 81f1111..b8db3d2 100644 --- a/woo-doku-jokul/Module/JokulCheckoutModule.php +++ b/woo-doku-jokul/Module/JokulCheckoutModule.php @@ -63,6 +63,7 @@ public function __construct() public function get_order_data($order) { + $pattern = "/[^A-Za-z0-9? .,_-]/"; $order_post = get_post($order->id); $dp = wc_get_price_decimals(); $order_data = array(); @@ -83,32 +84,32 @@ public function get_order_data($order) foreach ($meta->get_formatted(null) as $meta_key => $formatted_meta) { $item_meta[] = array('key' => $meta_key, 'label' => $formatted_meta['label'], 'value' => $formatted_meta['value']); } - $order_data[] = array('price' => wc_format_decimal($order->get_item_total($item, false, false), $dp), 'quantity' => wc_stock_amount($item['qty']), 'name' => str_replace(array( '(', ')', ','), '', $item['name']), 'sku' => $product_sku, 'category' => $categories_string); + $order_data[] = array('price' => wc_format_decimal($order->get_item_total($item, false, false), $dp), 'quantity' => wc_stock_amount($item['qty']), 'name' => preg_replace($pattern, "", $item['name']), 'sku' => $product_sku, 'category' => $categories_string); } // Add shipping. foreach ($order->get_shipping_methods() as $shipping_item_id => $shipping_item) { if (wc_format_decimal($shipping_item['cost'], $dp) > 0) { - $order_data[] = array('name' => str_replace(array( '(', ')' ), '', $shipping_item['name']), 'price' => wc_format_decimal($shipping_item['cost'], $dp), 'quantity' => '1', 'sku' => 'ship-01', 'category' => 'uncategorized'); + $order_data[] = array('name' => preg_replace($pattern, "", $shipping_item['name']), 'price' => wc_format_decimal($shipping_item['cost'], $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); } } // Add taxes. foreach ($order->get_tax_totals() as $tax_code => $tax) { if (wc_format_decimal($tax->amount, $dp) > 0) { - $order_data[] = array('name' => $tax->label, 'price' => wc_format_decimal($tax->amount, $dp), 'quantity' => '1', 'sku' => 'tax-01', 'category' => 'uncategorized'); + $order_data[] = array('name' => preg_replace($pattern, "", $tax->label), 'price' => wc_format_decimal($tax->amount, $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); } } // Add fees. foreach ($order->get_fees() as $fee_item_id => $fee_item) { if (wc_format_decimal($order->get_line_total($fee_item), $dp) > 0) { - $order_data[] = array('name' => $fee_item['name'], 'price' => wc_format_decimal($order->get_line_total($fee_item), $dp), 'quantity' => '1', 'sku' => 'fee-01', 'category' => 'uncategorized'); + $order_data[] = array('name' => preg_replace($pattern, "", $fee_item['name']), 'price' => wc_format_decimal($order->get_line_total($fee_item), $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); } } // Add coupons. foreach ($order->get_items('coupon') as $coupon_item_id => $coupon_item) { if (wc_format_decimal($coupon_item['discount_amount'], $dp) > 0) { - $order_data[] = array('name' => $coupon_item['name'], 'price' => wc_format_decimal($coupon_item['discount_amount'], $dp), 'quantity' => '1', 'sku' => 'coupon-01', 'category' => 'uncategorized'); + $order_data[] = array('name' => preg_replace($pattern, "", $coupon_item['name']), 'price' => wc_format_decimal($coupon_item['discount_amount'], $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); } } $order_data = apply_filters('woocommerce_cli_order_data', $order_data); @@ -118,6 +119,7 @@ public function get_order_data($order) public function process_payment($order_id) { global $woocommerce; + $pattern = "/[^A-Za-z0-9? .-\/+,=_:@]/"; $order = wc_get_order($order_id); $amount = $order->order_total; @@ -132,7 +134,7 @@ public function process_payment($order_id) 'expiryTime' => $this->expiredTime, 'phone' => preg_replace('/[^0-9]/', '', $order->billing_phone), 'country' => $order->billing_country, - 'address' => $order->shipping_address_1, + 'address' => preg_replace($pattern, "", $order->shipping_address_1), 'itemQty' => $this->get_order_data($order), 'payment_method' => $this->payment_method, 'postcode' => $order_data['billing']['postcode'], diff --git a/woo-doku-jokul/Module/JokulCreditCardModule.php b/woo-doku-jokul/Module/JokulCreditCardModule.php index ac150df..6d9d4c8 100644 --- a/woo-doku-jokul/Module/JokulCreditCardModule.php +++ b/woo-doku-jokul/Module/JokulCreditCardModule.php @@ -80,20 +80,68 @@ function my_disruptive_filter($content) { return $url; } + public function get_order_data($order) + { + $pattern = "/[^A-Za-z0-9? .,_-]/"; + $order_post = get_post($order->id); + $dp = wc_get_price_decimals(); + $order_data = array(); + // add line items + foreach ($order->get_items() as $item_id => $item) { + $product = $order->get_product_from_item($item); + $term_names = wp_get_post_terms( $item->get_product_id(), 'product_cat', array('fields' => 'names') ); + $categories_string = implode(',', $term_names); + $product_id = null; + $product_sku = null; + // Check if the product exists. + if (is_object($product)) { + $product_id = isset($product->variation_id) ? $product->variation_id : $product->id; + $product_sku = $product->get_sku(); + } + $meta = new WC_Order_Item_Meta($item, $product); + $item_meta = array(); + foreach ($meta->get_formatted(null) as $meta_key => $formatted_meta) { + $item_meta[] = array('key' => $meta_key, 'label' => $formatted_meta['label'], 'value' => $formatted_meta['value']); + } + $order_data[] = array('price' => wc_format_decimal($order->get_item_total($item, false, false), $dp), 'quantity' => wc_stock_amount($item['qty']), 'name' => preg_replace($pattern, "", $item['name']), 'sku' => $product_sku, 'category' => $categories_string); + + + } + // Add shipping. + foreach ($order->get_shipping_methods() as $shipping_item_id => $shipping_item) { + if (wc_format_decimal($shipping_item['cost'], $dp) > 0) { + $order_data[] = array('name' => preg_replace($pattern, "", $shipping_item['name']), 'price' => wc_format_decimal($shipping_item['cost'], $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); + } + } + // Add taxes. + foreach ($order->get_tax_totals() as $tax_code => $tax) { + if (wc_format_decimal($tax->amount, $dp) > 0) { + $order_data[] = array('name' => preg_replace($pattern, "", $tax->label), 'price' => wc_format_decimal($tax->amount, $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); + } + } + // Add fees. + foreach ($order->get_fees() as $fee_item_id => $fee_item) { + if (wc_format_decimal($order->get_line_total($fee_item), $dp) > 0) { + $order_data[] = array('name' => preg_replace($pattern, "", $fee_item['name']), 'price' => wc_format_decimal($order->get_line_total($fee_item), $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); + } + } + // Add coupons. + foreach ($order->get_items('coupon') as $coupon_item_id => $coupon_item) { + if (wc_format_decimal($coupon_item['discount_amount'], $dp) > 0) { + $order_data[] = array('name' => preg_replace($pattern, "", $coupon_item['name']), 'price' => wc_format_decimal($coupon_item['discount_amount'], $dp), 'quantity' => '1', 'sku' => '0', 'category' => 'uncategorized'); + } + } + $order_data = apply_filters('woocommerce_cli_order_data', $order_data); + return $order_data; + } + public function process_payment($order_id) { global $woocommerce; + $pattern = "/[^A-Za-z0-9? .-\/+,=_:@]/"; $order = wc_get_order($order_id); $amount = $order->order_total; - $itemQty = array(); - - foreach ($order->get_items() as $item_id => $item ) { - $_product = wc_get_product($item->get_product_id()); - $Price = $_product->get_price(); - - $itemQty[] = array('name' => $item->get_name(), 'price' => $Price, 'quantity' => $item->get_quantity()); - } $params = array( 'customerId' => 0 !== $order->get_customer_id() ? $order->get_customer_id() : null, @@ -104,8 +152,8 @@ public function process_payment($order_id) 'expiryTime' => $this->expiredTime, 'phone' => $order->billing_phone, 'country' => $order->billing_country, - 'address' => $order->shipping_address_1, - 'itemQty' => $itemQty, + 'address' => preg_replace($pattern, "", $order->shipping_address_1), + 'itemQty' => $this->get_order_data($order), 'language' => $this->language, 'backgroundColor' => $this->backgroundColor, 'fontColor' => $this->fontColor, diff --git a/woo-doku-jokul/Service/JokulAlfaO2OService.php b/woo-doku-jokul/Service/JokulAlfaO2OService.php index 218dec0..d636b00 100644 --- a/woo-doku-jokul/Service/JokulAlfaO2OService.php +++ b/woo-doku-jokul/Service/JokulAlfaO2OService.php @@ -34,7 +34,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -66,7 +66,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct" diff --git a/woo-doku-jokul/Service/JokulBcaVaService.php b/woo-doku-jokul/Service/JokulBcaVaService.php index 567b7f6..99dbe18 100644 --- a/woo-doku-jokul/Service/JokulBcaVaService.php +++ b/woo-doku-jokul/Service/JokulBcaVaService.php @@ -28,7 +28,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -55,7 +55,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct" diff --git a/woo-doku-jokul/Service/JokulBriVaService.php b/woo-doku-jokul/Service/JokulBriVaService.php index f175ae5..78fbbf3 100644 --- a/woo-doku-jokul/Service/JokulBriVaService.php +++ b/woo-doku-jokul/Service/JokulBriVaService.php @@ -28,7 +28,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -55,7 +55,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct" diff --git a/woo-doku-jokul/Service/JokulBsmVaService.php b/woo-doku-jokul/Service/JokulBsmVaService.php index 4bc3b5e..d6aea9f 100644 --- a/woo-doku-jokul/Service/JokulBsmVaService.php +++ b/woo-doku-jokul/Service/JokulBsmVaService.php @@ -28,7 +28,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -55,7 +55,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct" diff --git a/woo-doku-jokul/Service/JokulCheckoutService.php b/woo-doku-jokul/Service/JokulCheckoutService.php index 94e6707..9c027ec 100644 --- a/woo-doku-jokul/Service/JokulCheckoutService.php +++ b/woo-doku-jokul/Service/JokulCheckoutService.php @@ -41,7 +41,7 @@ public function generated($config, $params) "additional_info" => array ( "integration" => array ( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -74,7 +74,7 @@ public function generated($config, $params) "additional_info" => array ( "integration" => array ( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Checkout" diff --git a/woo-doku-jokul/Service/JokulCreditCardService.php b/woo-doku-jokul/Service/JokulCreditCardService.php index 0424346..2c7eed2 100644 --- a/woo-doku-jokul/Service/JokulCreditCardService.php +++ b/woo-doku-jokul/Service/JokulCreditCardService.php @@ -44,7 +44,7 @@ public function generated($config, $params) "additional_info" => array ( "integration" => array ( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -80,7 +80,7 @@ public function generated($config, $params) "additional_info" => array ( "integration" => array ( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct" diff --git a/woo-doku-jokul/Service/JokulDokuVaService.php b/woo-doku-jokul/Service/JokulDokuVaService.php index dc2b9a6..a5c9cfb 100644 --- a/woo-doku-jokul/Service/JokulDokuVaService.php +++ b/woo-doku-jokul/Service/JokulDokuVaService.php @@ -28,7 +28,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -55,7 +55,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct" diff --git a/woo-doku-jokul/Service/JokulMandiriVaService.php b/woo-doku-jokul/Service/JokulMandiriVaService.php index accdcbb..1033b5c 100644 --- a/woo-doku-jokul/Service/JokulMandiriVaService.php +++ b/woo-doku-jokul/Service/JokulMandiriVaService.php @@ -27,7 +27,7 @@ public function generated($config, $params) "additional_info" => array ( "integration" => array ( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -54,7 +54,7 @@ public function generated($config, $params) "additional_info" => array ( "integration" => array ( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct" diff --git a/woo-doku-jokul/Service/JokulPermataVaService.php b/woo-doku-jokul/Service/JokulPermataVaService.php index 98829b5..a5f3fc7 100644 --- a/woo-doku-jokul/Service/JokulPermataVaService.php +++ b/woo-doku-jokul/Service/JokulPermataVaService.php @@ -24,7 +24,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "account" => array( @@ -48,7 +48,7 @@ public function generated($config, $params) "additional_info" => array( "integration" => array( "name" => "woocommerce-plugin", - "version" => "1.3.7", + "version" => "1.3.8", "cms_version" => $params['woo_version'] ), "method" => "Jokul Direct"