reasonableframework/route/orderpay.step3.pgkcp.php

160 lines
6.8 KiB
PHP

<?php
/**
* @file orderpay.step3.pgkcp.php
* @date 2018-08-27
* @author Go Namhyeon <gnh1201@gmail.com>
* @brief KCP PG(Payment Gateway) contoller when done
*/
if(!defined("_DEF_RSF_")) set_error_exit("do not allow access");
// detect CSRF attack
if(check_token_abuse_by_requests("_token", "_POST")) {
set_error("Access denied. (Expired session or Website attacker)");
show_errors();
}
// set token
set_session_token();
loadHelper("webpagetool"); // load webpage tools
loadHelper("networktool"); // load network tools
loadHelper("pgkcp.lnk"); // load KCP PG Helper
loadHelper("JSLoader.class"); // load javascript loader
// load PGKCP configuration
$pgkcp_config = get_pgkcp_config();
// extract PGKCP configuration
extract($pgkcp_config);
// 지불 결과
$payres = array();
$payinfo = array(
// 공통
"site_cd" => get_requested_value("site_cd"), // 사이트코드
"req_tx" => get_requested_value("req_tx"), // 요청 구분(승인/취소)
"use_pay_method" => get_requested_value("use_pay_method"), // 사용 결제 수단
"bSucc" => get_requested_value("bSucc"), // 업체 DB 정상처리 완료 여부
"res_cd" => get_requested_value("res_cd"), // 업체 DB 정상처리 완료 여부
"res_msg" => get_requested_value("res_msg"), // 결과메시지
"res_msg_bsucc" => "", // 결과메시지 상세
"amount" => get_requested_value("amount"), // KCP 실제 거래 금액
"ordr_idxx" => get_requested_value("ordr_idxx"), // 주문번호
"tno" => get_requested_value("tno"), // KCP 거래번호
"good_name" => get_requested_value("good_name"), // 상품명
"buyr_name" => get_requested_value("buyr_name"), // 구매자명
"buyr_tel1" => get_requested_value("buyr_tel1"), // 구매자 전화번호
"buyr_tel2" => get_requested_value("buyr_tel2"), // 구매자 휴대폰번호
"buyr_mail" => get_requested_value("buyr_mail"), // 구매자 E-Mail
// 공통 2
"pnt_issue" => get_requested_value("pnt_issue"), // 포인트 서비스사
"app_time" => get_requested_value("app_time"), // 승인시간 (공통)
// 신용카드
"card_cd" => get_requested_value("card_cd"), // 카드코드
"card_name" => get_requested_value("card_name"), // 카드명
"noinf" => get_requested_value("noinf"), // 무이자 여부
"quota" => get_requested_value("quota"), // 할부개월
"app_no" => get_requested_value("app_no"), // 승인번호
// 계좌이체
"bank_name" => get_requested_value("bank_name"), // 은행명
"bank_code" => get_requested_value("bank_code"), // 은행코드
// 가상계좌
"bankname" => get_requested_value("bankname"), // 입금할 은행
"depositor" => get_requested_value("depositor"), // 입금할 계좌 예금주
"account" => get_requested_value("account"), // 입금할 계좌 번호
"va_date" => get_requested_value("va_date"), // 가상계좌 입금마감시간
// 포인트
"add_pnt" => get_requested_value("add_pnt"), // 발생 포인트
"use_pnt" => get_requested_value("use_pnt"), // 사용가능 포인트
"rsv_pnt" => get_requested_value("rsv_pnt"), // 총 누적 포인트
"pnt_app_time" => get_requested_value("pnt_app_time"), // 승인시간
"pnt_app_no" => get_requested_value("pnt_app_no"), // 승인번호
"pnt_amount" => get_requested_value("pnt_amount"), // 적립금액 or 사용금액
// 상품권
"tk_van_code" => get_requested_value("tk_van_code"), // 발급사 코드
"tk_app_no" => get_requested_value("tk_app_no"), // 승인 번호
// 휴대전화
"commid" => get_requested_value("tk_app_no"), // 통신사 코드
"mobile_no" => get_requested_value("mobile_no"), // 휴대폰 번호
// 현금영수증
"cash_yn" => get_requested_value("cash_yn"), // 현금영수증 등록 여부
"cash_authno" => get_requested_value("cash_authno"), // 현금영수증 승인 번호
"cash_tr_code" => get_requested_value("cash_authno"), // 현금영수증 발행 구분
"cash_id_info" => get_requested_value("cash_id_info"), // 현금영수증 등록 번호
"cash_no" => get_requested_value("cash_no"), // 현금영수증 거래 번호
// 확장
"pay_method_alias" => get_requested_value("pay_method_alias"), // 결제방법 별칭
"pay_method" => get_requested_value("pay_method"), // 사용 결제 수단
// 요청 상세 전문
"pay_data" => get_requested_value("pay_data"), // 요청 상세 전문
);
// extract payinfo
extract($payinfo);
// initalize data
$data = array(
"payres" => $payres,
"payinfo" => $payinfo,
"redirect_url" => get_requested_value("redirect_url"),
"_token" => get_session_token(),
"_next_route" => "ordercomplete.pgkcp",
);
// 이름 지정
$req_tx_name = "";
$req_tx_names = array(
"pay" => "지불",
"mod" => "매입/취소"
);
if(array_key_exists($req_tx, $req_tx_names)) {
$req_tx_name = $req_tx_names[$req_tx];
}
$payres['req_tx_name'] = $req_tx_name;
// 가맹점 측 DB 처리 실패시 상세 결과 메시지 설정
$res_msg_bsucc = "";
if($req_tx == "pay") {
if($bSucc == "false") {
if ($res_cd == "0000") {
$res_msg_bsucc = "결제는 정상적으로 이루어졌지만 업체에서 결제 결과를 처리하는 중 오류가 발생하여 시스템에서 자동으로 취소 요청을 하였습니다. 업체로 문의하여 확인하시기 바랍니다.";
} else {
$res_msg_bsucc = "결제는 정상적으로 이루어졌지만 업체에서 결제 결과를 처리하는 중 오류가 발생하여 시스템에서 자동으로 취소 요청을 하였으나, 취소가 실패 되었습니다. 업체로 문의하여 확인하시기 바랍니다.";
}
}
}
$payres['res_msg_bsucc'] = $req_tx_name;
// extract payres
extract($payres);
// set javascript files
$jsloader = new JSLoader();
$jsloader->add_scripts(get_webproxy_url("https://code.jquery.com/jquery-3.3.1.min.js"));
$jsloader->add_scripts(base_url() . "view/public/js/route/orderpay.step3.pgkcp.js");
$jsoutput = $jsloader->get_output();
$data['jsoutput'] = $jsoutput;
// convert payres to payinfo
foreach($payres as $k=>$v) {
$payinfo[$k] = $v;
}
$data['payinfo'] = $payinfo;
// 결제 진행 URL
$data['pgkcp_action_url'] = base_url();
// 결제창 불러오기
renderView("view_orderpay.step3.pgkcp", $data);