freddy0512

bpjs controller

Dec 16th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.30 KB | None | 0 0
  1. <?php
  2. /**
  3. * BPJS Class
  4. *
  5. * @author Freddy Sidauruk
  6. * @copyright Copyright (c) 2016 PT.Indomog (http://www.indomog.com)
  7. */
  8. class Bpjs extends CI_Controller
  9. {
  10.  
  11. private $gateway;
  12.  
  13. function __construct()
  14. {
  15. parent::__construct();
  16.  
  17. $this->load->library('form_validation');
  18. $this->load->model('model_transaction');
  19. $this->ci =&get_instance();
  20. $this->gateway = $this->ci->config->item('jatis_gateway'); //leopard
  21. }
  22.  
  23. public function index(){
  24. $this->load->view('view_header');
  25. $this->load->view('provider/bpjs/view_bpjs');
  26. $this->load->view('view_footer');
  27. }
  28.  
  29. public function request(){
  30.  
  31. $this->load->helper(array('form', 'url'));
  32. $this->load->library('form_validation');
  33.  
  34. $this->form_validation->set_rules('no_bpjs', 'No Bpjs', 'required');
  35. $this->form_validation->set_rules('no_handphone', 'No Handphone', 'required');
  36.  
  37. if ($this->form_validation->run() == FALSE)
  38. {
  39. $this->form_validation->set_error_delimiters('<div style="font-size:10px;color:red">', '</div>');
  40. $this->load->view('view_header');
  41. $this->load->view('provider/bpjs/view_bpjs');
  42. $this->load->view('view_footer');
  43. }
  44. else
  45. {
  46.  
  47. $params['no_bpjs'] = date($this->input->post('no_bpjs'));
  48. $params['no_bpjs'] = $this->security->xss_clean($params['no_bpjs']);
  49. $params['no_handphone'] = date($this->input->post('no_handphone'));
  50. $params['no_handphone'] = $this->security->xss_clean($params['no_handphone']);
  51. $referencecode = date("dmy").mt_rand(1000,9999);
  52. $user_id = $this->config->item('jatis_id');
  53. $user_pin = $this->config->item('jatis_pin');
  54. $signature = md5($user_id.$user_pin.$referencecode);
  55.  
  56.  
  57. // ini benar
  58.  
  59. // $data_string='<transaction>
  60. // <transactioncode>pasti-inquiry</transactioncode>
  61. // <productcode>ASRBPJSKES</productcode>
  62. // <accnumber1>'.$params['no_bpjs'].'</accnumber1>
  63. // <accnumber2>'.$params['no_handphone'].'</accnumber2>
  64. // <accnumber3></accnumber3>
  65. // <userid>'.$user_id.'</userid>
  66. // <userpin>'.$user_pin.'</userpin>
  67. // <signature>'.$signature.'</signature>
  68. // <referencecode>'.$referencecode.'</referencecode>
  69. // </transaction>';
  70.  
  71.  
  72. //ini cuma buat percepat aja dalam tahap develop
  73. $data_string='<transaction>
  74. <transactioncode>pasti-inquiry</transactioncode>
  75. <productcode>ASRBPJSKES</productcode>
  76. <accnumber1>881234567899</accnumber1>
  77. <accnumber2>087877353636</accnumber2>
  78. <accnumber3></accnumber3>
  79. <userid>'.$user_id.'</userid>
  80. <userpin>'.$user_pin.'</userpin>
  81. <signature>'.$signature.'</signature>
  82. <referencecode>'.$referencecode.'</referencecode>
  83. </transaction>';
  84.  
  85.  
  86. // insert request jadwal ToAccessLog
  87. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  88. $params['message_log'] = "vname=" .'BPJS' . ";productcode=" .'ASRBPJSKES'. ";accnumber1=" . $params['no_bpjs']. ";accnumber2=" . $params['no_handphone'].";userid=" . $user_id.";userpin=" . $userpin.";signature=" . $signature.";referencecode=" . $referencecode;
  89. $this->ci->model_transaction->insertToAccessLog($params);
  90.  
  91. $request = $this->sendRequestCURL($data_string);
  92. $request = xml2array($request); //convert xml into array
  93.  
  94. if ($request === null) {
  95. // insert request jadwal ToAccessLog
  96. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  97. $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;
  98. $this->ci->model_transaction->insertToAccessLog($params);
  99. $this->session->set_flashdata('error_message', 'Terjadi time out silahkan coba sekali lagi');
  100. redirect('bpjs/index');
  101.  
  102. } else if ($request) {
  103.  
  104. $status = $request['transaction-status']['transactionstatus']['value'];
  105.  
  106. if ($status == 000){
  107.  
  108. //buat payment di hidden di view
  109. $data = array(
  110. 'nominal' => $request['transaction-status']['nominal']['value'],
  111. 'adminfee' => $request['transaction-status']['adminfee']['value'],
  112. 'accname' => $request['transaction-status']['accname']['value'],
  113. 'billingperiod' => $request['transaction-status']['billingperiod']['value'],
  114. 'ref1' => $request['transaction-status']['ref1']['value'],
  115. 'accnumber1' => $request['transaction-status']['accnumber1']['value'],
  116. 'accnumber2' => $request['transaction-status']['accnumber2']['value'],
  117. 'productcode' => $request['transaction-status']['productcode']['value'],
  118. 'userid' =>$user_id,
  119. 'userpin' =>$user_pin,
  120. 'signature' =>$signature,
  121. 'transaksi_id' =>$referencecode,
  122. 'total' =>$request['transaction-status']['nominal']['value']+$request['transaction-status']['adminfee']['value'],
  123. 'product' => 'bpjs'
  124. );
  125.  
  126. $this->load->view('view_header');
  127. $this->load->view('provider/bpjs/view_hasil_inquiry_bpjs', $data);
  128. $this->load->view('view_footer');
  129.  
  130. } else if ($status == 200){
  131. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  132. $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;
  133. $this->ci->model_transaction->insertToAccessLog($params);
  134. $this->session->set_flashdata('error_message', 'Gagal, produk tidak tersedia atau kosong Transaksi gagal karena produk tidak tersedia.');
  135. redirect('bpjs/index');
  136.  
  137. } else if ($status == 201){
  138.  
  139. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  140. $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;
  141. $this->ci->model_transaction->insertToAccessLog($params);
  142. $this->session->set_flashdata('error_message', 'Transaksi gagal karena problem atau gangguan di billers atau operator.');
  143. redirect('bpjs/index');
  144.  
  145. } else if ($status == 202){
  146.  
  147. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  148. $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;
  149. $this->ci->model_transaction->insertToAccessLog($params);
  150. $this->session->set_flashdata('error_message', 'Transaksi gagal karena problem di server');
  151. redirect('bpjs/index');
  152.  
  153. }else if ($status == 203){
  154.  
  155. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  156. $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;
  157. $this->ci->model_transaction->insertToAccessLog($params);
  158. $this->session->set_flashdata('error_message', 'Transaksi gagal karena saldo tidak cukup.');
  159. redirect('bpjs/index');
  160.  
  161. }else if ($status == 205){
  162.  
  163. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  164. $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;
  165. $this->ci->model_transaction->insertToAccessLog($params);
  166. $this->session->set_flashdata('error_message', 'Gagal, kode produk salah.');
  167. redirect('bpjs/index');
  168.  
  169. } else if ($status == 206){
  170.  
  171. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  172. $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;
  173. $this->ci->model_transaction->insertToAccessLog($params);
  174. $this->session->set_flashdata('error_message', 'Transaksi gagal karena kesalahan format XML.');
  175. redirect('bpjs/index');
  176.  
  177. } else if ($status == 206){
  178.  
  179. $params['IPD'] = $_SERVER['REMOTE_ADDR'];
  180. $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;
  181. $this->ci->model_transaction->insertToAccessLog($params);
  182. $this->session->set_flashdata('error_message', 'Transaksi gagal karena kesalahan format XML.');
  183. redirect('bpjs/index');
  184.  
  185. }
  186.  
  187. }
  188.  
  189. }
  190. }
  191.  
  192.  
  193. /*
  194. Gagal, produk tidak tersedia atau kosong Transaksi gagal karena produk tidak tersedia. -> 200
  195. Transaksi gagal karena problem atau gangguan di billers atau operator. ->201
  196. Transaksi gagal karena problem di server. -> 202
  197. Transaksi gagal karena saldo tidak cukup. -> 203
  198. 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.
  199. Transaksi gagal karena account tujuan top up salah. -> 204
  200. Gagal, kode produk salah. -> 205
  201. Transaksi gagal karena kesalahan format XML. -> 20
  202.  
  203. */
  204.  
  205.  
  206. public function payment(){
  207. $vname = $this->input->post('product');
  208. $transactioncode = 'pasti-prabayar';
  209. $productcode = $this->input->post('productcode');
  210. $accnumber1 = $this->input->post('accnumber1');
  211. $userid = $this->input->post('userid');
  212. $userpin = $this->input->post('userpin');
  213. $signature = $this->input->post('signature');
  214. $transaksi_id = $this->input->post('transaksi_id');
  215. $total = $this->input->post('total');
  216. if ($vname == 'bpjs')
  217. {
  218. $this->session->set_userdata("transactioncode", 'pasti-prabayar');
  219. $this->session->set_userdata("productcode",$productcode);
  220. $this->session->set_userdata("accnumber1",$accnumber1);
  221. $this->session->set_userdata("userid",$userid);
  222. $this->session->set_userdata("userpin",$userpin);
  223. $this->session->set_userdata("signature",$signature);
  224. $this->session->set_userdata("transaksi_id",$transaksi_id);
  225. $this->session->set_userdata("price",$total);
  226. echo '<script type="text/javascript">top.window.location="'.$this->config->item('jatis_payment').'"</script>';
  227.  
  228. } else
  229. {
  230. ?>
  231. <script language="javascript">
  232. alert('vname not found');
  233. window.history.go(-5)
  234. </script>
  235. <?php
  236. }
  237.  
  238.  
  239. }
  240.  
  241. private function sendRequestCURL($data_string="")
  242. {
  243. $gateway = $this->ci->config->item('jatis_gateway');
  244. $request_type="POST";
  245. $ch = curl_init();
  246. curl_setopt($ch, CURLOPT_URL, $gateway);
  247. curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);
  248.  
  249. if($request_type == "POST")
  250. {
  251. curl_setopt($ch, CURLOPT_POST, TRUE);
  252. curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  253. }
  254.  
  255. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
  256. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  257. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
  258.  
  259. $result = curl_exec($ch);
  260. curl_close($ch);
  261. return $result;
  262. }
  263.  
  264.  
  265. }
Add Comment
Please, Sign In to add comment