/**
  * Payment fields which will be rendered on checkout page
  * @see WC_Payment_Gateway::payment_fields()
  */
 function payment_fields()
 {
     if (is_user_logged_in()) {
         $viewData["user_logged_in"] = true;
         $current_user = wp_get_current_user();
         $omise_customer_id = $this->sandbox ? $current_user->test_omise_customer_id : $current_user->live_omise_customer_id;
         if (!empty($omise_customer_id)) {
             $cards = Omise::get_customer_cards($this->private_key, $omise_customer_id);
             $viewData["existingCards"] = $cards;
         }
     }
     Omise_Util::render_view('includes/templates/omise-payment-form.php', $viewData);
 }
 /**
  * Public omise_create_card ajax hook
  */
 public function omise_create_card()
 {
     $token = isset($_POST["omise_token"]) ? wc_clean($_POST["omise_token"]) : "";
     if (empty($token)) {
         Omise_Util::render_json_error("omise_token is required");
         die;
     }
     if (!wp_verify_nonce($_POST["omise_nonce"], "omise_add_card")) {
         Omise_Util::render_json_error("Nonce verification failure");
         die;
     }
     $card = Omise::create_card($this->private_key, $this->omise_customer_id, $token);
     echo json_encode($card);
     die;
 }
 public function init_dashboard()
 {
     try {
         $balance = Omise::get_balance($this->private_key);
         if ($balance->object == 'balance') {
             $balance->formatted_total = wc_price($balance->total / 100);
             $balance->formatted_available = wc_price($balance->available / 100);
             $viewData['balance'] = $balance;
             $this->extract_result_message($viewData);
             $viewData["current_account_mode"] = $this->test_mode ? "TEST" : "LIVE";
             Omise_Util::render_view('includes/templates/omise-wp-admin-page.php', $viewData);
             $this->register_dashboard_script();
         } else {
             echo "<div class='wrap'><div class='error'>Unable to get the balance information. Please verify that your private key is valid. [" . esc_html($balance->message) . "]</div></div>";
         }
     } catch (Exception $e) {
         echo "<div class='wrap'><div class='error'>" . esc_html($e->getMessage()) . "</div></div>";
     }
 }
 function test_render_json_error_with_message_should_return_json_with_error_message()
 {
     $expected = '"{ \\"object\\": \\"error\\", \\"message\\": \\"omise_token is required\\" }"';
     ob_start();
     Omise_Util::render_json_error("omise_token is required");
     $actual = ob_get_clean();
     $this->assertEquals($expected, $actual);
 }