__('Payment', 'formipay'), 'fields' => $payment_settings ); } return $fields; } public function add_form_payment_menu($fields) { $gateways = apply_filters( 'formipay/form-config/tab:payments/gateways', [] ); $payment_options = []; if(!empty($gateways)){ foreach($gateways as $gateway){ $id = $gateway['id']; $label = $gateway['gateway']; if(isset($gateway['channel'])){ $label .= ' - '.$gateway['channel']; } $payment_options[] = [ 'id' => $id, 'label' => $label ]; } } $payment_fields = [ 'payment_section_group' => array( 'type' => 'group_title', 'label' => __( 'Payment Section', 'formipay' ), 'submenu' => __( 'General', 'formipay' ), 'group' => 'started' ), 'payment_section_title' => array( 'type' => 'text', 'label' => __( 'Payment Section Title', 'formipay' ), 'submenu' => __( 'General', 'formipay' ), 'value' => 'Payment Methods', ), 'payment_gateways' => array( 'type' => 'sorter', 'label' => __( 'Choose one or any', 'formipay' ), 'options' => array( array( 'id' => 'inactive', 'name' => __( 'Inactive', 'formipay' ), 'options' => $payment_options, ), array( 'id' => 'active', 'name' => __( 'Active', 'formipay' ), 'options' => [], ) ), 'submenu' => __( 'General', 'formipay' ), ), 'payment_label' => array( 'type' => 'checkbox', 'label' => __( 'Show Payment Label', 'formipay' ), 'description' => __( 'Show payment label in the payment options on the frontend.', 'formipay' ), 'submenu' => __( 'General', 'formipay' ), 'group' => 'ended' ) ]; $payment_fields = apply_filters( 'formipay/form-config/tab:payments', $payment_fields ); $fields['formipay_form_settings']['payments'] = array( 'name' => __( 'Payments', 'formipay' ), 'fields' => $payment_fields ); return $fields; } public function add_responsive_grid($channels) { $channels['payment_responsive_box'] = array( 'type' => 'group_title', 'label' => __( 'Responsive', 'formipay' ), 'description' => __( 'Set responsive grid payment card options' , 'formipay' ), 'submenu' => __( 'General', 'formipay' ), 'group' => 'started', ); $channels['payment_desktop_columns'] = array( 'type' => 'number', 'label' => __( 'Desktop View', 'formipay' ), 'submenu' => __( 'General', 'formipay' ), 'value' => 4 ); $channels['payment_tablet_columns'] = array( 'type' => 'number', 'label' => __( 'Tablet View', 'formipay' ), 'submenu' => __( 'General', 'formipay' ), 'value' => 3 ); $channels['payment_mobile_columns'] = array( 'type' => 'number', 'label' => __( 'Mobile View', 'formipay' ), 'submenu' => __( 'General', 'formipay' ), 'value' => 2, 'group' => 'ended' ); return $channels; } public function add_payment_list($payment_list, $form_id) { $formipay_settings = get_option('formipay_settings'); $payment_gateways = json_decode(formipay_get_post_meta($form_id, 'payment_gateways'), true); foreach($payment_gateways as $payment){ if($payment['id'] == 'active' && !empty($payment['options'])){ foreach($payment['options'] as $option){ $id = $option['id']; $_pay = explode(':::', $id); $gateway = $_pay[0]; if(formipay_get_post_meta($form_id, 'product_type') == 'digital' && $gateway == 'cod'){ continue; } if(isset($formipay_settings[$gateway.'_channels']) && isset($_pay[1])){ $channel = $_pay[1]; if(strpos($channel, '-')){ $channel = explode('-', $channel); $channel_index = $channel[1]; $payment_list[$id] = $formipay_settings[$gateway.'_channels'][$channel_index]; } }else{ $label = $icon = ''; if(isset($formipay_settings[$gateway.'_label']) && !empty($formipay_settings[$gateway.'_label'])){ $label = $formipay_settings[$gateway.'_label']; } if(isset($formipay_settings[$gateway.'_icon']) && !empty($formipay_settings[$gateway.'_icon'])){ $icon = $formipay_settings[$gateway.'_icon']; } $payment_list[$id] = array( $gateway.'_name' => apply_filters( 'formipay/payment-list/'.$gateway.'/label', $label), $gateway.'_logo' => apply_filters( 'formipay/payment-list/'.$gateway.'/logo', $icon) ); } } } } return $payment_list; } public function add_order_shortcodes($shortcodes, $form_id, $order_data, $submit_action_type) { $shortcodes['payment_details'] = apply_filters( 'formipay/order/payment-details', '', $form_id, $order_data, $submit_action_type ); return $shortcodes; } public function render_payment_details($render, $form_id, $order_data, $submit_action_type) { $payment_gateway = $order_data['payment_gateway']; $render = apply_filters( 'formipay/order/payment-details/'.$payment_gateway, $render, $form_id, $order_data, $submit_action_type ); ob_start(); echo wp_kses($render, formipay_thankyoupage_allowed_html()); $content = ob_get_contents(); ob_get_clean(); return $content; } public function add_payment_in_process_data($order_data, $form_id) { $payment = explode(':::', $order_data['payment']); $payment_gateway = $payment[0]; $order_data['payment_gateway'] = $payment_gateway; return $order_data; } public function set_endpoint() { add_rewrite_rule( '^payment-confirm/([^/]*)/([^/]*)/?', 'index.php?formipay-payment-confirm=1&gateway=$matches[1]&formipay-token=$matches[2]', 'top' ); flush_rewrite_rules(); } public function set_query_vars($vars){ $vars[] = 'formipay-payment-confirm'; $vars[] = 'gateway'; $vars[] = 'formipay-token'; return $vars; } public function frontend_enqueue() { global $wp_query; if( is_array($wp_query->query) && array_key_exists('formipay-payment-confirm', $wp_query->query) && true === boolval($wp_query->query['formipay-payment-confirm']) ) : wp_enqueue_style( 'formipay-payment-confirm', FORMIPAY_URL . 'public/assets/css/payment-confirm.css', [], FORMIPAY_VERSION, 'all' ); wp_enqueue_script( 'formipay-payment-confirm', FORMIPAY_URL . 'public/assets/js/payment-confirm.js', ['jquery'], FORMIPAY_VERSION, true ); endif; } public function payment_confirm_page_title($title) { global $wp_query; if( is_array($wp_query->query) && array_key_exists('formipay-payment-confirm', $wp_query->query) && true === boolval($wp_query->query['formipay-payment-confirm']) ) : $gateway = $wp_query->query['gateway']; $gateway = strlen($gateway) > 3 ? ucwords( str_replace('_', ' ', $gateway) ) : strtoupper($gateway); $title = $gateway . ' Confirmation' . ' - ' . get_bloginfo('name'); endif; return $title; } }