Ejemplo n.º 1
0
 /**
  * Get payment gateway class by order data.
  *
  * @param int|WC_Order $order
  * @return WC_Payment_Gateway|bool
  */
 public function getWcPaymentGatewayByOrder($order)
 {
     if (function_exists('wc_get_payment_gateway_by_order')) {
         /**
          * @since WooCommerce 2.2
          */
         return wc_get_payment_gateway_by_order($order);
     }
     if (WC()->payment_gateways()) {
         $payment_gateways = WC()->payment_gateways->payment_gateways();
     } else {
         $payment_gateways = array();
     }
     if (!$order instanceof WC_Order) {
         $order = $this->getWcOrder($order);
         if (!$order) {
             return false;
         }
     }
     return isset($payment_gateways[$order->payment_method]) ? $payment_gateways[$order->payment_method] : false;
 }
Ejemplo n.º 2
0
<?php

if (!defined('ABSPATH')) {
    exit;
    // Exit if accessed directly
}
global $wpdb;
// Get the payment gateway
$payment_gateway = wc_get_payment_gateway_by_order($order);
// Get line items
$line_items = $order->get_items(apply_filters('woocommerce_admin_order_item_types', 'line_item'));
$line_items_fee = $order->get_items('fee');
$line_items_shipping = $order->get_items('shipping');
if (wc_tax_enabled()) {
    $order_taxes = $order->get_taxes();
    $tax_classes = WC_Tax::get_tax_classes();
    $classes_options = array();
    $classes_options[''] = __('Standard', 'woocommerce');
    if (!empty($tax_classes)) {
        foreach ($tax_classes as $class) {
            $classes_options[sanitize_title($class)] = $class;
        }
    }
    // Older orders won't have line taxes so we need to handle them differently :(
    $tax_data = '';
    if ($line_items) {
        $check_item = current($line_items);
        $tax_data = maybe_unserialize(isset($check_item['line_tax_data']) ? $check_item['line_tax_data'] : '');
    } elseif ($line_items_shipping) {
        $check_item = current($line_items_shipping);
        $tax_data = maybe_unserialize(isset($check_item['taxes']) ? $check_item['taxes'] : '');
 /**
  * Save new payment method for a subscription
  *
  * @since 2.0
  * @param WC_Payment_Gateway|empty $payment_method
  * @param array $payment_meta Associated array of the form: $database_table => array( value, )
  */
 public function set_payment_method($payment_gateway, $payment_meta = array())
 {
     if (!empty($payment_meta) && isset($payment_gateway->id)) {
         $this->set_payment_method_meta($payment_gateway->id, $payment_meta);
     }
     if (empty($payment_gateway) || !isset($payment_gateway->id)) {
         $this->update_manual(true);
         update_post_meta($this->id, '_payment_method', '');
         update_post_meta($this->id, '_payment_method_title', '');
     } elseif ($this->payment_method !== $payment_gateway->id) {
         // Set subscription to manual when the payment method doesn't support automatic payments
         $available_gateways = WC()->payment_gateways->get_available_payment_gateways();
         if ('yes' == get_option(WC_Subscriptions_Admin::$option_prefix . '_turn_off_automatic_payments', 'no')) {
             $this->update_manual(true);
         } elseif (!isset($available_gateways[$payment_gateway->id]) || !$available_gateways[$payment_gateway->id]->supports('subscriptions')) {
             $this->update_manual(true);
         } else {
             $this->update_manual(false);
         }
         update_post_meta($this->id, '_payment_method', $payment_gateway->id);
         update_post_meta($this->id, '_payment_method_title', $payment_gateway->get_title());
     }
     $this->payment_gateway = wc_get_payment_gateway_by_order($this);
 }