Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * BPJS Class
- *
- * @author Freddy Sidauruk
- * @copyright Copyright (c) 2016 PT.Indomog (http://www.indomog.com)
- */
- class Bpjs extends CI_Controller
- {
- private $gateway;
- function __construct()
- {
- parent::__construct();
- $this->load->library('form_validation');
- $this->load->model('model_transaction');
- $this->ci =&get_instance();
- $this->gateway = $this->ci->config->item('jatis_gateway'); //leopard
- }
- public function index(){
- $this->load->view('view_header');
- $this->load->view('provider/bpjs/view_bpjs');
- $this->load->view('view_footer');
- }
- public function request(){
- $this->load->helper(array('form', 'url'));
- $this->load->library('form_validation');
- $this->form_validation->set_rules('no_bpjs', 'No Bpjs', 'required');
- $this->form_validation->set_rules('no_handphone', 'No Handphone', 'required');
- if ($this->form_validation->run() == FALSE)
- {
- $this->form_validation->set_error_delimiters('<div style="font-size:10px;color:red">', '</div>');
- $this->load->view('view_header');
- $this->load->view('provider/bpjs/view_bpjs');
- $this->load->view('view_footer');
- }
- else
- {
- $params['no_bpjs'] = date($this->input->post('no_bpjs'));
- $params['no_bpjs'] = $this->security->xss_clean($params['no_bpjs']);
- $params['no_handphone'] = date($this->input->post('no_handphone'));
- $params['no_handphone'] = $this->security->xss_clean($params['no_handphone']);
- $referencecode = date("dmy").mt_rand(1000,9999);
- $user_id = $this->config->item('jatis_id');
- $user_pin = $this->config->item('jatis_pin');
- $signature = md5($user_id.$user_pin.$referencecode);
- // ini benar
- // $data_string='<transaction>
- // <transactioncode>pasti-inquiry</transactioncode>
- // <productcode>ASRBPJSKES</productcode>
- // <accnumber1>'.$params['no_bpjs'].'</accnumber1>
- // <accnumber2>'.$params['no_handphone'].'</accnumber2>
- // <accnumber3></accnumber3>
- // <userid>'.$user_id.'</userid>
- // <userpin>'.$user_pin.'</userpin>
- // <signature>'.$signature.'</signature>
- // <referencecode>'.$referencecode.'</referencecode>
- // </transaction>';
- //ini cuma buat percepat aja dalam tahap develop
- $data_string='<transaction>
- <transactioncode>pasti-inquiry</transactioncode>
- <productcode>ASRBPJSKES</productcode>
- <accnumber1>881234567899</accnumber1>
- <accnumber2>087877353636</accnumber2>
- <accnumber3></accnumber3>
- <userid>'.$user_id.'</userid>
- <userpin>'.$user_pin.'</userpin>
- <signature>'.$signature.'</signature>
- <referencecode>'.$referencecode.'</referencecode>
- </transaction>';
- // insert request jadwal ToAccessLog
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $request = $this->sendRequestCURL($data_string);
- $request = xml2array($request); //convert xml into array
- if ($request === null) {
- // insert request jadwal ToAccessLog
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond timeout " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Terjadi time out silahkan coba sekali lagi');
- redirect('bpjs/index');
- } else if ($request) {
- $status = $request['transaction-status']['transactionstatus']['value'];
- if ($status == 000){
- //buat payment di hidden di view
- $data = array(
- 'nominal' => $request['transaction-status']['nominal']['value'],
- 'adminfee' => $request['transaction-status']['adminfee']['value'],
- 'accname' => $request['transaction-status']['accname']['value'],
- 'billingperiod' => $request['transaction-status']['billingperiod']['value'],
- 'ref1' => $request['transaction-status']['ref1']['value'],
- 'accnumber1' => $request['transaction-status']['accnumber1']['value'],
- 'accnumber2' => $request['transaction-status']['accnumber2']['value'],
- 'productcode' => $request['transaction-status']['productcode']['value'],
- 'userid' =>$user_id,
- 'userpin' =>$user_pin,
- 'signature' =>$signature,
- 'transaksi_id' =>$referencecode,
- 'total' =>$request['transaction-status']['nominal']['value']+$request['transaction-status']['adminfee']['value'],
- 'product' => 'bpjs'
- );
- $this->load->view('view_header');
- $this->load->view('provider/bpjs/view_hasil_inquiry_bpjs', $data);
- $this->load->view('view_footer');
- } else if ($status == 200){
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond 200 " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Gagal, produk tidak tersedia atau kosong Transaksi gagal karena produk tidak tersedia.');
- redirect('bpjs/index');
- } else if ($status == 201){
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond 201 " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Transaksi gagal karena problem atau gangguan di billers atau operator.');
- redirect('bpjs/index');
- } else if ($status == 202){
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond 202 " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Transaksi gagal karena problem di server');
- redirect('bpjs/index');
- }else if ($status == 203){
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond 203 " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Transaksi gagal karena saldo tidak cukup.');
- redirect('bpjs/index');
- }else if ($status == 205){
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond 205 " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Gagal, kode produk salah.');
- redirect('bpjs/index');
- } else if ($status == 206){
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond 206 " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Transaksi gagal karena kesalahan format XML.');
- redirect('bpjs/index');
- } else if ($status == 206){
- $params['IPD'] = $_SERVER['REMOTE_ADDR'];
- $params['message_log'] = "respond 206 " ."vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
- $this->ci->model_transaction->insertToAccessLog($params);
- $this->session->set_flashdata('error_message', 'Transaksi gagal karena kesalahan format XML.');
- redirect('bpjs/index');
- }
- }
- }
- }
- /*
- Gagal, produk tidak tersedia atau kosong Transaksi gagal karena produk tidak tersedia. -> 200
- Transaksi gagal karena problem atau gangguan di billers atau operator. ->201
- Transaksi gagal karena problem di server. -> 202
- Transaksi gagal karena saldo tidak cukup. -> 203
- Gagal, account number atau nomor tujuan top up salah. Error code ini juga bisa disebabkan karena parameter yang dibutuhkan salah, tidak diisi atau salah format.
- Transaksi gagal karena account tujuan top up salah. -> 204
- Gagal, kode produk salah. -> 205
- Transaksi gagal karena kesalahan format XML. -> 20
- */
- public function payment(){
- $vname = $this->input->post('product');
- $transactioncode = 'pasti-prabayar';
- $productcode = $this->input->post('productcode');
- $accnumber1 = $this->input->post('accnumber1');
- $userid = $this->input->post('userid');
- $userpin = $this->input->post('userpin');
- $signature = $this->input->post('signature');
- $transaksi_id = $this->input->post('transaksi_id');
- $total = $this->input->post('total');
- if ($vname == 'bpjs')
- {
- $this->session->set_userdata("transactioncode", 'pasti-prabayar');
- $this->session->set_userdata("productcode",$productcode);
- $this->session->set_userdata("accnumber1",$accnumber1);
- $this->session->set_userdata("userid",$userid);
- $this->session->set_userdata("userpin",$userpin);
- $this->session->set_userdata("signature",$signature);
- $this->session->set_userdata("transaksi_id",$transaksi_id);
- $this->session->set_userdata("price",$total);
- echo '<script type="text/javascript">top.window.location="'.$this->config->item('jatis_payment').'"</script>';
- } else
- {
- ?>
- <script language="javascript">
- alert('vname not found');
- window.history.go(-5)
- </script>
- <?php
- }
- }
- private function sendRequestCURL($data_string="")
- {
- $gateway = $this->ci->config->item('jatis_gateway');
- $request_type="POST";
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $gateway);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);
- if($request_type == "POST")
- {
- curl_setopt($ch, CURLOPT_POST, TRUE);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
- }
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
- $result = curl_exec($ch);
- curl_close($ch);
- return $result;
- }
- }
Add Comment
Please, Sign In to add comment