Advertisement
rusday14

API Virtual Account Dobuy

Nov 22nd, 2021
1,196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.58 KB | None | 0 0
  1. <?php
  2. date_default_timezone_set('Asia/Jakarta');
  3.  
  4. function grab_image($urlx,$saveto){
  5.         $ch = curl_init ($urlx);   
  6.         curl_setopt($ch, CURLOPT_HEADER, 0);   
  7.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
  8.         curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
  9.         $raw=curl_exec($ch);curl_close($ch);   
  10.         if(file_exists($saveto)){      
  11.         @unlink($saveto);  
  12.         }  
  13.         $fp = @fopen($saveto,'x'); 
  14.         @fwrite($fp, $raw);    
  15.         @fclose($fp);
  16.     }
  17.  
  18. $token       = "czozMDoiNjcxNDAyMjAxNDEwMTIwNDIwMTQwMjE0MTAxMjA0Ijs=";
  19. // $subx         = $_POST['token_id'];
  20. $subx   = $token;
  21. $pass_gen    ="|hellobesideyou911.";
  22. $pass_gens   ="|hellobesideyou911.@D013Uy";
  23.  
  24.     $generate_token = rand(1, 100).date("dmYHis");
  25.     $token_id       = substr($generate_token,0,16);
  26.     $token_id_base  = $token_id.$pass_gens;
  27.     $token_id_base  = md5($token_id_base)."=";
  28.        
  29.    
  30. $tokenID   = $_POST['tokenID'];
  31. $kodedobuy = "12238";
  32.  
  33.  
  34. function download_image1($image_url, $image_file){
  35.     $fp = fopen ($image_file, 'w+');              // open file handle
  36.     $ch = curl_init($image_url);
  37.     // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // enable if you want
  38.     curl_setopt($ch, CURLOPT_FILE, $fp);          // output to file
  39.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  40.     curl_setopt($ch, CURLOPT_TIMEOUT, 1000);      // some large value to allow curl to run for a long time
  41.     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
  42.     // curl_setopt($ch, CURLOPT_VERBOSE, true);   // Enable this line to see debug prints
  43.     curl_exec($ch);
  44.     curl_close($ch);                              // closing curl handle
  45.     fclose($fp);                                  // closing file handle
  46. }
  47.  
  48. function DateToIndomail($date) {
  49.                                            
  50.     $BulanIndo = array("Januari", "Februari", "Maret",
  51.                        "April", "Mei", "Juni",
  52.                        "Juli", "Agustus", "September",
  53.                        "Oktober", "November", "Desember");
  54.     $hari=array("","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu");
  55.     $exp_tgl = explode("-",$date);
  56.     $tahun = substr($date, 0, 4); // memisahkan format tahun menggunakan substring
  57.     $bulan = substr($date, 5, 2); // memisahkan format bulan menggunakan substring
  58.     $tgl   = $exp_tgl[2]; // memisahkan format tanggal menggunakan substring
  59.    
  60.     $result =$tgl . " " . $BulanIndo[(int)$bulan-1] . " ". $tahun;
  61.     return($result);
  62. }
  63. function generate_uuid() {
  64.     return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
  65.         mt_rand( 0, 0xffff ),
  66.         mt_rand( 0, 0xffff ),      
  67.         mt_rand( 0, 0xffff ),      
  68.         mt_rand( 0, 0x0fff ) | 0x4000,     
  69.         mt_rand( 0, 0x3fff ) | 0x8000,     
  70.         mt_rand( 0, 0xffff ),
  71.         mt_rand( 0, 0xffff ),
  72.         mt_rand( 0, 0xffff )
  73.     );
  74. }
  75. $randomUUID = generate_uuid();
  76. $data   = null;
  77.  
  78.  
  79. header("Content-type: application/json; charset=utf-8");
  80. $headers    = apache_request_headers();
  81. $grant_type = $_POST['grant_type'];
  82. $body       = file_get_contents('php://input');
  83. $string     =json_encode($body);
  84. $json_a     =json_decode($string,true);
  85. $data       = json_decode($json_a);
  86.  
  87.  
  88.     $access_token_send              = substr($headers['Authorization'],7);
  89.     $access_token_send              = str_replace("{","",$access_token_send);
  90.     $access_token_send              = str_replace("}","",$access_token_send);
  91.     $access_time                    = date('Y-m-d H:i:s');
  92.     $log_created_at                 = date('Y-m-d H:i:s');
  93.    
  94.     $check_time                     = "SELECT * FROM public.log_payment
  95.                                        WHERE token_id='".$access_token_send."'";
  96.     $hasilTime                      = pg_query($conn,$check_time);
  97.     $dataTime                       = pg_fetch_assoc($hasilTime);
  98.    
  99.    
  100.    
  101.     if ($access_time <= $dataTime['log_expired_at']){
  102.         $Result_Expired             ="true";
  103.     }else{
  104.         $Result_Expired             ="false";
  105.     }
  106.    
  107.     $CompanyCode                    = $data->CompanyCode;
  108.     $CustomerNumber                 = $data->CustomerNumber;
  109.     $RequestID                      = $data->RequestID;
  110.     $ChannelType                    = $data->ChannelType;
  111.     $TransactionDate                = $data->TransactionDate;
  112.     $AdditionalData                 = $data->AdditionalData;
  113.    
  114.    
  115.     $check_CN               = "SELECT a.*,b.account_name FROM public.sales_order a
  116.                                INNER JOIN account b on (b.account_id=a.account_id)
  117.                                WHERE a.payment_account_number='".$kodedobuy.$CustomerNumber."'
  118.                                AND a.sales_order_paid_datetime IS NULL
  119.                                AND a.sales_order_deleted_at IS NULL
  120.                                AND a.sales_order_status_payment_id='0'";
  121.     $hasilCN                = pg_query($conn,$check_CN);
  122.     $dataCN                 = pg_fetch_assoc($hasilCN);
  123.    
  124.     $hexa ='{"CompanyCode":"'.$CompanyCode.'","CustomerNumber":"'.$CustomerNumber.'","RequestID":"'.$RequestID.'","ChannelType":"'.$ChannelType.'","TransactionDate":"'.$TransactionDate.'","AdditionalData":"'.$AdditionalData.'"}';
  125.    
  126.     $hexa= str_replace("\n", '', $hexa);
  127.     $hexa= str_replace(" ", '', $hexa);
  128.     $RequestBody    = strtolower(hash('sha256', $hexa));
  129.     $StringToSign   = "POST:/api-mobile/pages/va/bills/:".$access_token_send.":".$RequestBody.":".$headers['X-BCA-Timestamp']."";
  130.     $StringToSign   = str_replace("\n", '', $StringToSign);
  131.     $StringToSign   = str_replace(" ", '', $StringToSign);
  132.     $apiSecret      = "c357d776-ce9b-43ba-8153-ed3a42f257bf";
  133.     $signature      = hash_hmac('sha256', $StringToSign, $apiSecret);
  134.    
  135.     $transaksi_date_dobuy   = date('d/m/Y H:i:s');
  136.    
  137.         function validateDateTime($dateStr, $format){
  138.             date_default_timezone_set('UTC');
  139.             $date = DateTime::createFromFormat($format, $dateStr);
  140.             return $date && ($date->format($format) === $dateStr);
  141.         }
  142.        
  143.         $valid_tanggal= validateDateTime(''.$TransactionDate.'', 'd/m/Y H:i:s');
  144.        
  145.         if ($valid_tanggal=="" OR empty($string)):
  146.             $rslt   ="False";
  147.         else:
  148.             $rslt   ="True";
  149.         endif;
  150.    
  151.    
  152.         // echo $signature;exit;
  153.    
  154.         if (!empty($access_token_send) && !empty($headers['X-BCA-Key'])  && !empty($headers['X-BCA-Signature']) && !empty($headers['X-BCA-Timestamp'])){
  155.             if ($CompanyCode == $kodedobuy && !empty($dataCN['sales_order_id']) && $Result_Expired=="true" && $signature==$headers['X-BCA-Signature'] && ($RequestID !="" OR !empty($RequestID)) && ($ChannelType !="" OR !empty($ChannelType)) && ($TransactionDate !="" OR !empty($TransactionDate)) && $rslt=="True"):
  156.                
  157.                 $dataku['Indonesian']       ="Sukses";
  158.                 $dataku['English']          ="Success";
  159.                
  160.                 $datas                      = $dataku;
  161.                
  162.                 $result["CompanyCode"]      = $CompanyCode;
  163.                 $result["CustomerNumber"]   = $CustomerNumber;
  164.                 $result["InquiryStatus"]    = "00";
  165.                 $result["InquiryReason"]    = $datas;
  166.                 $result["RequestID"]        = $RequestID;
  167.                 $result["CustomerName"]     = $dataCN['account_name'];
  168.                 $result["CurrencyCode"]     = "IDR";
  169.                 $result["TotalAmount"]      = $dataCN['sales_order_total'].".00";
  170.                 $result["SubCompany"]       = "00000";
  171.                 $result["DetailBills"]      = null;
  172.                 $result["FreeTexts"]        = [];
  173.                 $result["AdditionalData"]   = "";
  174.                
  175.                        
  176.                         $check_CNS              = "SELECT * FROM public.log_inquiry
  177.                                                    WHERE CustomerNumber='".$CustomerNumber."'
  178.                                                    AND RequestID='".$RequestID."'
  179.                                                    AND CustomerName='".$dataCN['account_name']."'
  180.                                                    AND status='0'";
  181.                         $hasilCNS               = pg_query($conn,$check_CNS);
  182.                         $dataCNS                = pg_fetch_assoc($hasilCNS);
  183.                        
  184.                             $sql_insert_log = "INSERT INTO public.log_inquiry                  
  185.                                                     (id
  186.                                                     ,token_id
  187.                                                     ,log_created_at
  188.                                                     ,customername
  189.                                                     ,requestid
  190.                                                     ,customernumber
  191.                                                     ,status
  192.                                                     ,total_amount)
  193.                                                 VALUES ('".$randomUUID."',
  194.                                                        '".$access_token_send."',
  195.                                                        '".$log_created_at."',
  196.                                                        '".$dataCN['account_name']."',
  197.                                                        '".$RequestID."',
  198.                                                        '".$CustomerNumber."',
  199.                                                        '0',
  200.                                                        '".$dataCN['sales_order_total']."')";
  201.                             $sql_ins_inquiry = pg_query($conn,$sql_insert_log);
  202.                            
  203.                             $filename = "log_query_InquiryBCA.log";
  204.                             $fh = fopen($filename, "a");
  205.                             $content= "\r\n" .date("Y-m-d H:i:s")."\r\n ( ISI QUERY = ".$sql_insert_log." )";
  206.                             fwrite($fh, $content);
  207.                             fclose($fh);
  208.                
  209.             elseif ($CompanyCode == $kodedobuy && empty($dataCN['sales_order_id']) && $Result_Expired=="true" && $signature==$headers['X-BCA-Signature']):
  210.                 $dataku['Indonesian']       ="Nomor Pelanggan Tidak ditemukan";
  211.                 $dataku['English']          ="Customer Number Not Found";
  212.                
  213.                 $datas                      = $dataku;
  214.                
  215.                 $result["CompanyCode"]      = $CompanyCode;
  216.                 $result["CustomerNumber"]   = $CustomerNumber;
  217.                 $result["InquiryStatus"]    = "01";
  218.                 $result["InquiryReason"]    = $datas;
  219.                 $result["RequestID"]        = $RequestID;
  220.                 $result["CustomerName"]     = "";
  221.                 $result["CurrencyCode"]     = "IDR";
  222.                 $result["TotalAmount"]      = "0.00";
  223.                 $result["SubCompany"]       = "00000";
  224.                 $result["DetailBills"]      = null;
  225.                 $result["FreeTexts"]        = [];
  226.                 $result["AdditionalData"]   = "";
  227.             elseif (($CompanyCode =="" OR empty($CompanyCode)) && $Result_Expired=="true" && $signature==$headers['X-BCA-Signature']):
  228.            
  229.                 $dataku['Indonesian']       ="CompanyCode Kosong";
  230.                 $dataku['English']          ="CompanyCode is Empty";
  231.                
  232.                 $datas                      = $dataku;
  233.                
  234.                 $result["CompanyCode"]      = $CompanyCode;
  235.                 $result["CustomerNumber"]   = $CustomerNumber;
  236.                 $result["InquiryStatus"]    = "01";
  237.                 $result["InquiryReason"]    = $datas;
  238.                 $result["RequestID"]        = $RequestID;
  239.                 $result["CustomerName"]     = "";
  240.                 $result["CurrencyCode"]     = "IDR";
  241.                 $result["TotalAmount"]      = "0.00";
  242.                 $result["SubCompany"]       = "00000";
  243.                 $result["DetailBills"]      = null;
  244.                 $result["FreeTexts"]        = [];
  245.                 $result["AdditionalData"]   = "";
  246.            
  247.             elseif (($RequestID =="" OR empty($RequestID)) && $Result_Expired=="true" && $signature==$headers['X-BCA-Signature']):
  248.            
  249.                 $dataku['Indonesian']       ="RequestID Kosong";
  250.                 $dataku['English']          ="RequestID is Empty";
  251.                
  252.                 $datas                      = $dataku;
  253.                
  254.                 $result["CompanyCode"]      = $CompanyCode;
  255.                 $result["CustomerNumber"]   = $CustomerNumber;
  256.                 $result["InquiryStatus"]    = "01";
  257.                 $result["InquiryReason"]    = $datas;
  258.                 $result["RequestID"]        = $RequestID;
  259.                 $result["CustomerName"]     = "";
  260.                 $result["CurrencyCode"]     = "IDR";
  261.                 $result["TotalAmount"]      = "0.00";
  262.                 $result["SubCompany"]       = "00000";
  263.                 $result["DetailBills"]      = null;
  264.                 $result["FreeTexts"]        = [];
  265.                 $result["AdditionalData"]   = "";
  266.             elseif (($ChannelType =="" OR empty($ChannelType)) && $Result_Expired=="true" && $signature==$headers['X-BCA-Signature']):
  267.            
  268.                 $dataku['Indonesian']       ="ChannelType Kosong";
  269.                 $dataku['English']          ="ChannelType is Empty";
  270.                
  271.                 $datas                      = $dataku;
  272.                
  273.                 $result["CompanyCode"]      = $CompanyCode;
  274.                 $result["CustomerNumber"]   = $CustomerNumber;
  275.                 $result["InquiryStatus"]    = "01";
  276.                 $result["InquiryReason"]    = $datas;
  277.                 $result["RequestID"]        = $RequestID;
  278.                 $result["CustomerName"]     = "";
  279.                 $result["CurrencyCode"]     = "IDR";
  280.                 $result["TotalAmount"]      = "0.00";
  281.                 $result["SubCompany"]       = "00000";
  282.                 $result["DetailBills"]      = null;
  283.                 $result["FreeTexts"]        = [];
  284.                 $result["AdditionalData"]   = "";
  285.             elseif (($TransactionDate =="" OR empty($TransactionDate)) && $Result_Expired=="true" && $signature==$headers['X-BCA-Signature']):
  286.            
  287.                 $dataku['Indonesian']       ="TransactionDate Kosong";
  288.                 $dataku['English']          ="TransactionDate is Empty";
  289.                
  290.                 $datas                      = $dataku;
  291.                
  292.                 $result["CompanyCode"]      = $CompanyCode;
  293.                 $result["CustomerNumber"]   = $CustomerNumber;
  294.                 $result["InquiryStatus"]    = "01";
  295.                 $result["InquiryReason"]    = $datas;
  296.                 $result["RequestID"]        = $RequestID;
  297.                 $result["CustomerName"]     = "";
  298.                 $result["CurrencyCode"]     = "IDR";
  299.                 $result["TotalAmount"]      = "0.00";
  300.                 $result["SubCompany"]       = "00000";
  301.                 $result["DetailBills"]      = null;
  302.                 $result["FreeTexts"]        = [];
  303.                 $result["AdditionalData"]   = "";
  304.                
  305.             elseif ($rslt=="False" && $Result_Expired=="true" && $signature==$headers['X-BCA-Signature']):
  306.            
  307.                 $dataku['Indonesian']       ="Format TransactionDate Tidak Valid";
  308.                 $dataku['English']          ="Invalid date Format for TransactionDate";
  309.                
  310.                 $datas                      = $dataku;
  311.                
  312.                 $result["CompanyCode"]      = $CompanyCode;
  313.                 $result["CustomerNumber"]   = $CustomerNumber;
  314.                 $result["InquiryStatus"]    = "01";
  315.                 $result["InquiryReason"]    = $datas;
  316.                 $result["RequestID"]        = $RequestID;
  317.                 $result["CustomerName"]     = "";
  318.                 $result["CurrencyCode"]     = "IDR";
  319.                 $result["TotalAmount"]      = "0.00";
  320.                 $result["SubCompany"]       = "00000";
  321.                 $result["DetailBills"]      = null;
  322.                 $result["FreeTexts"]        = [];
  323.                 $result["AdditionalData"]   = "";
  324.             else:
  325.                 $result["ErrorMessage"] = "access_token/CompanyCode/CustomerNumber tidak valid";
  326.             endif;
  327.         }else{
  328.            
  329.             $result["ErrorMessage"] = "access_token/X-BCA-Key/X-BCA-Timestamp dan X-BCA-Signature kosong";
  330.         }
  331.        
  332.         echo json_encode($result);
  333.        
  334. exit;
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement