コード例 #1
0
 /**
  * Processes a tokenised payment
  *
  * @param $original_order_id
  *
  * @return WC_Order|bool
  */
 protected function create_registration_payment($original_order_id)
 {
     $nonce = isset($_REQUEST['_wpnonce']) ? $_REQUEST['_wpnonce'] : '';
     if (!wp_verify_nonce($nonce, 'buy_postsale_offer')) {
         return false;
     }
     $order = $this->create_postsale_order($original_order_id);
     try {
         $payment_api = $this->get_api();
         $request = new WC_LUUP_API_Transaction_Request($this->settings, $order);
         $request->set_payment_type($this->get_option('auth_mode'));
         $payment_response = $payment_api->send_registration_payment(get_post_meta($original_order_id, self::TOKEN_NAME, true), $request);
     } catch (Exception $e) {
         //todo - log exception
         return false;
     }
     $order = $this->process_luup_payment_response($payment_response, $order);
     if ('processing' == $order->get_status()) {
         if (!add_post_meta($original_order_id, self::POSTSALE_ORDER_META_NAME, $order->id, true)) {
             update_post_meta($original_order_id, self::POSTSALE_ORDER_META_NAME, $order->id);
         }
         $_SESSION['luup']['can_postsale'] = false;
         unset($_SESSION['luup']['can_postsale']);
         return $order;
     }
     return false;
 }