public function hardcopy($filename) { $cmd = sprintf("lpr %s", $filename); exec($cmd, $out, $ret); if ($ret != 0) { $this->Response->setError($cmd . ' failed'); } else { $this->Response->setMessage($cmd . ' ok'); } }
/** * @brief 가상계좌 입금시 처리 */ function processReport($order_srl) { $oEpayModel = getModel('epay'); $transaction_info = $oEpayModel->getTransactionByOrderSrl($order_srl); if (!$transaction_info) { return new Object(-1, 'could not find transaction'); } $payplushome = sprintf(_XE_PATH_ . "files/epay/kcp"); $TEMP_IP = $_SERVER["REMOTE_ADDR"]; $PG_IP = substr($TEMP_IP, 0, 10); //PG에서 보냈는지 IP로 체크 if ($PG_IP != "203.238.36") { return new Object(-1, 'msg_invalid_request'); } $logfile = fopen($payplushome . "/log/vbank_" . date("Ymd") . ".log", "a+"); fwrite($logfile, "************************************************\n"); $vars = Context::getRequestVars(); foreach ($vars as $key => $val) { fwrite($logfile, $key . " : " . $val . "\n"); } fwrite($logfile, "************************************************\n\n"); fclose($logfile); $output = new Object(); $output->order_srl = Context::get('ordr_idxx'); $output->amount = Context::get('totl_mnyx'); if ($output->amount == $transaction_info->payment_amount) { $output->add('state', '2'); // successfully completed $output->add('result_code', '0'); $output->add('result_message', 'Success'); } else { $output->setError(-1); $output->setMessage('amount does not match'); $output->add('state', '3'); // failed $output->add('result_code', '1'); $output->add('result_message', 'amount does not match'); } $output->add('transaction_srl', $transaction_info->transaction_srl); $output->add('payment_method', 'VA'); $output->add('payment_amount', $transaction_info->payment_amount); $output->add('pg_tid', $transaction_ifno->pg_tid); $output->add('vact_bankname', $transaction_info->vact_bankname); $output->add('vact_num', $transaction_info->vact_num); $output->add('vact_name', $transaction_info->vact_name); $output->add('vact_inputname', $transaction_info->vact_inputname); // doPayment will call an after trigger $oEpayController = getController('epay'); $afterOutput = $oEpayController->afterPayment($output); if (!$afterOutput->toBool()) { return $afterOutput; } // OK를 출력하고 끝내야 한다. echo "OK"; exit(0); }
/** * @brief 가상계좌 입금시 처리 */ function processReport($order_srl) { $oEpayModel =& getModel('epay'); $transaction_info = $oEpayModel->getTransactionByOrderSrl($order_srl); if (!$transaction_info) { return new Object(-1, 'could not find transaction'); } $TEMP_IP = $_SERVER["REMOTE_ADDR"]; $PG_IP = substr($TEMP_IP, 0, 10); //PG에서 보냈는지 IP로 체크 if ($PG_IP != "203.238.37" && $PG_IP != "210.98.138") { debugPrint($PG_IP . 'is not from inicis'); return new Object(-1, 'msg_invalid_request'); } /* // 이니시스에서 보내오는 request 변수들 $msg_id = $msg_id; //메세지 타입 $no_tid = $no_tid; //거래번호 $no_oid = $no_oid; //상점 주문번호 $id_merchant = $id_merchant; //상점 아이디 $cd_bank = $cd_bank; //거래 발생 기관 코드 $cd_deal = $cd_deal; //취급 기관 코드 $dt_trans = $dt_trans; //거래 일자 $tm_trans = $tm_trans; //거래 시간 $no_msgseq = $no_msgseq; //전문 일련 번호 $cd_joinorg = $cd_joinorg; //제휴 기관 코드 $dt_transbase = $dt_transbase; //거래 기준 일자 $no_transeq = $no_transeq; //거래 일련 번호 $type_msg = $type_msg; //거래 구분 코드 $cl_close = $cl_close; //마감 구분코드 $cl_kor = $cl_kor; //한글 구분 코드 $no_msgmanage = $no_msgmanage; //전문 관리 번호 $no_vacct = $no_vacct; //가상계좌번호 $amt_input = $amt_input; //입금금액 $amt_check = $amt_check; //미결제 타점권 금액 $nm_inputbank = $nm_inputbank; //입금 금융기관명 $nm_input = $nm_input; //입금 의뢰인 $dt_inputstd = $dt_inputstd; //입금 기준 일자 $dt_calculstd = $dt_calculstd; //정산 기준 일자 $flg_close = $flg_close; //마감 전화 */ /* //가상계좌채번시 현금영수증 자동발급신청시에만 전달 $dt_cshr = $dt_cshr; //현금영수증 발급일자 $tm_cshr = $tm_cshr; //현금영수증 발급시간 $no_cshr_appl = $no_cshr_appl; //현금영수증 발급번호 $no_cshr_tid = $no_cshr_tid; //현금영수증 발급TID */ $inipayhome = sprintf(_XE_PATH_ . "files/epay/%s", $transaction_info->module_srl); $logfile = fopen($inipayhome . "/log/vbank_" . date("Ymd") . ".log", "a+"); $vars = Context::getRequestVars(); foreach ($vars as $key => $val) { fwrite($logfile, $key . " : " . $val . "\n"); } /* $output = $this->processPayment(Context::get('no_oid'), Context::get('amt_input')); if (!$output->toBool()) return $output; */ fwrite($logfile, "************************************************\n\n"); fclose($logfile); //위에서 상점 데이터베이스에 등록 성공유무에 따라서 성공시에는 "OK"를 이니시스로 //리턴하셔야합니다. 아래 조건에 데이터베이스 성공시 받는 FLAG 변수를 넣으세요 //(주의) OK를 리턴하지 않으시면 이니시스 지불 서버는 "OK"를 수신할때까지 계속 재전송을 시도합니다 //기타 다른 형태의 PRINT( echo )는 하지 않으시기 바랍니다 $output = new Object(); $output->order_srl = Context::get('no_oid'); $output->amount = Context::get('amt_input'); if ($output->amount == $transaction_info->payment_amount) { $output->add('state', '2'); // successfully completed $output->add('result_code', '0'); $output->add('result_message', 'Success'); } else { $output->setError(-1); $output->setMessage('amount does not match'); $output->add('state', '3'); // failed $output->add('result_code', '1'); $output->add('result_message', 'amount does not match'); } $output->add('transaction_srl', $transaction_info->transaction_srl); $output->add('payment_method', 'VA'); $output->add('payment_amount', $transaction_info->payment_amount); $output->add('pg_tid', $transaction_ifno->pg_tid); $output->add('vact_bankname', $transaction_info->vact_bankname); $output->add('vact_num', $transaction_info->vact_num); $output->add('vact_name', $transaction_info->vact_name); $output->add('vact_inputname', $transaction_info->vact_inputname); // doPayment will call an after trigger $oEpayController =& getController('epay'); $output = $oEpayController->afterPayment($output); if (!$output->toBool()) { return $output; } // OK를 출력하고 끝내야 한다. echo "OK"; exit(0); }
function procEscrowDenyConfirm() { $inipayhome = sprintf(_XE_PATH_ . "files/epay/%s", $this->plugin_info->plugin_srl); $vars = Context::getRequestVars(); debugPrint('procEscrowDenyConfirm'); debugPrint($vars); extract(get_object_vars($vars)); /************************** * 1. 라이브러리 인클루드 * **************************/ require "libs/INILib.php"; /*************************************** * 2. INIpay50 클래스의 인스턴스 생성 * ***************************************/ $iniescrow = new INIpay50(); /********************* * 3. 지불 정보 설정 * *********************/ $iniescrow->SetField("inipayhome", $inipayhome); $iniescrow->SetField("tid", Context::get('tid')); $iniescrow->SetField("mid", $this->plugin_info->inicis_id); $iniescrow->SetField("admin", $this->plugin_info->inicis_pass); $iniescrow->SetField("type", "escrow"); $iniescrow->SetField("escrowtype", "dcnf"); // 고정 (절대 수정 불가) $iniescrow->SetField("dcnf_name", $dcnf_name); $iniescrow->SetField("debug", "true"); /********************* * 3. 거절확인 요청 * *********************/ $iniescrow->startAction(); /********************** * 4. 거절확인 결과 * **********************/ debugPrint($iniescrow->m_Data); $tid = $iniescrow->GetResult("tid"); // 거래번호 $resultCode = $iniescrow->GetResult("ResultCode"); // 결과코드 ("00"이면 지불 성공) $resultMsg = $iniescrow->GetResult("ResultMsg"); // 결과내용 (지불결과에 대한 설명) $resultDate = $iniescrow->GetResult("DCNF_Date"); // 처리 날짜 $resultTime = $iniescrow->GetResult("DCNF_Time"); // 처리 시각 Context::set('tid', $tid); Context::set('resultCode', $resultCode); Context::set('resultMsg', $resultMsg); Context::set('resultDate', $resultDate); Context::set('resultTime', $resultTime); $oTemplate =& TemplateHandler::getInstance(); $tpl_path = _XE_PATH_ . "modules/epay/plugins/iniescrow/tpl"; $tpl_file = 'escrow_denyconfirm_result.html'; $tpl = $oTemplate->compile($tpl_path, $tpl_file); $output = new Object(); if (!$resultCode != '00') { $output->setError(-1); } $output->add('order_srl', Context::get('order_srl')); $output->add('denyconfirm_code', $resultCode); $output->add('denyconfirm_message', iconv('EUC-KR', 'UTF-8', $resultMsg)); $output->add('denyconfirm_date', $resultDate . $resultTime); $output->setMessage($tpl); return $output; }
function sendComment($args, $manual_data = null) { $result = new Object(); set_time_limit(0); $oSocialxeModel =& getModel('socialxe'); if ($manual_data) { $logged_provider_list = $manual_data->logged_provider_list; $master_provider = $manual_data->master_provider; $slave_provider = $manual_data->slave_provider; } else { $logged_provider_list = $this->providerManager->getLoggedProviderList(); $master_provider = $this->providerManager->getMasterProvider(); $slave_provider = $this->providerManager->getSlaveProvider(); } $config = $this->config; // $logged_provider_list에서 xe 제외 if ($logged_provider_list[0] == 'xe') { array_shift($logged_provider_list); } // 데이터 준비 $comment->content = $args->content; $comment->content_link = $args->content_link; $comment->hashtag = $config->hashtag; $comment->content_title = $args->content_title; $comment->content_thumbnail = $args->content_thumbnail; // 대댓글이면 부모 댓글의 정보를 준비 if ($args->parent_srl) { $output = $oSocialxeModel->getSocialByCommentSrl($args->parent_srl); $comment->parent = $output->data; } // 내용을 분석해서 각 소셜 서비스의 리플 형식이 들어있는지 확인 $reply_provider_list = $this->providerManager->getReplyProviderList($comment->content); // 보낼 필요가 있는지 확인 if (count($reply_provider_list) == 0) { // 대댓글이면 if ($args->parent_srl) { // 부모 댓글에 소셜 정보가 없으면 리턴~ if (!$comment->parent->provider || $comment->parent->provider == 'xe') { return new Object(); } } else { // 로그인한 소셜 서비스가 없으면 리턴~ if (!count($logged_provider_list)) { return new Object(); } } } $args->url = $this->_getCommentUrl($comment->content_link, $comment->parent->comment_srl); if ($config->use_short_url != 'N') { // 생성된 짧은 주소가 있는지 확인한다. $output = executeQuery('socialxe.getBitlyByUrl', $args); $comment->short_link = $output->data->short_url; // 생성된 짧은 주소가 없으며 생성 if ($this->config->bitly_username && $this->config->bitly_api_key && !$comment->short_link) { // bit.ly 라이브러리 로드 if (!class_exists("bitly_SocialXE")) { require_once _XE_PATH_ . 'modules/socialxe/bitly.php'; } // 링크 생성 $bitly = new bitly_SocialXE($this->config->bitly_username, $this->config->bitly_api_key); $content_link = $bitly->shorten(urlencode($this->_getCommentUrl($comment->content_link, $comment->parent->comment_srl))); if ($content_link) { $comment->short_link = $content_link; } } } else { $comment->short_link = $args->url; } // API 요청 준비 $data = array('client' => $config->client_token, 'comment' => $comment, 'logged_provider_list' => $logged_provider_list, 'reply_provider_list' => $reply_provider_list, 'master_provider' => $master_provider, 'uselang' => Context::getLangType()); // 소셜 서비스 액세스 정보 준비 if ($manual_data) { $accesses = $manual_data->access; } else { $accesses = $this->providerManager->getAccesses(); } foreach ($accesses as $provider => $access) { $data[$provider] = serialize($access); } // URL 생성 $url = $this->getURL('send', $data); // 요청 $content = $this->httpRequest($url, 'POST'); //debug :@kakikaki debugPrint('$url : ' . $url); debugPrint('$content : ' . $content); //end if (!$content) { $result->setError(-1); $result->setMessage('msg_request_error'); //여기서 에러 발생 (댓글 작성 : XE-1.7.4) return $result; } // JSON 디코딩 $json = new Services_JSON_SocialXE(); $output = $json->decode($content); if (!$output) { return new Object(-1, $content); } // 오류 체크 if ($output->error) { $result->setError(-1); $result->setMessage($output->message); return $result; } // 전송 결과를 체크 $msg = array(); $lang_provider = Context::getLang('provider'); foreach ($this->providerManager->getProviderList() as $provider) { if ($output->result->{$provider}->error) { $msg[] = sprintf(Context::getLang('msg_send_failed'), $lang_provider[$provider], $output->result->{$provider}->error); } } if (count($msg)) { $msg = implode("\n", $msg); $result->add('msg', $msg); } if ($config->use_short_url != 'N') { // bit.ly 결과를 저장한다. if ($bitly) { $bitly_result = $bitly->getRawResults(); $args->hash = $bitly_result['userHash']; $args->title = $comment->content_title; $args->short_url = $comment->short_link; $args->url = $this->_getCommentUrl($comment->content_link, $comment->parent->comment_srl); executeQuery('socialxe.insertBitly', $args); } } // 대표 계정의 댓글 번호를 세팅한다. if ($master_provider == 'xe' && $slave_provider) { $comment_id = $output->result->{$slave_provider}->id; } else { if ($master_provider) { $comment_id = $output->result->{$master_provider}->id; } } $result->add('comment_id', $comment_id); return $result; }
function setSlaveProvider($provider) { $result = new Object(); // 제공하는 서비스인지 확인 if (!$this->inProvider($provider) || $provider == 'xe') { $result->setError(-1); return $result->setMessage('msg_invalid_provider'); } // 로그인되어 있는지 확인 if ($this->isLogged($provider)) { // XE 로그인이 아니면 끝 if ($this->provider['xe']->isLogged()) { // 부계정 설정 $this->slave_provider = $provider; $this->session->setSession('slave', $provider); } else { $this->clearSlaveProvider(); } } else { $this->setNextSlaveProvider(); } return $result; }
function stop($msg) { $result = new Object(); $result->setError(-1); $result->setMessage($msg); return $result; }
function processReport(&$transaction) { $inipayhome = sprintf(_XE_PATH_ . "files/epay/%s", $transaction->plugin_srl); $TEMP_IP = $_SERVER["REMOTE_ADDR"]; $PG_IP = substr($TEMP_IP, 0, 10); //PG에서 보냈는지 IP로 체크 if ($PG_IP != "203.238.37" && $PG_IP != "210.98.138") { return new Object(-1, 'msg_invalid_request'); } /* $msg_id = $msg_id; //메세지 타입 $no_tid = $no_tid; //거래번호 $no_oid = $no_oid; //상점 주문번호 $id_merchant = $id_merchant; //상점 아이디 $cd_bank = $cd_bank; //거래 발생 기관 코드 $cd_deal = $cd_deal; //취급 기관 코드 $dt_trans = $dt_trans; //거래 일자 $tm_trans = $tm_trans; //거래 시간 $no_msgseq = $no_msgseq; //전문 일련 번호 $cd_joinorg = $cd_joinorg; //제휴 기관 코드 $dt_transbase = $dt_transbase; //거래 기준 일자 $no_transeq = $no_transeq; //거래 일련 번호 $type_msg = $type_msg; //거래 구분 코드 $cl_close = $cl_close; //마감 구분코드 $cl_kor = $cl_kor; //한글 구분 코드 $no_msgmanage = $no_msgmanage; //전문 관리 번호 $no_vacct = $no_vacct; //가상계좌번호 $amt_input = $amt_input; //입금금액 $amt_check = $amt_check; //미결제 타점권 금액 $nm_inputbank = $nm_inputbank; //입금 금융기관명 $nm_input = $nm_input; //입금 의뢰인 $dt_inputstd = $dt_inputstd; //입금 기준 일자 $dt_calculstd = $dt_calculstd; //정산 기준 일자 $flg_close = $flg_close; //마감 전화 */ /* //가상계좌채번시 현금영수증 자동발급신청시에만 전달 $dt_cshr = $dt_cshr; //현금영수증 발급일자 $tm_cshr = $tm_cshr; //현금영수증 발급시간 $no_cshr_appl = $no_cshr_appl; //현금영수증 발급번호 $no_cshr_tid = $no_cshr_tid; //현금영수증 발급TID */ $logfile = fopen($inipayhome . "/log/vbank_" . date("Ymd") . ".log", "a+"); $vars = Context::getRequestVars(); foreach ($vars as $key => $val) { fwrite($logfile, $key . " : " . $val . "\n"); } /* $output = $this->processPayment(Context::get('no_oid'), Context::get('amt_input')); if (!$output->toBool()) return $output; */ fwrite($logfile, "************************************************\n\n"); fclose($logfile); //위에서 상점 데이터베이스에 등록 성공유무에 따라서 성공시에는 "OK"를 이니시스로 //리턴하셔야합니다. 아래 조건에 데이터베이스 성공시 받는 FLAG 변수를 넣으세요 //(주의) OK를 리턴하지 않으시면 이니시스 지불 서버는 "OK"를 수신할때까지 계속 재전송을 시도합니다 //기타 다른 형태의 PRINT( echo )는 하지 않으시기 바랍니다 $output = new Object(); $output->order_srl = Context::get('no_oid'); $output->amount = Context::get('amt_input'); if ($output->amount == $transaction->payment_amount) { echo "OK"; $output->setError(0); $output->state = '2'; // successfully completed } else { $output->setError(-1); $output->setMessage('amount not match'); $output->state = '1'; // not completed } return $output; }
function processReport(&$transaction) { $vars = Context::getRequestVars(); $tid = Context::get('LGD_TID'); $casflag = Context::get('LGD_CASFLAG'); $output = new Object(); // check for TID if ($transaction->pg_tid != $tid) { echo "TID mismatch"; $output->setError(-1); $output->setMessage('TID mismatch'); $output->state = '1'; // not completed return $output; } /// LGD_CASFLAG가 'I' 이면 '입금' if ($casflag != 'I') { echo "CASFLAG mismatch : " . $casflag; $output->setError(-1); $output->setMessage('CASFLAG mismatch'); $output->state = '1'; // not completed return $output; } $output->order_srl = Context::get('LGD_OID'); $output->amount = Context::get('LGD_CASTAMOUNT'); if ($output->amount == $transaction->payment_amount) { echo "OK"; $output->setError(0); $output->state = '2'; // successfully completed } else { echo "Amount mismatch"; $output->setError(-1); $output->setMessage('amount mismatch'); $output->state = '1'; // not completed } return $output; }
function processReport(&$transaction) { $payplushome = sprintf(_XE_PATH_ . "files/epay/%s", $transaction->plugin_srl); $TEMP_IP = $_SERVER["REMOTE_ADDR"]; $PG_IP = substr($TEMP_IP, 0, 10); //PG에서 보냈는지 IP로 체크 if ($PG_IP != "203.238.36") { return new Object(-1, 'msg_invalid_request'); } $logfile = fopen($payplushome . "/log/vbank_" . date("Ymd") . ".log", "a+"); fwrite($logfile, "************************************************\n"); $vars = Context::getRequestVars(); foreach ($vars as $key => $val) { fwrite($logfile, $key . " : " . $val . "\n"); } fwrite($logfile, "************************************************\n\n"); fclose($logfile); $output = new Object(); $output->order_srl = Context::get('ordr_idxx'); $output->amount = Context::get('totl_mnyx'); if ($output->amount == $transaction->payment_amount) { $output->setError(0); $output->state = '2'; } else { $output->setError(-1); $output->setMessage('amount not match'); $output->state = '1'; } return $output; }
function sendApiRequest($resource, $parameters, $method, $basecamp = FALSE) { $oTextmessageModel =& getModel('textmessage'); $config = $oTextmessageModel->getModuleConfig(); if ($basecamp) { $parameters['coolsms_user'] = $config->cs_user_id; $api_secret = $config->cs_password; } else { $parameters['api_key'] = $config->api_key; $api_secret = $config->api_secret; } $parameters['salt'] = uniqid(); $parameters['timestamp'] = strval(time()); $parameters['User_Agent'] = 'RestTool'; $parameters['signature'] = hash_hmac('md5', $parameters['timestamp'] . $parameters['salt'], $api_secret); //$parameters['handle_key'] = Context::get('handle_key'); $query_string = sprintf("/senderid/1/%s", $resource); if ($method == 'GET') { $query_string = sprintf("%s?%s", $query_string, http_build_query($parameters)); } require_once _XE_PATH_ . 'classes/httprequest/XEHttpRequest.class.php'; $http = new XEHttpRequest('rest1.coolsms.co.kr', 80); $result = $http->send($query_string, $method, 10, $parameters); if (is_a($result, 'Object')) { return $result; } $output = new Object(); $output->data = json_decode($result->body); if ($output->data->code) { $output->setError(-1); $output->setMessage(sprintf("%s : %s", $output->data->code, $output->data->message)); } return $output; }