/**
  * Process the captured payment when changing order status to completed
  *
  * @access      public
  * @param       int $order_id
  * @return      mixed
  */
 public function order_status_completed($order_id = null)
 {
     if (!$order_id) {
         $order_id = $_POST['order_id'];
     }
     if (get_post_meta($order_id, 'capture', true)) {
         $params = array();
         if (isset($_POST['amount'])) {
             $params['amount'] = round($_POST['amount']);
         }
         $transaction_id = get_post_meta($order_id, '_transaction_id', true);
         $charge = S4WC_API::capture_charge($transaction_id, $params);
         return $charge;
     }
 }
Exemplo n.º 2
0
 /**
  * Process the captured payment when changing order status to completed
  *
  * @access      public
  * @param       int $order_id
  * @return      mixed
  */
 public function order_status_completed($order_id = null)
 {
     if (!$order_id) {
         $order_id = $_POST['order_id'];
     }
     // `_s4wc_capture` added in 1.35, let `capture` last for a few more updates before removing
     if (get_post_meta($order_id, '_s4wc_capture', true) || get_post_meta($order_id, 'capture', true)) {
         $order = new WC_Order($order_id);
         $params = array('amount' => isset($_POST['amount']) ? $_POST['amount'] : $order->order_total * 100, 'expand[]' => 'balance_transaction');
         try {
             $charge = S4WC_API::capture_charge($order->transaction_id, $params);
             if ($charge) {
                 $order->add_order_note(sprintf(__('%s payment captured.', 'stripe-for-woocommerce'), get_class($this)));
                 // Save Stripe fee
                 if (isset($charge->balance_transaction) && isset($charge->balance_transaction->fee)) {
                     $stripe_fee = number_format($charge->balance_transaction->fee / 100, 2, '.', '');
                     update_post_meta($order_id, 'Stripe Fee', $stripe_fee);
                 }
             }
         } catch (Exception $e) {
             $order->add_order_note(sprintf(__('%s payment failed to capture. %s', 'stripe-for-woocommerce'), get_class($this), $this->get_error_message($e)));
         }
     }
 }