Ejemplo n.º 1
0
 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');
     }
 }
Ejemplo n.º 2
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');
     }
     $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);
 }
Ejemplo n.º 3
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);
 }
Ejemplo n.º 4
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;
 }
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
 function stop($msg)
 {
     $result = new Object();
     $result->setError(-1);
     $result->setMessage($msg);
     return $result;
 }
Ejemplo n.º 8
0
 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;
 }
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
 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;
 }