reasonableframework/route/orderpay.pgkcp.php

151 lines
6.4 KiB
PHP
Raw Normal View History

2018-08-24 16:19:25 +00:00
<?php
/**
* @file orderpay.pgkcp.php
* @date 2018-08-25
* @author Go Namhyeon <gnh1201@gmail.com>
2018-08-24 16:43:43 +00:00
* @brief KCP PG(Payment Gateway) Controller
2018-08-24 16:19:25 +00:00
*/
if(!defined("_DEF_RSF_")) set_error_exit("do not allow access");
2018-08-24 16:37:39 +00:00
// detect CSRF attack
2018-08-26 17:23:20 +00:00
//if(check_token_abuse_by_requests("_token")) {
// set_error("Access denied. (Expired session or Website attacker)");
// show_errors();
//}
2018-08-24 16:37:39 +00:00
2018-08-24 16:19:25 +00:00
// load KCP PG Helper
2018-08-26 16:17:12 +00:00
loadHelper("pgkcp.lnk");
2018-08-24 16:19:25 +00:00
2018-08-26 17:23:20 +00:00
// load javascript loader
loadHelper("JSLoader.class");
2018-08-26 16:13:24 +00:00
// load PG KCP configuration
$pgkcp_config = get_pgkcp_config();
// initalize data
2018-08-26 17:23:20 +00:00
$data['payinfo'] = array(
"payinfo" => array()
);
2018-08-24 16:19:25 +00:00
// 1. 주문 정보 입력: 결제에 필요한 주문 정보를 입력 및 설정합니다.
2018-08-24 16:27:27 +00:00
$fieldnames = array(
"pay_method", // 지불 방법
"pay_method_alias", // 지불 방법 별칭
"ordr_idxx", // 주문 번호
"good_name", // 상품 이름
"good_mny", // 결제 금액
"buyr_name", // 주문자 이름
"buyr_mail", // 주문자 전자우편(이메일) 주소
"buyr_tel1", // 주문자 연락처 1
"buyr_tel2" // 주문자 연락처 2
);
2018-08-24 16:19:25 +00:00
foreach($fieldnames as $name) {
2018-08-26 17:23:20 +00:00
$data['payinfo'][$name] = get_requested_value($name);
2018-08-24 16:19:25 +00:00
}
// pay_method 처리
2018-08-26 17:23:20 +00:00
$pay_method = get_value_in_array("pay_method", $data['payinfo']);;
$pay_method_alias = get_value_in_array("pay_method_alias", $data['payinfo']);
2018-08-24 16:19:25 +00:00
$pay_method_rules = array(
"CRE" => "100000000000", // 신용카드
"ACC" => "010000000000", // 계좌이체
"VAC" => "001000000000", // 가상계좌
"POI" => "000100000000", // 포인트
"PHO" => "000010000000", // 휴대폰
"GIF" => "000000001000", // 상품권
"ARS" => "000000000010", // ARS
"CAV" => "111000000000" // 신용카드/계좌이체/가상계좌
);
foreach($pay_method_rules as $k=>$v) {
if(in_array($pay_method_alias, $pay_method_rules)) {
$pay_method = $pay_method_rules[$pay_method_alias];
2018-08-26 17:23:20 +00:00
$data['payinfo']['pay_method'] = $pay_method;
2018-08-24 16:19:25 +00:00
}
}
// 2.가맹점 필수 정보 설정: 승인(pay)/취소,매입(mod)
2018-08-24 16:27:27 +00:00
$req_tx = get_requested_value("req_tx");
2018-08-26 17:23:20 +00:00
$data['payinfo']['req_tx'] = in_array($req_tx, array("pay", "mod")) ? $req_tx : "pay";
$data['payinfo']['site_cd'] = $g_conf_site_cd;
$data['payinfo']['site_name'] = $g_conf_site_name;
2018-08-24 16:19:25 +00:00
// 할부옵션: 0 ~ 18 개월까지, 50,000원 이상만 가능
2018-08-26 17:23:20 +00:00
$data['payinfo']['quotaopt'] = get_requested_value("quotaopt");
if(array_key_empty("quotaopt", $data['payinfo'])) {
$data['payinfo']['quotaopt'] = 12;
2018-08-24 16:32:03 +00:00
}
2018-08-24 16:19:25 +00:00
// 결제 금액/화폐단위: 필수항목
2018-08-24 16:32:03 +00:00
$currency = get_requested_value("currency");
2018-08-26 17:23:20 +00:00
if(array_key_empty("currency", $data['payinfo'])) {
$data['payinfo']['currency'] = "WON";
2018-08-24 16:32:03 +00:00
}
2018-08-24 16:19:25 +00:00
// 3. 변경 제한 영역: 표준 웹 설정 영역
2018-08-26 17:23:20 +00:00
$data['payinfo']['module_type'] = $module_type;
$data['payinfo']['res_cd'] = "";
$data['payinfo']['res_msg'] = "";
$data['payinfo']['enc_info'] = "";
$data['payinfo']['enc_data'] = "";
$data['payinfo']['ret_pay_method'] = "";
$data['payinfo']['ordr_chk'] = ""; // 주문정보 검증 관련 정보
2018-08-24 16:19:25 +00:00
// 변경 제한 영역: 현금영수증 관련 정보
2018-08-26 17:23:20 +00:00
$data['payinfo']['cash_yn'] = "";
$data['payinfo']['cash_tr_code'] = "";
$data['payinfo']['cash_id_info'] = "";
2018-08-24 16:19:25 +00:00
// 변경 제한 영역: 2012년 8월 18일 전자상거래법 개정 (0:일회성 1:기간설정(ex 1:2012010120120131))
2018-08-26 17:23:20 +00:00
$data['payinfo']['good_expr'] = "";
2018-08-24 16:19:25 +00:00
// 4. 옵션 정보: 결제에 필요한 추가 옵션 정보를 입력 및 설정합니다.
$default_options = array(
"used_card_YN" => "Y", // 사용카드 설정 여부 파라미터
"used_card" => "CCBC:CCKM:CCSS", // 사용카드 설정 파라미터
"used_card_CCXX" => "Y", // 해외카드 구분 파라미터 ((해외비자, 해외마스터, 해외JCB)
"save_ocb" => "Y", // 신용카드 결제시 OK캐쉬백 적립 여부
"fix_inst" => "07", // 고정 할부 개월 수 선택
"kcp_noint" => "", // 설정할부: '', 일반할부: 'N', 무이자할부: 'Y'
"kcp_noint_quota" => "CCBC-02:03:06,CCKM-03:06,CCSS-03:06:09",
// 전 카드 2,3,6개월 무이자(국민,비씨,엘지,삼성,신한,현대,롯데,외환) : ALL-02:03:04
// BC 2,3,6개월, 국민 3,6개월, 삼성 6,9개월 무이자 : CCBC-02:03:06,CCKM-03:06,CCSS-03:06:04
"wish_vbank_list" => "05:03:04:07:11:23:26:32:34:81:71", // 가상계좌 은행 선택 파라미터 (은행코드는 매뉴얼을 참조)
"vcnt_expire_term" => "3", // 가상계좌 입금 기한 설정하는 파라미터 - 발급일 + 3일
"vcnt_expire_term_time" => "120000", // 가상계좌 입금 시간 설정하는 파라미터 (HHMMSS 형식, 기본값은 23시59분59초)
"complex_pnt_yn" => "N", // 포인트 결제시 복합 결제(신용카드+포인트) 여부를 결정
"disp_tax_yn" => "Y", // 현금영수증 등록 창을 출력 여부를 설정하는 파라미터
"site_logo" => "", // 사이트 로고, 로고 용량이 150 X 50 이상일 경우 site_name 값이 표시
"eng_flag" => "", // 결제창 영문 표시 파라미터, 사용 시 'Y'로 설정
"tax_flag" => "TG03", // 변경불가: 과세품목코드
"comm_tax_mny" => "", // 과세금액
"comm_vat_mny" => "", // 부가세
"comm_free_mny" => "", // 비과세금액
"skin_indx" => "1", // 스킨 변경 파라미터. 7개 (1~7) 지원
"good_cd" => "", // 상품코드 설정 파라미터
"shop_user_id" => "", // 가맹점에서 관리하는 고객 아이디, 상품권 결제 시 반드시 입력
"pt_memcorp_cd" => "" // 복지포인트 결제시 가맹점에 할당되어진 코드 값을 입력
);
2018-08-24 16:27:27 +00:00
foreach($default_options as $k=>$v) {
$req_value = get_requested_value($k);
2018-08-26 16:13:24 +00:00
if(!empty($req_value)) {
2018-08-26 17:23:20 +00:00
$data['payinfo'][$k] = ($req_value === "_DEFAULT_") ? $v : $req_value;
2018-08-26 16:13:24 +00:00
}
2018-08-24 16:27:27 +00:00
}
2018-08-24 16:19:25 +00:00
2018-08-26 16:13:24 +00:00
// 설정 불러오기
2018-08-26 17:23:20 +00:00
$data['payinfo']['g_conf_site_cd'] = $pgkcp_config['g_conf_site_cd'];
$data['payinfo']['g_conf_site_name'] = $pgkcp_config['g_conf_site_name'];
$data['payinfo']['module_type'] = $pgkcp_config['module_type'];
// 스크립트 설정
$jsloader = new JSLoader();
$jsloader->add_scripts(base_url() . "view/public/route/orderpay.pgkcp.1.js");
$jsloader->add_scripts($g_conf_js_url);
$jsloader->add_scripts(base_url() . "view/public/route/orderpay.pgkcp.2.js");
$jsoutput = $jsloader->get_output();
$data['jsoutput'] = $jsoutput;
2018-08-26 16:13:24 +00:00
2018-08-24 16:19:25 +00:00
// 결제창 불러오기
renderView("view_orderpay.pgkcp", $data);