public static function init() { if (!static::$predefined_tax_classes) { static::$predefined_tax_classes = array('Standard', 'Zero Rate'); } if (!static::$predefined_tax_rates) { static::$predefined_tax_rates = array(__('부가세율', 'wskl'), __('부가세율', 'wskl')); } /** 복합과세 옵션 업데이트. 복합과세가 활성화되면 관련 설정을 초기화. */ add_action('update_option_' . wskl_get_option_name('enable_combined_tax'), array(__CLASS__, 'callback_init_combined_tax_classes'), 10, 3); if (wskl_is_option_enabled('hide_display_cart_tax')) { /** 부가세 항목이 합계와 같이 출력되는 것을 숨긴다. */ add_filter('woocommerce_cart_totals_order_total_html', array(__CLASS__, 'callback_hide_include_tax')); } if (wskl_is_option_enabled('enable_combined_tax')) { /** 결제 단계에서 각 PG 마다 과세 설정에 대한 세부 옵션을 조정한다. */ add_filter('woocommerce_pay_form_args', array(__CLASS__, 'callback_pay_form_args'), 20); // 완전히 다른 세금 클래스인 경우는 이런 필터링을 걸쳐야 하지만, // 과세/비과세를 담당하는 클래스를 Standard, Zero Rate 로 잡으면 굳이 필요 없다. // /** 배송비의 부가세를 판단한다. 만일 비과세 상품으로만 쇼핑을 한 경우 배송비에 대해 부가세를 부여한다. */ // add_filter( 'woocommerce_package_rates', array( // __CLASS__, // 'callback_woocommerce_package_rates', // ), 10, 2 ); } }
public function init_settings() { parent::init_settings(); $options_to_import = array('payapp_user_id', 'payapp_link_key', 'payapp_link_val', 'checkout_methods'); foreach ($options_to_import as $key) { $this->settings[$key] = get_option(wskl_get_option_name($key)); } $this->settings['enabled'] = wskl_yes_or_no(wskl_is_option_enabled('enable_sym_pg') && wskl_get_option('pg_agency') == 'payapp' && in_array($this->checkout_method, $this->get_option('checkout_methods'))); }
function wskl_update_xdebug_session_id() { if (isset($_GET['XDEBUG_SESSION_START'])) { $session_id = absint($_GET['XDEBUG_SESSION_START']); if ($session_id) { update_option(wskl_get_option_name('develop_xdebug_session_id'), $session_id); } } }
/** * 이전 버전 기능 호환을 위해 */ private static function export_globals() { global $woocommerce_ver21_less; global $pay_gate_agency; global $sym_checkout_titles; global $sym_checkout_desc; global $sym_pg_agency; $woocommerce_ver21_less = version_compare(WOOCOMMERCE_VERSION, '2.1', '<') ? true : false; $pay_gate_agency = get_option(wskl_get_option_name('pg_agency')); $sym_checkout_titles = static::get_checkout_methods(); $sym_checkout_desc = static::get_checkout_method_postfix(); $sym_pg_agency = get_option(wskl_get_option_name('pg_agency')); }
/** * 메타 박스 렌더링 콜백 * * @param $post */ function woocommerce_order_shipping_details($post) { $agent_list = WSKL_Agent_Helper::get_agent_list(); $options = (array) get_option(wskl_get_option_name('shipping_companies')); $agents = array('not-available' => __('지정 안됨', 'wskl')); $current_agent = esc_html(get_post_meta($post->ID, 'wskl-delivery-agent', TRUE)); $current_tracking_number = esc_html(get_post_meta($post->ID, 'wskl-tracking-number', TRUE)); foreach ($options as $o) { if ($o) { $agents[$o] = $agent_list[$o]; } } ?> <ul class="totals"> <li> <label for="wskl-delivery-agent"><?php _e('배송업체:', 'sym-shipping-tracking'); ?> </label> <select id="wskl-delivery-agent" name="wskl-delivery-agent"> <?php foreach ($agents as $k => $v) { ?> <option value="<?php echo $k; ?> " <?php echo $current_agent == $k ? 'selected' : ''; ?> ><?php echo $v; ?> </option> <?php } ?> </select> </li> <li> <label for="wskl-tracking-number"><?php _e('송장번호:', 'sym-shipping-tracking'); ?> </label> <input type="text" id="wskl-tracking-number" name="wskl-tracking-number" placeholder="운송장 번호 입력" value="<?php echo $current_tracking_number; ?> "> </li> </ul> <?php }
function test_wskl_get_option() { $option_name = 'test_option'; $prefixed_option_name = wskl_get_option_name($option_name); update_option($prefixed_option_name, 'yes'); $this->assertTrue(get_option($prefixed_option_name) === 'yes'); $this->assertTrue('yes' === wskl_get_option($option_name)); update_option($prefixed_option_name, 'no'); $this->assertTrue(get_option($prefixed_option_name) === 'no'); $this->assertTrue('no' === wskl_get_option($option_name)); update_option($prefixed_option_name, '0'); $this->assertTrue(get_option($prefixed_option_name) === '0'); $this->assertTrue('0' === wskl_get_option($option_name)); update_option($prefixed_option_name, 'test-value'); $this->assertTrue(get_option($prefixed_option_name) === 'test-value'); $this->assertTrue('test-value' === wskl_get_option($option_name)); }
/** * Prepared for CloudFlare Flexible SSL. * * @return mixed|string|void */ function wskl_get_host_api_url() { $cassandra_ip_address = wskl_get_option('cassandra_ip_address', ''); $override_url = wskl_get_option('develop_cassandra_url'); if (empty($cassandra_ip_address)) { $hostname = parse_url(WSKL_HOST_API_URL, PHP_URL_HOST); if ($hostname) { $cassandra_ip_address = gethostbyname($hostname); update_option(wskl_get_option_name('cassandra_ip_address'), $cassandra_ip_address); } } if (wskl_debug_enabled() && !empty($override_url)) { return $override_url; } if ($cassandra_ip_address == '127.0.0.1') { return WSKL_ALTERNATE_HOST_API_URL; } return WSKL_HOST_API_URL; }
public static function callback_save_post($post_id, \WP_Post $post, $update) { if (!$update || defined('DOING_AJAX') || defined('DOING_AUTOSAVE')) { return; } $is_export_allowed = filter_var(wskl_POST('allow-export'), FILTER_VALIDATE_BOOLEAN); if (!$is_export_allowed) { return; } $auth = new WSKL_Auth_Info('marketing'); if ($auth->is_verified()) { $key_type = $auth->get_key_type(); $key_value = $auth->get_key_value(); $user_id = $auth->get_oir()->get_user_id(); $site_url = site_url(); $remote_post_id = PostAPI::send_post($key_type, $key_value, $site_url, $user_id, $post_id); if ($remote_post_id) { $metadata = array('post_modified' => $post->post_modified, 'post_modified_gmt' => $post->post_modified_gmt, 'exported' => time(), 'remote_post_id' => $remote_post_id); update_post_meta($post_id, wskl_get_option_name('post_export_metadata'), $metadata); } else { error_log('callback_save_post() finished unsuccessfully!'); } } }
/** * 해당 옵션을 boolean 으로 해석해 true, false 로 리턴 * * @author changwoo * * @param $option_name string prefix 문자열을 붙이지 않은 옵션 이름. * * @return boolean 해당 옵션 */ function wskl_is_option_enabled($option_name) { $value = get_option(wskl_get_option_name($option_name)); return filter_var($value, FILTER_VALIDATE_BOOLEAN); }
function update_test_cassandra_url() { update_option(wskl_get_option_name('develop_cassandra_url'), DEFAULT_CASSANDRA_URL); }
public function get_option_name($key) { return wskl_get_option_name($this->id . '_' . $key); }
public static function set_target_domain($value) { update_option(wskl_get_option_name('ip_block_target'), site_url()); return $value; }
public static function service_social_login_naver() { if (isset($_GET['sym-api']) && $_GET['sym-api'] == 'service-social-login-naver') { update_option(WSKL_PREFIX . 'sym-api-' . $_SERVER['HTTP_CLIENT_IP'], 'service-social-login-naver'); } if (isset($_GET['sym-api']) && $_GET['sym-api'] == 'service-social-login-naver' || isset($_GET['code']) && get_option(WSKL_PREFIX . 'sym-api-' . $_SERVER['HTTP_CLIENT_IP']) == 'service-social-login-naver') { require 'home-social-login/http.php'; require 'home-social-login/oauth_client.php'; $client = new oauth_client_class(); $client->debug = FALSE; $client->debug_http = TRUE; $client->server = 'Naver'; $client->redirect_uri = site_url() . '/index.php'; $client->client_id = get_option(wskl_get_option_name('naver_client_id')); $client->client_secret = get_option(wskl_get_option_name('naver_client_secret')); if (strlen($client->client_id) == 0 || strlen($client->client_secret) == 0) { wskl_sym__alert('네이버 연동키값을 확인해 주세요.'); } if ($login == 'Y') { unset($_SESSION['OAUTH_STATE']); $client->ResetAccessToken(); } /* API permissions */ if ($success = $client->Initialize()) { if ($success = $client->Process()) { if (strlen($client->access_token)) { $success = $client->CallAPI('https://apis.naver.com/nidlogin/nid/getUserProfile.xml', 'POST', array('mode' => 'userinfo'), array('FailOnAccessError' => TRUE), $user); } } $success = $client->Finalize($success); } if ($client->exit) { exit; } if ($success) { $xml = simplexml_load_string($user); if ($xml->result->resultcode == '00') { $client->GetAccessToken($AccessToken); $mb_gubun = 'naver'; $mb_id = $xml->response->enc_id; $mb_name = $xml->response->nickname; $mb_nick = $xml->response->nickname; $mb_email = $xml->response->email; $token_value = $AccessToken['value']; $token_refresh = $AccessToken['refresh']; $token_secret = ''; //$client->ResetAccessToken(); if (!trim($mb_id) || !trim($token_value)) { wskl_sym__alert("정보가 제대로 넘어오지 않아 오류가 발생했습니다."); } $token_array = urlencode(static::encryptIt($mb_gubun . '|' . substr(str_replace('|', '', $mb_id), 0, 18) . '|' . $mb_name . '|' . $mb_nick . '|' . $mb_email)); $redirect_url = '/?sym-api=process-social-login&token=' . $token_array; wp_redirect($redirect_url); exit; } else { $error = htmlspecialchars($xml->result->resultcode); alert_close($error); } } else { $error = htmlspecialchars($client->error); alert_close($error); } } }
<?php require_once WSKL_PATH . '/includes/lib/auth/class-wskl-auth-info.php'; require_once WSKL_PATH . '/includes/lib/cassandra-php/class-api-handler.php'; use wskl\lib\cassandra\PostAPI; if (!defined('LAST_POST_EXPORT')) { define('LAST_POST_EXPORT', wskl_get_option_name('last_post_export')); } class WSKL_Post_Export { public static function initialize() { $auth_info = new WSKL_Auth_Info('marketing'); if (!$auth_info->is_verified()) { self::not_authorized_output(); return; } /** * @see wordpress/wp-admin/includes/meta-boxes.php post_submit_meta_box() */ add_action('post_submitbox_misc_actions', array(__CLASS__, 'callback_post_submitbox_misc_actions'), 99, 1); add_action('save_post', array(__CLASS__, 'callback_save_post'), 99, 3); } public static function not_authorized_output() { } public static function callback_post_submitbox_misc_actions(\WP_Post $post) { $context = array('last_export' => get_post_meta($post->ID, LAST_POST_EXPORT, TRUE)); $default_path = __DIR__ . '/templates/'; wc_get_template('post_submitbox_misc.php', $context, '', $default_path);
public function test_url_is_expected() { $opt = get_option(wskl_get_option_name('develop_cassandra_url')); $this->assertEquals($opt, 'http://localhost/wrong/api/url/wrong'); }
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> <a href="https://www.dabory.co.kr/cs/service/" target="_blank">기술지원 요청 바로가기</a> <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' => __(' 사용하실 결제방식을 지정해 주십시오.', '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' => __(' 사용하실 결제방식을 지정해 주십시오.', '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> A.Site Code와 Site Key를 입력하고 저장합니다.</br> 2. 당 플러그인의 KCP 홈 폴더중 “bin” 폴더에 있는 pp_cli 화일의 실행권한을 755로 바꾸어 줍니다. 그대로 둘 경우 결제 않됨.</br> 예)/public_html/wp-content/plugins/wskl/includes/lib/homekcp/bin/pp_cli</br> (1) ssh로 로그인 후, 해당폴더에서 "chmod 755 pp_cli" 실행 또는</br> (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> A. 키패스워드(숫자 4자리)와 상점 아이디(10자리)를 해당설정에 입력하고 저장합니다.</br> B.키화일 등 4개 (keypass.enc, mcert.pem, mpriv.pem, readme.txt)</br> 2. 당 플러그인의 이니페이 홈 폴더중 “key” 폴더에 상점아이디와 동일한 이름의 서브 디렉터리를 만듭니다(대소문자 구별함.).</br> 예)/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> 아임포트 회원로그인 후 확인한 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/> 각각의 하위메뉴로 들어가서 활성화에 체크하여 주십시오. <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' => __(' [페이스북] App ID', 'wskl'), 'description' => __('페이스북의 App ID 를 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'fb_app_secret', 'label' => __(' [페이스북] App Secret', 'wskl'), 'description' => __('페이스북의 App Secret을 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'fb_login_link_text', 'label' => __(' [페이스북]링크 텍스트', 'wskl'), 'description' => __('로그인 링크에 보여질 텍스트 또는 이미지 태그를 입력하십시오. 기본 아이콘을 사용하려면 \'[icon]\'으로 입력하세요.', 'wskl'), 'type' => 'textarea', 'default' => '[icon]', 'placeholder' => ''), array('id' => 'dummy_13', 'label' => __(' [페이스북] 키발급', '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' => __(' [네이버] Client ID', 'wskl'), 'description' => __('네이버의 Client ID를 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'naver_client_secret', 'label' => __(' [네이버] Client Secret', 'wskl'), 'description' => __('네이버의 Client Secret 을 입력하십시오', 'wskl'), 'type' => 'longtext', 'default' => '', 'placeholder' => ''), array('id' => 'naver_login_link_text', 'label' => __(' [네이버] 링크 텍스트', 'wskl'), 'description' => __('로그인 링크에 보여질 텍스트 또는 이미지 태그를 입력하십시오. 기본 아이콘을 사용하려면 \'[icon]\'으로 입력하세요.', 'wskl'), 'type' => 'textarea', 'default' => '[icon]', 'placeholder' => ''), array('id' => 'dummy_14', 'label' => __(' [네이버] 키발급', '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; }
/** * 로그인 필드 값이 없는 경우는 크론 작업 시간으로 채워 줌. * * @used-by WSKL_Inactive_Accounts::do_interval_jobs() */ public function fill_user_login_field() { $target_role = wskl_get_option('inactive-accounts_target_role'); if (!$target_role) { $message = __METHOD__ . ": Values are net properly set.\n"; $message .= " target_role={$target_role}"; error_log($message); return; } // Get users whose last_login meta keys are missing, or their meta values are 0 or blank. $key = wskl_get_option_name('last_login'); $args = array('role' => $target_role, 'meta_query' => array('relation' => 'OR', array('key' => $key, 'value' => 0, 'type' => 'NUMERIC', 'compare' => 'NOT EXISTS'), array('key' => $key, 'value' => 0, 'type' => 'NUMERIC', 'compare' => '='), array('key' => $key, 'value' => '', 'type' => 'CHAR', 'compare' => '='))); $query = new WP_User_Query($args); $results = $query->get_results(); /** @var WP_User $user */ foreach ($results as $user) { update_user_meta($user->ID, $key, $this->cron_job_id); } }
/** * 휴면 처리 전, 통지해야 할 회원의 목록 * - $min_timestamp <= timestamp < $max_timestamp * - 이전에 통지 받지 않은 회원. * * @param int $min_timestamp 통지 기준 최소 timestamp * @param int $max_timestamp 통지 기준 최대 timestamp * @param string|array $role * * @return array WP_User 객체의 array */ function wskl_get_alert_staged_users($min_timestamp, $max_timestamp, $role) { /** @var \wpdb $wpdb */ global $wpdb; $key_name = wskl_get_option_name('last_login'); if (is_array($role)) { $role_exp = '(' . implode('|', $role) . ')'; } else { $role_exp = "({$role})"; } $query = new WP_User_Query(array('meta_query' => array('relation' => 'AND', array('key' => $key_name, 'value' => $max_timestamp, 'type' => 'NUMERIC', 'compare' => '<'), array('key' => $key_name, 'value' => $min_timestamp, 'type' => 'NUMERIC', 'compare' => '>='), array('key' => wskl_get_option_name('inactive-accounts_alerted'), 'value' => 0, 'type' => 'NUMERIC', 'compare' => 'NOT EXISTS'), array('key' => "{$wpdb->prefix}capabilities", 'value' => $role_exp, 'compare' => 'REGEXP')))); return $query->get_results(); }
public static function get_auth_section_settings() { $section = array(array('type' => 'title', 'title' => __('서비스 제공자 설정', 'wskl'), 'id' => 'provider_options'), array('id' => wskl_get_option_name('sms_provider_id'), 'type' => 'text', 'title' => '아이디', 'desc' => '', 'default' => ''), array('id' => wskl_get_option_name('sms_provider_password'), 'type' => 'password', 'title' => '패스워드', 'desc' => '', 'default' => ''), array('type' => 'sms_provider_additional'), array('type' => 'sectionend', 'id' => 'provider_options')); return apply_filters('dabory_sms_auth_section_settings', $section); }
/** * BACS 지불에 대해 계좌 정보 알림 * * @return array */ private static function get_settings_payment_bacs() { return array(array('id' => 'payment_bacs_options', 'title' => __('BACS 결제', 'wskl') . ' ' . __('설정', 'wskl'), 'desc' => __('무통장입금(BACS)으로 결제시 별도의 문자 메세지를 전송합니다. 예) 입금 계좌 정보 안내.', 'wskl'), 'type' => 'title'), array('id' => wskl_get_option_name('sms_payment-bacs_enabled'), 'title' => __('활성화', 'wskl'), 'desc' => __('고객에게 문자 메시지로 통보합니다.', 'wskl'), 'type' => 'checkbox'), array('id' => wskl_get_option_name('sms_payment-bacs_send_to_managers'), 'title' => __('상점 관리자에게 문자 전송', 'wskl'), 'desc' => __('같은 내용을 상점 관리자에게도 문자 메시지로 통보합니다.', 'wskl'), 'type' => 'checkbox'), array('id' => wskl_get_option_name('sms_payment-bacs_message_title'), 'title' => __('메시지 제목', 'wskl'), 'desc' => __('단문메시지(SMS)에서는 생략됩니다 ', 'wskl'), 'type' => 'text', 'default' => '{site_title} 무통장입금 안내'), array('id' => wskl_get_option_name('sms_payment-bacs_message_content'), 'title' => __('메시지 내용', 'wskl'), 'desc' => __('메시지 본문 템플릿을 작성하세요. 단문메시지(SMS) 1건으로 처리 되지 않는 긴 문자는 장문메시지(LMS)로 전송됩니다.', 'wskl'), 'type' => 'textarea', 'default' => '[{site_title}] 주문 감사드립니다. #{order_number} - {order_date}. 입금정보 **은행 1234-56-7890 예금주', 'custom_attributes' => array('rows' => 7, 'cols' => 80)), array('type' => 'order_magic_text_information'), array('type' => 'sectionend', 'id' => 'payment-bacs_options')); }
function pay_callback() { global $woocommerce; global $woocommerce_ver21_less; @ob_clean(); header('Content-type: text/html; charset=euc-kr'); foreach ($_POST as $key => $row) { $_POST[$key] = iconv("UTF-8", "EUC-KR", $row); } $order_id = $_POST["oid"]; $order = new WC_Order($order_id); /* INIsecurepay.php * * 이니페이 플러그인을 통해 요청된 지불을 처리한다. * 지불 요청을 처리한다. * 코드에 대한 자세한 설명은 매뉴얼을 참조하십시오. * <주의> 구매자의 세션을 반드시 체크하도록하여 부정거래를 방지하여 주십시요. * * http://www.inicis.com * Copyright (C) 2006 Inicis Co., Ltd. All rights reserved. */ /**************************** * 0. 세션 시작 * ****************************/ // session_start(); //주의:파일 최상단에 위치시켜주세요!! $inicis_session_vars = (array) get_user_meta(get_current_user_id(), wskl_get_option_name('inicis_session_vars'), TRUE); /************************** * 1. 라이브러리 인클루드 * **************************/ require_once dirname(__FILE__) . '/homeinicis/libs/INILib.php'; /*************************************** * 2. INIpay50 클래스의 인스턴스 생성 * ***************************************/ $inipay = new INIpay50(); /********************* * 3. 지불 정보 설정 * *********************/ //$inipay->SetField("inipayhome", "/home/ts/www/INIpay50"); // 이니페이 홈디렉터리(상점수정 필요) // 이니페이 홈디렉터리(상점수정 필요) $inipay->SetField("inipayhome", dirname(__FILE__) . '/homeinicis'); // 고정 (절대 수정 불가) $inipay->SetField("type", "securepay"); // 고정 (절대 수정 불가) $inipay->SetField("pgid", "INIphp" . $pgid); // 고정 (절대 수정 불가) $inipay->SetField("subpgip", "203.238.3.10"); // 키패스워드(상점아이디에 따라 변경) //$inipay->SetField( "admin", $_SESSION['INI_ADMIN'] ); // 키패스워드(상점아이디에 따라 변경) $inipay->SetField("admin", $inicis_session_vars['INI_ADMIN']); // 로그모드("true"로 설정하면 상세로그가 생성됨.) $inipay->SetField("debug", "true"); // INIpay User ID (절대 수정 불가) $inipay->SetField("uid", $uid); // 상품명 $inipay->SetField("goodname", $goodname); // 화폐단위 $inipay->SetField("currency", $currency); //$inipay->SetField( "mid", $_SESSION['INI_MID'] ); // 상점아이디 // 상점아이디 $inipay->SetField("mid", $inicis_session_vars['INI_MID']); // 웹페이지 위변조용 RN값 //$inipay->SetField( "rn", $_SESSION['INI_RN'] ); // 웹페이지 위변조용 RN값 $inipay->SetField("rn", $inicis_session_vars['INI_RN']); //$inipay->SetField( "price", $_SESSION['INI_PRICE'] ); // 가격 // 가격 $inipay->SetField("price", $inicis_session_vars['INI_PRICE']); //$inipay->SetField( "enctype", // $_SESSION['INI_ENCTYPE'] );// 고정 (절대 수정 불가) // 고정 (절대 수정 불가) $inipay->SetField("enctype", $inicis_session_vars['INI_ENCTYPE']); /*---------------------------------------------------------------------------------------- price 등의 중요데이터는 브라우저상의 위변조여부를 반드시 확인하셔야 합니다. 결제 요청페이지에서 요청된 금액과 실제 결제가 이루어질 금액을 반드시 비교하여 처리하십시오. 설치 메뉴얼 2장의 결제 처리페이지 작성부분의 보안경고 부분을 확인하시기 바랍니다. 적용참조문서: 이니시스홈페이지->가맹점기술지원자료실->기타자료실 의 '결제 처리 페이지 상에 결제 금액 변조 유무에 대한 체크' 문서를 참조하시기 바랍니다. 예제) 원 상품 가격 변수를 OriginalPrice 하고 원 가격 정보를 리턴하는 함수를 Return_OrgPrice()라 가정하면 다음 같이 적용하여 원가격과 웹브라우저에서 Post되어 넘어온 가격을 비교 한다. $OriginalPrice = Return_OrgPrice(); $PostPrice = $_SESSION['INI_PRICE']; if ( $OriginalPrice != $PostPrice ) { //결제 진행을 중단하고 금액 변경 가능성에 대한 메시지 출력 처리 //처리 종료 } ----------------------------------------------------------------------------------------*/ $inipay->SetField("buyername", $buyername); // 구매자 명 // 구매자 연락처(휴대폰 번호 또는 유선전화번호) $inipay->SetField("buyertel", $buyertel); // 구매자 이메일 주소 $inipay->SetField("buyeremail", $buyeremail); // 지불방법 (절대 수정 불가) $inipay->SetField("paymethod", $paymethod); // 암호문 $inipay->SetField("encrypted", $encrypted); // 암호문 $inipay->SetField("sessionkey", $sessionkey); // 실제 서비스되는 상점 SITE URL로 변경할것 // $inipay->SetField( "url", $_SESSION['inicis_url'] ); $inipay->SetField("url", $inicis_session_vars['inicis_url']); $inipay->SetField("cardcode", $cardcode); // 카드코드 리턴 // 보호자 이메일 주소(핸드폰 , 전화결제시에 14세 미만의 고객이 결제하면 부모 이메일로 결제 내용통보 의무, 다른결제 수단 사용시에 삭제 가능) $inipay->SetField("parentemail", $parentemail); /*-----------------------------------------------------------------* * 수취인 정보 * * *-----------------------------------------------------------------* * 실물배송을 하는 상점의 경우에 사용되는 필드들이며 * * 아래의 값들은 INIsecurepay.html 페이지에서 포스트 되도록 * * 필드를 만들어 주도록 하십시요. * * 컨텐츠 제공업체의 경우 삭제하셔도 무방합니다. * *-----------------------------------------------------------------*/ $inipay->SetField("recvname", $recvname); // 수취인 명 $inipay->SetField("recvtel", $recvtel); // 수취인 연락처 $inipay->SetField("recvaddr", $recvaddr); // 수취인 주소 $inipay->SetField("recvpostnum", $recvpostnum); // 수취인 우편번호 $inipay->SetField("recvmsg", $recvmsg); // 전달 메세지 $inipay->SetField("joincard", $joincard); // 제휴카드코드 $inipay->SetField("joinexpire", $joinexpire); // 제휴카드유효기간 $inipay->SetField("id_customer", $id_customer); //user_id $inipay->SetField("log", "false"); // 로깅은 생략합니다. /**************** * 4. 지불 요청 * ****************/ $inipay->startAction(); /**************************************************************************************************************** * 5. 결제 결과 * * 1 모든 결제 수단에 공통되는 결제 결과 데이터 * 거래번호 : $inipay->GetResult('TID') * 결과코드 : $inipay->GetResult('ResultCode') ("00"이면 지불 성공) * 결과내용 : $inipay->GetResult('ResultMsg') (지불결과에 대한 설명) * 지불방법 : $inipay->GetResult('PayMethod') (매뉴얼 참조) * 상점주문번호 : $inipay->GetResult('MOID') * 결제완료금액 : $inipay->GetResult('TotPrice') * * 결제 되는 금액 =>원상품가격과 결제결과금액과 비교하여 금액이 동일하지 않다면 * 결제 금액의 위변조가 의심됨으로 정상적인 처리가 되지않도록 처리 바랍니다. (해당 거래 취소 처리) * * * 2. 신용카드,ISP,핸드폰, 전화 결제, 은행계좌이체, OK CASH BAG Point 결제 결과 데이터 * (무통장입금 , 문화 상품권 포함) * 이니시스 승인날짜 : $inipay->GetResult('ApplDate') (YYYYMMDD) * 이니시스 승인시각 : $inipay->GetResult('ApplTime') (HHMMSS) * * 3. 신용카드 결제 결과 데이터 * * 신용카드 승인번호 : $inipay->GetResult('ApplNum') * 할부기간 : $inipay->GetResult('CARD_Quota') * 무이자할부 여부 : $inipay->GetResult('CARD_Interest') ("1"이면 무이자할부) * 신용카드사 코드 : $inipay->GetResult('CARD_Code') (매뉴얼 참조) * 카드발급사 코드 : $inipay->GetResult('CARD_BankCode') (매뉴얼 참조) * 본인인증 수행여부 : $inipay->GetResult('CARD_AuthType') ("00"이면 수행) * 각종 이벤트 적용 여부 : $inipay->GetResult('EventCode') * * ** 달러결제 시 통화코드와 환률 정보 ** * 해당 통화코드 : $inipay->GetResult('OrgCurrency') * 환율 : $inipay->GetResult('ExchangeRate') * * 아래는 "신용카드 및 OK CASH BAG 복합결제" 또는"신용카드 지불시에 OK CASH BAG적립"시에 추가되는 데이터 * OK Cashbag 적립 승인번호 : $inipay->GetResult('OCB_SaveApplNum') * OK Cashbag 사용 승인번호 : $inipay->GetResult('OCB_PayApplNum') * OK Cashbag 승인일시 : $inipay->GetResult('OCB_ApplDate') (YYYYMMDDHHMMSS) * OCB 카드번호 : $inipay->GetResult('OCB_Num') * OK Cashbag 복합결재시 신용카드 지불금액 : $inipay->GetResult('CARD_ApplPrice') * OK Cashbag 복합결재시 포인트 지불금액 : $inipay->GetResult('OCB_PayPrice') * * 4. 실시간 계좌이체 결제 결과 데이터 * * 은행코드 : $inipay->GetResult('ACCT_BankCode') * 현금영수증 발행결과코드 : $inipay->GetResult('CSHR_ResultCode') * 현금영수증 발행구분코드 : $inipay->GetResult('CSHR_Type') * * * 5. OK CASH BAG 결제수단을 이용시에만 결제 결과 데이터 * OK Cashbag 적립 승인번호 : $inipay->GetResult('OCB_SaveApplNum') * OK Cashbag 사용 승인번호 : $inipay->GetResult('OCB_PayApplNum') * OK Cashbag 승인일시 : $inipay->GetResult('OCB_ApplDate') (YYYYMMDDHHMMSS) * OCB 카드번호 : $inipay->GetResult('OCB_Num') * * 6. 무통장 입금 결제 결과 데이터 * * 가상계좌 채번에 사용된 주민번호 : $inipay->GetResult('VACT_RegNum') * * 가상계좌 번호 : $inipay->GetResult('VACT_Num') * * 입금할 은행 코드 : $inipay->GetResult('VACT_BankCode') * * 입금예정일 : $inipay->GetResult('VACT_Date') (YYYYMMDD) * * 송금자 명 : $inipay->GetResult('VACT_InputName') * * 예금주 명 : $inipay->GetResult('VACT_Name') * * * * 7. 핸드폰, 전화 결제 결과 데이터( "실패 내역 자세히 보기"에서 필요 , 상점에서는 필요없는 정보임) * * 전화결제 사업자 코드 : $inipay->GetResult('HPP_GWCode') * * * * 8. 핸드폰 결제 결과 데이터 * * 휴대폰 번호 : $inipay->GetResult('HPP_Num') (핸드폰 결제에 사용된 휴대폰번호) * * * * 9. 전화 결제 결과 데이터 * * 전화번호 : $inipay->GetResult('ARSB_Num') (전화결제에 사용된 전화번호) * * * * 10. 문화 상품권 결제 결과 데이터 * * 컬쳐 랜드 ID : $inipay->GetResult('CULT_UserID') * * * * 11. K-merce 상품권 결제 결과 데이터 (K-merce ID, 틴캐시 아이디 공통사용) * * K-merce ID : $inipay->GetResult('CULT_UserID') * * * * 12. 모든 결제 수단에 대해 결제 실패시에만 결제 결과 데이터 * * 에러코드 : $inipay->GetResult('ResultErrorCode') * * * * 13.현금영수증 발급 결과코드 (은행계좌이체시에만 리턴) * * $inipay->GetResult('CSHR_ResultCode') * * * * 14.틴캐시 잔액 데이터 * * $inipay->GetResult('TEEN_Remains') * * 틴캐시 ID : $inipay->GetResult('CULT_UserID') * * 15.게임문화 상품권 * * 사용 카드 갯수 : $inipay->GetResult('GAMG_Cnt') * * * ****************************************************************************************************************/ /******************************************************************* * 7. DB연동 실패 시 강제취소 * * * * 지불 결과를 DB 등에 저장하거나 기타 작업을 수행하다가 실패하는 * * 경우, 아래의 코드를 참조하여 이미 지불된 거래를 취소하는 코드를 * * 작성합니다. * *******************************************************************/ /* $cancelFlag = "false"; // $cancelFlag를 "ture"로 변경하는 condition 판단은 개별적으로 // 수행하여 주십시오. if($cancelFlag == "true") { $TID = $inipay->GetResult("TID"); $inipay->SetField("type", "cancel"); // 고정 $inipay->SetField("tid", $TID); // 고정 $inipay->SetField("cancelmsg", "DB FAIL"); // 취소사유 $inipay->startAction(); if($inipay->GetResult('ResultCode') == "00") { $inipay->MakeTXErrMsg(MERCHANT_DB_ERR,"Merchant DB FAIL"); } } */ //print_r($inipay->GetResult('ResultCode')); if ($woocommerce_ver21_less) { // $return_url = add_query_arg( 'key', $order->order_key, // add_query_arg( 'order', $order_id, // get_permalink( woocommerce_get_page_id( 'thanks' ) ) ) ); $return_url = add_query_arg(array('key' => $order->order_key, 'order' => $order_id), get_permalink(woocommerce_get_page_id('thanks'))); } else { $return_url = $this->get_return_url($order); } if ($inipay->GetResult('ResultCode') == "00") { $order->add_order_note(sprintf(__('결제가 성공적으로 처리됨.<br/>결제방법: %s<br/>이니시스 TID: %s. 발생시각: %s.', 'wskl'), $this->method, '111', date('Y-m-d H:i:s'))); // Complete payment, reduce stock levels & remove cart $order->payment_complete(); $order->reduce_order_stock(); $woocommerce->cart->empty_cart(); } else { // 결제실패에 따른 상점처리부분 $res_msg = iconv('euc-kr', 'utf-8', $inipay->GetResult('ResultMsg')); $order->update_status('failed', sprintf(__('결제처리 안됨.<br/>-에러메시지 : %s<br/>-발생시각: %s.', 'wskl'), $res_msg, date('Y-m-d H-i-s'))); //$cart_url = $woocommerce->cart->get_cart_url(); // wp_redirect($cart_url); } // inicis_session_vars 제거 delete_user_meta(get_current_user_id(), wskl_get_option_name('inicis_session_vars')); ?> <body onload="pay_info.submit();"> <form name="pay_info" method="post" action="<?php echo $return_url; ?> "> <input type="hidden" name="order_id" value="<?php echo $order_id; ?> "> <input type="hidden" name="TID" value="<?php echo $inipay->GetResult('TID'); ?> "> <input type="hidden" name="ResultCode" value="<?php echo $inipay->GetResult('ResultCode'); ?> "> <input type="hidden" name="ResultMsg" value="<?php echo $inipay->GetResult('ResultMsg'); ?> "> <input type="hidden" name="PayMethod" value="<?php echo $inipay->GetResult('PayMethod'); ?> "> <input type="hidden" name="MOID" value="<?php echo $inipay->GetResult('MOID'); ?> "> <input type="hidden" name="TotPrice" value="<?php echo $inipay->GetResult('TotPrice'); ?> "> <input type="hidden" name="MID" value="<?php echo $inipay->GetResult('MID'); ?> "> <!-- 아래는 프로그램에서 값이$inipay에서 값이 넘어오지 않으므로 무시해도 됨--> <input type="hidden" name="ResultErrorCode" value="<?php echo $inipay->GetResult('ResultErrorCode'); ?> "> <input type="hidden" name="GoodName" value="<?php echo $inipay->GetResult('GoodName'); ?> "> <input type="hidden" name="BuyerName" value="<?php echo $inipay->GetResult('BuyerName'); ?> "> <input type="hidden" name="BuyerTel" value="<?php echo $inipay->GetResult('BuyerTel'); ?> "> <input type="hidden" name="BuyerEmail" value="<?php echo $inipay->GetResult('BuyerEmail'); ?> "> <input type="hidden" name="HPP_GWCode" value="<?php echo $inipay->GetResult('HPP_GWCode'); ?> "> </form> </body> <?php ///wp_redirect( $return_url); exit; }
/** * 특정 테이블 컬럼에 사용자 정의 자료 출력. * * @param $column * @param $post_id */ public static function add_payer_name_column_details($column, $post_id) { if (self::$bacs_payer_name_in_own_column) { if ($column == 'bacs_payer_name') { $payer_name = get_post_meta($post_id, wskl_get_option_name('bacs_payer_name'), TRUE); echo esc_html($payer_name); } } else { if ($column == 'order_title') { $payer_name = get_post_meta($post_id, wskl_get_option_name('bacs_payer_name'), TRUE); if (!empty($payer_name)) { echo __('입금자', 'wskl') . ': ' . esc_html($payer_name); } } } }
<?php //print_r (get_option( wskl_get_option_name( 'checkout_methods') ) ); $sym_pg_title = 'Inicis'; $sym_checkout_methods = (array) get_option(wskl_get_option_name('checkout_methods')); foreach ($sym_checkout_methods as $key => $value) { //echo "key=". $key. ":value=". $value. "<br>"; switch ($value) { case 'credit': add_action('plugins_loaded', 'init_inicis_credit'); function init_inicis_credit() { if (!class_exists('WC_Payment_Gateway')) { return; } class WC_Inicis_Credit extends WC_Inicis_Common { public $method = "credit"; } function add_inicis_credit($methods) { $methods[] = 'WC_Inicis_Credit'; return $methods; } add_filter('woocommerce_payment_gateways', 'add_inicis_credit'); } break; case 'remit': add_action('plugins_loaded', 'init_inicis_remit'); function init_inicis_remit() {
private static function get_setting_value(array &$assoc, $scenario, $what) { return wskl_get_from_assoc($assoc, wskl_get_option_name("sms_{$scenario}_{$what}")); }