Ejemplo n.º 1
0
 /**
  * @param int $order_id
  * @return array
  */
 public function process_payment($order_id)
 {
     // get order object
     $order = new WC_Order($order_id);
     // update pos_cash data
     $data = WC_POS_Server::get_raw_data();
     $cashback = isset($data['payment_details']['pos-cashback']) ? wc_format_decimal($data['payment_details']['pos-cashback']) : 0;
     if ($cashback !== 0) {
         // add order meta
         update_post_meta($order_id, '_pos_card_cashback', $cashback);
         // add cashback as fee line item
         // TODO: this should be handled by $order->add_fee after WC 2.2
         $item_id = wc_add_order_item($order_id, array('order_item_name' => __('Cashback', 'woocommerce-pos'), 'order_item_type' => 'fee'));
         if ($item_id) {
             wc_add_order_item_meta($item_id, '_line_total', $cashback);
             wc_add_order_item_meta($item_id, '_line_tax', 0);
             wc_add_order_item_meta($item_id, '_line_subtotal', $cashback);
             wc_add_order_item_meta($item_id, '_line_subtotal_tax', 0);
             wc_add_order_item_meta($item_id, '_tax_class', 'zero-rate');
         }
         // update the order total to include fee
         $order_total = get_post_meta($order_id, '_order_total', true);
         $order_total += $cashback;
         update_post_meta($order_id, '_order_total', $order_total);
     }
     // payment complete
     $order->payment_complete();
     // success
     return array('result' => 'success');
 }
Ejemplo n.º 2
0
 public function process_payment($order_id)
 {
     // get order object
     $order = new WC_Order($order_id);
     // update pos_cash data
     $data = WC_POS_Server::get_raw_data();
     $tendered = isset($data['payment_details']['pos-cash-tendered']) ? wc_format_decimal($data['payment_details']['pos-cash-tendered']) : 0;
     $change = isset($data['payment_details']['pos-cash-change']) ? wc_format_decimal($data['payment_details']['pos-cash-change']) : 0;
     update_post_meta($order_id, '_pos_cash_amount_tendered', $tendered);
     update_post_meta($order_id, '_pos_cash_change', $change);
     // payment complete
     $order->payment_complete();
     // Return thankyou redirect
     return array('result' => 'success');
 }
Ejemplo n.º 3
0
 /**
  * Force update translations from AJAX
  */
 public function update_translations()
 {
     // security
     WC_POS_Server::check_ajax_referer();
     header("Content-Type: text/event-stream");
     header("Cache-Control: no-cache");
     header("Access-Control-Allow-Origin: *");
     echo ":" . str_repeat(" ", 2048) . PHP_EOL;
     // 2 kB padding for IE
     $this->manual_update();
     die;
 }
 /**
  * @return mixed|void
  */
 public function payload()
 {
     WC_POS_Server::check_ajax_referer();
     $this->params = new WC_POS_Params();
     $payload = array('templates' => $this->templates_payload(), 'params' => $this->params->payload(), 'i18n' => WC_POS_i18n::payload());
     WC_POS_Server::response($payload);
 }
 /**
  * Verifies the AJAX request
  */
 public function check_ajax_referer()
 {
     $pass = check_ajax_referer(WC_POS_PLUGIN_NAME, 'security', false);
     if (!$pass) {
         $result = new WP_Error('woocommerce_pos_invalid_nonce', __('Invalid security nonce', 'woocommerce-pos'), array('status' => 401));
         WC_POS_Server::response($result);
     }
 }
 /**
  * @return array|bool|mixed|void|WP_Error
  */
 private function process_admin_settings()
 {
     // validate
     if (!isset($_GET['id'])) {
         return new WP_Error('woocommerce_pos_settings_error', __('There is no settings id', 'woocommerce-pos'), array('status' => 400));
     }
     $id = $_GET['id'];
     $data = WC_POS_Server::get_raw_data();
     // special case: gateway_
     $gateway_id = preg_replace('/^gateway_/', '', strtolower($id), 1, $count);
     if ($count) {
         $handler = new WC_POS_Admin_Settings_Gateways($gateway_id);
         // else, find handler by id
     } else {
         $handlers = (array) self::handlers();
         if (!isset($handlers[$id])) {
             return new WP_Error('woocommerce_pos_settings_error', sprintf(__('No handler found for %s settings', 'woocommerce-pos'), $_GET['id']), array('status' => 400));
         }
         $handler = new $handlers[$id]();
     }
     // Compatibility for clients that can't use PUT/PATCH/DELETE
     $method = strtoupper($_SERVER['REQUEST_METHOD']);
     if (isset($_GET['_method'])) {
         $method = strtoupper($_GET['_method']);
     } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
         $method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
     }
     // bump IDB version
     if (isset($data['bump_idb_version']) && $data['bump_idb_version']) {
         self::bump_idb_version();
         unset($data['bump_idb_version']);
     }
     // get
     if ($method === 'GET') {
         return $handler->get();
     }
     // set
     if ($method === 'POST' || $method === 'PUT') {
         return $handler->set($data);
     }
     // delete
     if ($method === 'DELETE') {
         return $handler->delete($data);
     }
     return new WP_Error('woocommerce_pos_cannot_' . $method . '_' . $id, __('Settings error', 'woocommerce-pos'), array('status' => 405));
 }
Ejemplo n.º 7
0
 /**
  * Get all the ids for a given post_type
  * @return json
  */
 public static function get_all_ids()
 {
     $entity = isset($_REQUEST['type']) ? $_REQUEST['type'] : false;
     $updated_at_min = isset($_REQUEST['updated_at_min']) ? $_REQUEST['updated_at_min'] : false;
     $class_name = 'WC_POS_API_' . ucfirst($entity);
     $handler = new $class_name();
     if (method_exists($handler, 'get_ids')) {
         $result = call_user_func(array($handler, 'get_ids'), $updated_at_min);
     } else {
         $result = new WP_Error('woocommerce_pos_get_ids_error', sprintf(__('There was an error calling %s::%s', 'woocommerce'), 'WC_POS_API', $entity), array('status' => 500));
     }
     WC_POS_Server::response($result);
 }