/**
  * @action woocommerce_order_details_after_order_table
  *
  * @param WC_Order $order
  */
 public static function iamport_order_detail(\WC_Order $order)
 {
     $checkout_methods = WSKL_Payment_Gates::get_checkout_methods('iamport');
     $pay_method = $order->iamport_paymethod;
     $receipt_url = $order->iamport_receipt_url;
     $vbank_name = $order->iamport_vbank_name;
     $vbank_num = $order->iamport_vbank_num;
     $vbank_date = $order->iamport_vbank_date;
     $transction_id = $order->get_transaction_id();
     ob_start();
     switch ($pay_method) {
         case 'card':
             $pay_method_text = $checkout_methods['credit'];
             include_once WSKL_PATH . '/includes/lib/iamport/template-simple.php';
             break;
         case 'trans':
             $pay_method_text = $checkout_methods['remit'];
             include_once WSKL_PATH . '/includes/lib/iamport/template-simple.php';
             break;
         case 'phone':
             $pay_method_text = $checkout_methods['mobile'];
             include_once WSKL_PATH . '/includes/lib/iamport/template-simple.php';
             break;
         case 'vbank':
             $pay_method_text = $checkout_methods['virtual'];
             include_once WSKL_PATH . '/includes/lib/iamport/template-vbank.php';
             break;
         case 'kakao':
             $pay_method_text = $checkout_methods['kakao_pay'];
             include_once WSKL_PATH . '/includes/lib/iamport/template-simple.php';
             break;
     }
     ob_end_flush();
 }
 public function __construct()
 {
     $this->local_settings();
     //////////////////////Don't  Change Here////////////////////////
     $this->id = $this->_pg_agency . '_' . $this->method;
     $guided_methods = WSKL_Payment_Gates::get_checkout_methods();
     $payment_gate_names = WSKL_Payment_Gates::get_pay_gates();
     $this->method_title = $payment_gate_names['ags'] . " - {$guided_methods[$this->method]}";
     $this->method_description = '';
     $this->init_form_fields();
     $this->init_settings();
     $this->enabled = $this->get_option('enabled');
     $this->title = $this->get_option('title');
     $this->description = $this->get_option('description');
     ////////////////////////////////////////////////////////////////
     add_action('wp_enqueue_scripts', array($this, 'js_and_css'));
     add_action('woocommerce_receipt_' . $this->id, array($this, 'order_pay_page'));
     add_filter('woocommerce_thankyou_order_received_text', array($this, 'order_received_text'), 10, 0);
     //add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
 }
 public function check_payment_gateways(array $available_gateways)
 {
     $wskl_pay_pates = \WSKL_Payment_Gates::get_pay_gates();
     $verified = $this->verify();
     /** @var \WC_Payment_Gateway $gateway */
     foreach ($available_gateways as $idx => $gateway) {
         if (!$gateway instanceof \WC_Payment_Gateway) {
             continue;
         }
         $gate = substr($gateway->id, 0, strpos($gateway->id, '_'));
         if (!isset($wskl_pay_pates[$gate])) {
             continue;
         }
         if ($verified) {
             continue;
         }
         unset($available_gateways[$idx]);
     }
     return $available_gateways;
 }
<?php

$methods = WSKL_Payment_Gates::get_checkout_methods();
$credit_default = $methods['credit'] . WSKL_Payment_Gates::get_checkout_method_postfix() . <<<EOD
<br>
1.페이앱 결제는 1,2번째 칸은 ActiveX 인증 방식이 아니므로 결제창에서 신용카드 번호만 입력하면 신속하게 결제됩니다.<br>
2. 페이앱 결제창의 3번째 칸에서는 기존의 ActiveX 방식이 지원되므로 기존의 방식으로 결제가 가능합니다.<br>
EOD;
return array(array('id' => 'payapp_user_id', 'label' => __('판매자 아이디', 'wskl'), 'description' => __('페이앱 판매자 아이디를 입력해주십시오', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''), array('id' => 'payapp_link_key', 'label' => __('연동 Key', 'wskl'), 'description' => __('페이앱 연동 KEY를 입력해주십시오(중요)', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'payapp_link_val', 'label' => __('연동 Value', 'wskl'), 'description' => __('페이앱 연동 VALUE를 입력해주십시오(중요)', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'dummy_34', 'label' => __('판매자 등록', 'wskl'), 'description' => __('
						<span class="wskl-notice">판매자 등록 과정은 매우 중요한 사항이므로  정확히 숙지하고 실행해주셔야 합니다. </span></br>
						1. 다보리와 계약시 메일로 전달된 판매자 아이디를 입력합니다.</br>
                        &nbsp;&nbsp;PayApp 판매자로 로그인 한 후 확인한 연동 KEY 와 연동 VALUE를 입력하고 저장합니다.</br><a href="https://seller.payapp.kr/c/apiconnect_info.html" target="_blank">https://seller.payapp.kr/c/apiconnect_info.html  연동정보 확인하러 가기</a></br>
 						<span class="wskl-info">페이앱에서는 테스트 모드가 제공되지 않습니다. 대신 결제 실패의 경우가 발생하지 않습니다.<br>불편하시겠지만 결제 테스트 후 판매자 관리자로 로그인하여 해당 결제를 취소하여 주십시오.</span></br>
  					', 'wskl'), 'type' => 'caption', 'default' => ''));
 public static function get_gateway_methods()
 {
     $enabled_methods = wskl_get_option('checkout_methods');
     $available_methods = array_keys(WSKL_Payment_Gates::get_checkout_methods());
     $result = array();
     $checkout_methods = array_intersect($enabled_methods, $available_methods);
     foreach ($checkout_methods as $key) {
         $class_name = 'WC_Gateway_WSKL_Iamport_' . ucfirst($key);
         if (class_exists($class_name)) {
             $result[] = $class_name;
         }
     }
     return $result;
 }
    private function settings_fields()
    {
        // specify settings fields
        $pg_agency = get_option(wskl_get_option_name('pg_agency'));
        $settings['preview'] = array('title' => __('일러두기', 'wskl'), 'description' => __('다보리를 만든 목적과 사용 방법 및 구매와 기술지원 방법과 업그레이드 등을 설명합니다.', 'wskl'), 'fields' => array(array('id' => 'dummy_1', 'label' => __('제작 목적', 'wskl'), 'description' => '<ol class="wskl-notice">' . '<li>' . __('워드프레스와 우커머스를 Cafe24나 고도몰처럼" 더 쉽고 더 편리하게 만들었습니다.', 'wskl') . '</li>' . '<li>' . __('쇼핑몰 영업에 꼭 필요한 기능만을 모두 담아서 최소의 비용으로 제공합니다.', 'wskl') . '</li>' . '<li>' . __('"다보리 마케팅 자동화 서버와 연동"하여 중소상공인을 위한 "마케팅 자동화" 서비스를 제공합니다.', 'wskl') . '</li>' . '</ol>', 'type' => 'caption', 'default' => ''), array('id' => 'dummy_2', 'label' => __('사용방법', 'wskl'), 'description' => __('<span class="wskl-notice">플러그인 인증키로 "제품 인증"을 하기 전에는 본플러그인의 기능을 사용할 수 없습니다.<br/></span>
						<a href="https://www.dabory.com/" target="_blank" >"다보리 플러그인 인증키 확인" 페이지로 바로가기</a>
					', 'wskl'), 'type' => 'caption', 'default' => ''), array('id' => 'dummy_5', 'label' => __('업데이트/기술지원', 'wskl'), 'description' => __('
						<a href="http://www.symphonysoft.co.kr/%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8/" target="_blank" >플러그인 다운로드</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://www.dabory.co.kr/cs/service/" target="_blank">기술지원 요청 바로가기</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="https://www.dabory.com/shoppingmall/webhosting/" target="_blank" >전용관리 웹호스팅 알아보기</a><br/>
					', 'wskl'), 'type' => 'caption', 'default' => ''), array('id' => 'enable_config_editor', 'label' => __('설정편집', 'wskl'), 'description' => __('간단한 wp-config.php 설정 편집 기능 사용.<br><span class="wskl-notice">이 설정은 wp-config.php 파일을 편집합니다. 유지보수시에만 제한적으로 이용하세요.</span>', 'wskl'), 'type' => 'checkbox', 'default' => '')));
        $payment_description = '';
        //		$essential_description            = '';
        //		$extension_description            = '';
        //		$marketing_automation_description = '';
        if (isset($_GET['tab']) && $_GET['tab'] == 'authentication') {
            $payment_description = sprintf('%s <a href="#" id="payment_license_activation">%s</a><br/><span id="payment_license_status">%s</span>', __('활성화 키를 입력후 기능을 활성화하십시오.', 'wskl'), __('키 인증', 'wskl'), WSKL_Auth::get_license_duration_string('payment'));
            //			$essential_description = sprintf(
            //				'%s <a href="#" id="essential_license_activation">%s</a><br/><span id="essential_license_status">%s</span>',
            //				__( '핵심기능 키를 입력후 기능을 활성화하십시오.', 'wskl' ),
            //				__( '핵심기능 인증', 'wskl' ),
            //				WSKL_Auth::get_license_duration_string( 'essential' )
            //			);
            //
            //			$extension_description = sprintf(
            //				'%s <a href="#" id="extension_license_activation">%s</a><br/><span id="extension_license_status">%s</span>',
            //				__( '확장기능 키를 입력후 기능을 활성화하십시오.', 'wskl' ),
            //				__( '확장기능 인증', 'wskl' ),
            //				WSKL_Auth::get_license_duration_string( 'extension' )
            //			);
            //
            //			$marketing_automation_description = sprintf(
            //				'%s <a href="#" id="marketing_automation_license_activation">%s</a><br/><span id="marketing_automation_license_status">%s</span>',
            //				__( '마케팅자동화 키를 입력후 기능을 활성화하십시오.', 'wskl' ),
            //				__( '마케팅자동화 인증', 'wskl' ),
            //				WSKL_Auth::get_license_duration_string( 'marketing' )
            //			);
        }
        $settings['authentication'] = array('title' => __('제품인증', 'wskl'), 'description' => __('제품 구매 또는 무료 사용시 www.dabory.com에서 부여된 활성화키로 플러그인을 먼저 활성화후 사용 가능합니다.<br/>
						<a href="https://www.dabory.com/my-account/view-order/" target="_blank" ><span class="wskl-notice">"다보리 플러그인 인증키 확인" 페이지로 바로가기</span></a>', 'wskl'), 'fields' => array(array('id' => 'dummy_3', 'label' => __('사이트 주소(URL)', 'wskl'), 'description' => __('
						' . get_option('siteurl') . '<br/>
						<span class="wskl-notice">인증키는 사이트 주소와 다보리 메타(meta) 서버 측과 동기화되어 활성화되므로 <br/>
						관리자모드 "설정"에서 "사이트를 변경하는 경우" 다시 기능 활성화를 하셔야 합니다. </span>
					', 'wskl'), 'type' => 'caption', 'default' => ''), array('id' => 'payment_license', 'label' => __('활성화 키', 'wskl'), 'description' => $payment_description, 'type' => 'longtext', 'default' => '', 'placeholder' => '')));
        $settings['checkout-payment-gates'] = array('title' => __('지불기능(A)', 'wskl'), 'description' => __('국내의 모든 지불 대행 회사의 결제 플러그인을 지원합니다.<br/>
						<span class="wskl-notice">현재 지원되지 않는 플러그인은 무료로 개발해드립니다.</span><br/>
			            결제대행(PG)회사를 추가하기를 원하는 경우  service@econoq.co.kr 로 메일 주시면  1주일이내에 개발해 드리겠습니다.<br/>
						<a href="http://www.symphonysoft.co.kr/" target="_blank">신규 플러그인 개발 요청 하러 가기</a><br/>', 'wskl'), 'fields' => array(array('id' => 'enable_sym_pg', 'label' => __('다보리 PG 사용 설정', 'wskl'), 'description' => __('다보리 PG (Payment Gateway) 기능 사용 여부를 설정합니다.', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'company', 'label' => __('회사명 입력 가능', 'wskl'), 'description' => __('사업자 대상 위주 판매의 경우 회사명을 입력 가능 설정을 합니다.', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'pg_agency', 'label' => __('결제대행업체', 'wskl'), 'description' => __('<span class="wskl-notice">변경시 자동으로 저장됩니다.</span> ', 'wskl'), 'type' => 'select', 'options' => WSKL_Payment_Gates::get_pay_gates(), 'default' => 'payapp')));
        switch ($pg_agency) {
            // 기존 PG Agency (Active-X 기반) 공통 설정 필드 #1
            case 'kcp':
            case 'inicis':
            case 'ags':
                $agencies_common_fields = (include WSKL_PATH . '/includes/admin/settings/structures/checkout-payment-gates/fields/classic-pg-agencies-common-fields-1.php');
                $settings['checkout-payment-gates']['fields'] = array_merge($settings['checkout-payment-gates']['fields'], $agencies_common_fields);
                break;
                // 페이앱 전용 필드 #1
            // 페이앱 전용 필드 #1
            case 'payapp':
                array_push($settings['checkout-payment-gates']['fields'], array('id' => 'checkout_methods', 'label' => __('결제방식 지정', 'wskl'), 'description' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;사용하실 결제방식을 지정해 주십시오.', 'wskl'), 'type' => 'checkbox_multi', 'options' => WSKL_Payment_Gates::get_checkout_methods(), 'default' => array('credit', '신용카드')));
                break;
                // 아임포트 전용 필드 #1
            // 아임포트 전용 필드 #1
            case 'iamport':
                array_push($settings['checkout-payment-gates']['fields'], array('id' => 'checkout_methods', 'label' => __('결제방식 지정', 'wskl'), 'description' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;사용하실 결제방식을 지정해 주십시오.', 'wskl'), 'type' => 'checkbox_multi', 'options' => WSKL_Payment_Gates::get_checkout_methods('iamport'), 'default' => array('credit', '신용카드')), array('id' => 'dummy_33', 'label' => __('아임포트 결정방법', 'wskl'), 'description' => __('<span class="wskl-notice">아임포트 결제와 관련된 내용은 아임포트 서버에서 실행되는 내용이므로 다보리에서 책임지지 않습니다. </span><br><a href="https://admin.iamport.kr/settings" target="_blank">아임포트 PG 설정 바로가기</a><br/>
						1. 아임포트에서는 현재 카카오페이, LGU+, KCP, 이니시스, JT-Net, 나이스정보통신이 지원되며 <br>가맹점 설정은 아임포트 사이트에 회원가입/로그인한 후 설정하여야 합니다.', 'wskl'), 'type' => 'caption', 'default' => ''));
                break;
        }
        switch ($pg_agency) {
            // 페이앱 전용 필드 #2: 인증사항
            case 'payapp':
                $settings['checkout-payment-gates']['fields'] = array_merge($settings['checkout-payment-gates']['fields'], include WSKL_PATH . '/includes/admin/settings/structures/checkout-payment-gates/fields/payapp/payapp-fields.php');
                break;
            case 'kcp':
                array_push($settings['checkout-payment-gates']['fields'], array('id' => 'kcp_sitename', 'label' => __('사이트이름', 'wskl'), 'description' => __('자체적으로 정한 사이트 이름을 입력해주십시오. (반드시 영문자로 설정하여 주시기 바랍니다.)', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => __('예) 다보리 쇼핑몰', 'wskl')), array('id' => 'kcp_sitecd', 'label' => __('Site Code', 'wskl'), 'description' => __('KCP 에서 발급된 Site Code 를 정확히 입력해주십시오.(중요)', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => __('예) T0000', 'wskl')), array('id' => 'kcp_sitekey', 'label' => __('Site Key', 'wskl'), 'description' => __('KCP 에서 발급된 Site Key를 정확히 입력해주십시오.(중요)', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => __('예) 3grptw1.zW0GSo4PQdaGvsF__', 'wskl')), array('id' => 'dummy_11', 'label' => __('상점등록', 'wskl'), 'description' => __('<span class="wskl-notice">상점등록 과정은 매우 중요한 사항이므로  정확히 숙지하고 실행해주셔야 합니다. </span></br>
						1. KCP와 계약 체결 후 다음의 내용을 발급 받습니다.</br>
                        &nbsp;&nbsp;&nbsp;&nbsp;A.Site Code와 Site Key를 입력하고 저장합니다.</br>
                         2. 당 플러그인의 KCP 홈 폴더중 “bin” 폴더에 있는 pp_cli 화일의 실행권한을 755로 바꾸어 줍니다. 그대로 둘 경우 결제 않됨.</br>
                        &nbsp;&nbsp;&nbsp;&nbsp;예)/public_html/wp-content/plugins/wskl/includes/lib/homekcp/bin/pp_cli</br>
                        &nbsp;&nbsp;&nbsp;&nbsp;(1) ssh로 로그인 후, 해당폴더에서 "chmod 755 pp_cli" 실행 또는</br>
                        &nbsp;&nbsp;&nbsp;&nbsp;(2) FTP 로 접속하여 해당 화일에 오른쪽 마우스를 클릭 - "화일 권한" 확인 후 755 로 저장</br>
 						<span class="wskl-info">테스트시에는기본 설치된 테스트용 KCP TEST  상점이 사용되므로 참고하세요</span></br>', 'wskl'), 'type' => 'caption', 'default' => ''));
                break;
            case 'inicis':
                array_push($settings['checkout-payment-gates']['fields'], array('id' => 'inicis_admin', 'label' => __('키패스워드', 'wskl'), 'description' => __('키패스워드입력 - 상점관리자 패스워드와 무관합니다.(중요)', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => __('예) 1111', 'wskl')), array('id' => 'inicis_mid', 'label' => __('상점 아이디', 'wskl'), 'description' => __('이니시스에서 발급된 상점아이디를 대소문자 구분하여 입력해주십시오.(중요)', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => __('예) INIpayTest', 'wskl')), array('id' => 'inicis_url', 'label' => __('상점 URL', 'wskl'), 'description' => __('상점의 홈페이지 주소를 입력해주십시오.( http://포함 )', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => __('예) http://www.your_domain.co.kr', 'wskl')), array('id' => 'dummy_11', 'label' => __('상점등록', 'wskl'), 'description' => __('<span class="wskl-notice">상점등록 과정은 매우 중요한 사항이므로  정확히 숙지하고 실행해주셔야 합니다. </span></br>
						1. 이니시스와 계약 체결 후 다음의 내용을 발급 받습니다.</br>
                        &nbsp;&nbsp;&nbsp;&nbsp;A. 키패스워드(숫자 4자리)와  상점 아이디(10자리)를 해당설정에 입력하고 저장합니다.</br>
                        &nbsp;&nbsp;&nbsp;&nbsp;B.키화일 등  4개 (keypass.enc, mcert.pem, mpriv.pem, readme.txt)</br>
                        2. 당 플러그인의 이니페이 홈 폴더중 “key” 폴더에 상점아이디와 동일한 이름의 서브 디렉터리를 만듭니다(대소문자 구별함.).</br>
                        &nbsp;&nbsp;&nbsp;&nbsp;예)/public_html/wp-content/plugins/wskl/includes/lib/homeinicis/key/[상점아이디]</br>
                        3. 발급받은 화일  4개 (keypass.enc, mcert.pem, mpriv.pem, readme.txt)를 2.에서 만든 폴더에 복사합니다.</br>
 						<span class="wskl-info">테스트시에는기본 설치된 테스트용 INIpayTest 상점아이디폴더가 사용되므로 참고하세요</span></br>', 'wskl'), 'type' => 'caption', 'default' => ''));
                break;
            case 'lgu+':
                break;
            case 'ags':
                array_push($settings['checkout-payment-gates']['fields'], array('id' => 'ags_storenm', 'label' => __('상점명', 'wskl'), 'description' => __('올더게이트 상점명을 입력해주십시오', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => __('예) 올더게이트', 'wskl')), array('id' => 'ags_storeid', 'label' => __('상점 ID', 'wskl'), 'description' => __('올더게이트에서 발급된 상점ID를 정확히 입력해주십시오.(중요)', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => __('예) aegis', 'wskl')), array('id' => 'ags_mallurl', 'label' => __('상점 URL', 'wskl'), 'description' => __('상점의 홈페이지 주소를 입력해주십시오.( http://포함 )', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => __('예) http://www.allthegate.com', 'wskl')), array('id' => 'ags_hp_id', 'label' => __('CPID(모바일결제)', 'wskl'), 'description' => __('올더게이트에서 발급받으신 CPID로 변경', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''), array('id' => 'ags_hp_pwd', 'label' => __('CP 비밀번호(모바일결제)', 'wskl'), 'description' => __('올더게이트에서 발급받으신 비밀번호로 변경', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''), array('id' => 'ags_hp_subid', 'label' => __('SUB_ID(모바일결제)', 'wskl'), 'description' => __('올더게이트에서 발급받으신 상점만 입력', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''), array('id' => 'ags_prodcode', 'label' => __('상품코드(모바일결제)', 'wskl'), 'description' => __('올더게이트에서 발급받으신 상품코드로 변경', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''), array('id' => 'ags_unittype', 'label' => __('상품종류(모바일결제)', 'wskl'), 'description' => __('올더게이트에서 발급받으신 상품종류로 변경: 디지털컨텐츠=1, 실물(상품)=2', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''));
                break;
            case 'iamport':
                array_push($settings['checkout-payment-gates']['fields'], array('id' => 'iamport_user_code', 'label' => __('가맹점 식별코드', 'wskl'), 'description' => __('아임포트의 가맹점 식별코드를 입력하여 주십시오.', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''), array('id' => 'iamport_rest_key', 'label' => __('REST API 키', 'wskl'), 'description' => __('아임포트의 REST API 키를 입력하여 주십시오.', 'wskl'), 'type' => 'text', 'default' => '', 'placeholder' => ''), array('id' => 'iamport_rest_secret', 'label' => __('REST API secret', 'wskl'), 'description' => __('아임포트의 REST API secret 입력하여 주십시오.', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'dummy_31', 'label' => __('가맹점 등록', 'wskl'), 'description' => __('
						<span class="wskl-notice">아임포트의 가맹점 등록 과정은 좀 특이하므로 세심한 주의를 요합니다.<br>고객의 결제 진행시 결제 정보를 아임포트 서버로 보내주면 아임포트 서버가 결제 처리를 대행하는<br> 구조이므로 각 결제 업체의 PG 연동 정보가 아임포트 회원 정보에 설정되어야 합니다.</span></br><span class="wskl-info">
						1. 아임포트 회원가입/로그인 후 시스템설정->내정보 에서 확인된 정보를 입력합니다.</br>
                        &nbsp;&nbsp;아임포트 회원로그인 후 확인한 REST API 정보를 입력하고 저장합니다.</br><a href="https://admin.iamport.kr/settings" target="_blank">https://admin.iamport.kr/settings  REST API 정보를 확인하러 가기</a></br>
 						2. <a href="https://admin.iamport.kr/settings" target="_blank">https://admin.iamport.kr/settings</a> 의 "PG연동 설정"에서 <br>각 결제 대행업체에서 발급 받은 PG연동 정보를 설정합니다. </br> </font></br>
  					', 'wskl'), 'type' => 'caption', 'default' => ''));
                break;
        }
        // 페이앱, 아임포트는 추가설정내용 없음.
        if (!in_array($pg_agency, array('payapp', 'iamport'))) {
            array_push($settings['checkout-payment-gates']['fields'], array('id' => 'dummy_1', 'label' => __('추가설정내용', 'wskl'), 'description' => __('<span class="wskl-notice">해당페이지 설정후 반드시 추가해야할 "우커머스 결제설정" 내용입니다.</span><a href="' . esc_url(add_query_arg(array('page' => 'wc-settings', 'tab' => 'checkout'), admin_url('admin.php'))) . '" target="_blank">결제설정 바로가기</a><br/>
						1. "해당 페이지를 설정하면 우커머스->설정->결제 설정"의 하위메뉴에 지정한 결제 방법이 추가됩니다. <br/>
						   &nbsp;&nbsp;&nbsp;각각의 하위메뉴로 들어가서 활성화에 체크하여 주십시오.  <br/>
						2. "우커머스->설정->결제옵션->지불게이트웨이"에서 고객의 결제페이지에 보일 "결제 방법의 순서"를 결정하여 주십시오.<br/>
						3. "우커머스->설정->결제설정"의 각 결제 방식을 선택하면 고객의 결제페이지에 보일 결제방식에 대한 안내문 변경이 가능합니다.<br/>', 'wskl'), 'type' => 'caption', 'default' => ''));
        }
        $settings['essential-features'] = (include WSKL_PATH . '/includes/admin/settings/structures/essential-features.php');
        $settings['convenience-features'] = (include WSKL_PATH . '/includes/admin/settings/structures/convenience-features.php');
        $settings['social-login'] = array('title' => __('소셜기능(S)', 'wskl'), 'description' => __('계정관리와  로그인 관련 설정입니다.(소셜 아이콘은 includes/lib/custom 폴더를 참조)', 'wskl'), 'fields' => array(array('id' => 'enable_social_login', 'label' => __('다보리 소셜 로그인 활성화 ', 'wskl'), 'description' => __('다보리에서 제공한 로그인을 사용하게 됩니다.', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'fb_login', 'label' => __('페이스북  계정으로 로그인 활성화 ', 'wskl'), 'description' => __('활성화이후  발급키 입력창이 나타납니다.', 'wskl'), 'type' => 'checkbox', 'default' => '')));
        if (get_option(WSKL_PREFIX . 'fb_login') == 'on') {
            array_push($settings['social-login']['fields'], array('id' => 'fb_app_id', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[페이스북] App ID', 'wskl'), 'description' => __('페이스북의 App ID 를 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'fb_app_secret', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[페이스북] App Secret', 'wskl'), 'description' => __('페이스북의 App Secret을 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'fb_login_link_text', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[페이스북]링크 텍스트', 'wskl'), 'description' => __('로그인 링크에 보여질 텍스트 또는 이미지 태그를 입력하십시오. 기본 아이콘을 사용하려면 \'[icon]\'으로 입력하세요.', 'wskl'), 'type' => 'textarea', 'default' => '[icon]', 'placeholder' => ''), array('id' => 'dummy_13', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[페이스북] 키발급', 'wskl'), 'description' => __('
						<span class="wskl-notice">반드시 https://developers.facebook.com 에서 키발급을 먼저 받으십시오.</span>   <a href="https://developers.facebook.com" target="_blank" >키발급 바로가기</a><br/>
						1. My App 메뉴에서 Add a New App 을 클릭한 후 Website 를 선택하십시오. <br/>
						2. 해당웹사이트의 이름을 입력하시고 Create New Facebook ID 하십시오. <br/>
						3. 반드시 Site URL에 http://를 포함한 고객의 웹사이트 주소를 입력하십시오. <br/>
						4. App ID 생성이 완료되면 반드시 해당 App의 Settings 로 가셔서 App Domains와 Website에서 <br/>고객의
						    웹사이트 주소가 일치하는 지 확인하세요. <span class="wskl-notice">웹사이트 주소가 바뀔때 반드시 여기와 일치시켜야 합니다.</span><br/>
						5. App ID와 App Secret 을 확인하신 후 다보리 플러그인의 해당 키값을 입력하고 저장하여 주십시오.<br/>
					', 'wskl'), 'type' => 'caption', 'default' => ''));
        }
        array_push($settings['social-login']['fields'], array('id' => 'naver_login', 'label' => __('네이버 계정으로 로그인 활성화 ', 'wskl'), 'description' => __('활성화이후  발급키 입력창이 나타납니다. ', 'wskl'), 'type' => 'checkbox', 'default' => ''));
        if (get_option($this->_prefix . 'naver_login') == 'on') {
            array_push($settings['social-login']['fields'], array('id' => 'naver_client_id', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[네이버] Client ID', 'wskl'), 'description' => __('네이버의 Client ID를 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'naver_client_secret', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[네이버] Client Secret', 'wskl'), 'description' => __('네이버의 Client Secret 을 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'naver_login_link_text', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[네이버] 링크 텍스트', 'wskl'), 'description' => __('로그인 링크에 보여질 텍스트 또는 이미지 태그를 입력하십시오. 기본 아이콘을 사용하려면 \'[icon]\'으로 입력하세요.', 'wskl'), 'type' => 'textarea', 'default' => '[icon]', 'placeholder' => ''), array('id' => 'dummy_14', 'label' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[네이버] 키발급', 'wskl'), 'description' => __('
						<span class="wskl-notice">반드시  http://developer.naver.com/wiki/pages/NaverLogin 에서 키발급을 먼저 받으십시오.</span>   <a href=" http://developer.naver.com/wiki/pages/NaverLogin" target="_blank" >키발급 바로가기</a><br/>
						1. [키발급 관리]를 선택한 후 네이버 로그인을 선택하십시오.. <br/>
						2. 새 애플리케이션을 등록하고 서비스 환경은 [www-Web]으로 선택하십시오.. <br/>
						3. PC웹과 모바일 웹에서 고객의  웹사이트 주소를 입력하시고 콜백도 동일하게 입력하십시오. <br/>
                        4. Client ID 생성이 완료되면 어플리케이션 메뉴의 [일반]메뉴로 고객의  PC웹과 모바일 웹사이트 주소가 일치하는 지 확인하세요. <br/>
						<span class="wskl-notice">웹사이트 주소가 바뀔때 반드시 여기와 일치시켜야 합니다.</span><br/>
						5. Client ID와 Client Secret 을 확인하신 후 다보리 플러그인의 해당 키값을 입력하고 저장하여 주십시오.<br/>
					', 'wskl'), 'type' => 'caption', 'default' => ''));
        }
        $settings['protection-features'] = array('title' => __('차단보안기능(R)', 'wskl'), 'description' => __('특별한 관리없이 악성댓글이나 악성트래픽이 대폭 감소합니다. 한국인 대상 사이트의 경우 한국,미국만 오픈해도 됩니다.', 'wskl'), 'fields' => array(array('id' => 'enable_countryip_block', 'label' => __('국가별 IP 차단', 'wskl'), 'description' => __('국가별 IP를 차단하여 해킹을 미연에 방지합니다.</br>
						활성화시 반드시 아래의 "화이트리스트 국가코드"를 넣어 주십시오', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'white_ipcode_list', 'label' => __('화이트 IP 코드 리스트', 'wskl'), 'description' => __('차단하지 않을 국가의 IP 코드를 추가합니다. 컴마로 분리. 자세한 국가코드는 <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" target="_blank">ISO 3166-1 alpha-2</a>를 참고하세요. </br><span class="wskl-description">예) KR,US,JP,CN => KR-한국 US-미국, JP-일본, CN-중국</span>', 'wskl'), 'type' => 'longtext', 'default' => 'KR,US,JP,CN', 'placeholder' => 'KR,US,JP,CN'), array('id' => 'dummy_1', 'label' => __('작동 상황', 'wskl'), 'description' => site_url() == wskl_get_option('ip_block_target') ? '<span class="wskl-info">' . __('차단 기능이 동작합니다.', 'wskl') . '</span>' : '<span class="wskl-notice">' . __('도메인이 변경되어 기능이 중지되었습니다. 설정 저장 버튼을 눌러 다시 활성화시켜 주세요', 'wskl') . '</span>')));
        $settings['marketing'] = (include WSKL_PATH . '/includes/admin/settings/structures/marketing-automation.php');
        if (wskl_lab_enabled()) {
            $settings['beta-features'] = (include WSKL_PATH . '/includes/admin/settings/structures/beta-features.php');
        }
        if (wskl_debug_enabled()) {
            $settings['developer'] = (include WSKL_PATH . '/includes/admin/settings/structures/developer.php');
        }
        $settings = apply_filters('wskl_settings_fields', $settings);
        return $settings;
    }
<?php

return array(array('id' => 'enable_testmode', 'label' => __('테스트 모드로 설정', 'wskl'), 'description' => __('결제 테스트 모드로 설정되어 실제적인 결제는 되지 않습니다.', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'enable_showinputs', 'label' => __('필드보임 설정', 'wskl'), 'description' => __('테스트용으로 사용되므로 일반적인경우 비활성화 해주세요.', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'checkout_methods', 'label' => __('결제방식 지정', 'wskl'), 'description' => __('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;사용하실 결제방식을 지정해 주십시오.', 'wskl'), 'type' => 'checkbox_multi', 'options' => WSKL_Payment_Gates::get_checkout_methods(), 'default' => array('credit', '신용카드')), array('id' => 'enable_https', 'label' => __('HTTPS 사용', 'wskl'), 'description' => __('결제페이지 스크립트을 HTTPS(보안모드)방식으로 호출합니다. 홈페이지 보안 인증 서비스를 받지 않는 사이트의 경우 무시하셔도 됩니다.', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'enable_escrow', 'label' => __('에스크로 설정', 'wskl'), 'description' => __('에스크로 방식으로 결제를 진행합니다.', 'wskl'), 'type' => 'checkbox', 'default' => ''), array('id' => 'escrow_delivery', 'label' => __('에스크로 예상 배송일', 'wskl'), 'description' => __('에스크로 설정시 배송소요기간(일). (에스크로아닌 경우 해당사항 없음)', 'wskl'), 'type' => 'shorttext', 'default' => '', 'placeholder' => ''));
        static $methods;
        if (!$methods) {
            $methods = array('credit' => __('신용카드', 'wskl'), 'remit' => __('실시간 계좌이체', 'wskl'), 'virtual' => __('가상계좌 이체', 'wskl'), 'mobile' => __('모바일소액결제', 'wskl'));
        }
        switch ($extra_agency_slug) {
            case 'iamport':
                return array_merge($methods, array('kakao_pay' => __('카카오페이', 'wskl')));
        }
        return $methods;
    }
    public static function get_checkout_method_postfix()
    {
        return __('로 결제합니다.', 'wskl');
    }
    public static function add_api_request($api_request)
    {
        if (class_exists($api_request)) {
            new $api_request();
        }
    }
    public static function output_pay_gate_error()
    {
        printf('<div class="notice error"><p class="wskl-warning">%s: %s</p></div>', __('다음 PG 모듈이 발견되지 않았습니다.', 'wskl'), static::$pay_gate);
    }
    public static function get_pay_gates()
    {
        return array('payapp' => __('페이앱', 'wskl'), 'kcp' => __('KCP', 'wskl'), 'inicis' => __('이니시스', 'wskl'), 'ags' => __('올더게이트', 'wskl'), 'iamport' => __('아임포트', 'wskl'));
    }
}
WSKL_Payment_Gates::init();