<?php $method_name = route(1); if( !countRow(["table"=>"payment_methods","where"=>["method_get"=>$method_name] ]) ): header("Location:".site_url()); exit(); endif; $method = $conn->prepare("SELECT * FROM payment_methods WHERE method_get=:get "); $method ->execute(array("get"=>$method_name )); $method = $method->fetch(PDO::FETCH_ASSOC); $extras = json_decode($method["method_extras"],true); if( $method_name == "shopier" ): ## Shopier başla ## $post = $_POST; $order_id = $post['platform_order_id']; $status = $post['status']; $payment_id = $post['payment_id']; $installment = $post['installment']; $random_nr = $post['random_nr']; $signature = base64_decode($_POST["signature"]); $expected = hash_hmac('SHA256', $random_nr.$order_id, $extras["apiSecret"], true); if( $signature != $expected ): header("Location:".site_url()); endif; if( $status == 'success' ): if( countRow(["table"=>"payments","where"=>["payment_privatecode"=>$order_id,"payment_delivery"=>1 ] ]) ): $payment = $conn->prepare("SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_privatecode=:orderid "); $payment ->execute(array("orderid"=>$order_id)); $payment = $payment->fetch(PDO::FETCH_ASSOC); $payment_bonus = $conn->prepare("SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1 "); $payment_bonus -> execute(array("method"=>$method["id"],"from"=>$payment["payment_amount"])); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if( $payment_bonus ): $amount = ($payment["payment_amount"]+($payment["payment_amount"]*$payment_bonus["bonus_amount"]/100)); else: $amount = $payment["payment_amount"]; endif; $extra = ($_POST); $extra = json_encode($extra); $conn->beginTransaction(); $update = $conn->prepare("UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery, payment_extra=:extra WHERE payment_id=:id "); $update = $update->execute(array("balance"=>$payment["balance"],"status"=>3,"delivery"=>2,"extra"=>$extra,"id"=>$payment["payment_id"])); $balance = $conn->prepare("UPDATE clients SET balance=:balance WHERE client_id=:id "); $balance = $balance->execute(array("id"=>$payment["client_id"],"balance"=>$payment["balance"]+$amount)); $insert= $conn->prepare("INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date "); if( $payment_bonus ): $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla %".$payment_bonus["bonus_amount"]." bonus dahil ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); else: $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); endif; if( $update && $balance ): $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission else: $conn->rollBack(); endif; else: endif; else: $update = $conn->prepare("UPDATE payments SET payment_status=:status, payment_delivery=:delivery WHERE payment_privatecode=:code "); $update = $update->execute(array("status"=>2,"delivery"=>1,"code"=>$order_id)); endif; ## shopier bitti ## header("Location:".site_url()); elseif( $method_name == "paytr" ): ## paytr başla ## if(!$_POST): die("OK"); endif; $post = $_POST; $order_id = $post['merchant_oid']; $payment = $conn->prepare("SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_privatecode=:orderid "); $payment ->execute(array("orderid"=>$order_id)); $payment = $payment->fetch(PDO::FETCH_ASSOC); $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method ->execute(array("id"=>$payment["payment_method"] )); $method = $method->fetch(PDO::FETCH_ASSOC); $extras = json_decode($method["method_extras"],true); $merchant_key = $extras["merchant_key"]; $merchant_salt = $extras["merchant_salt"]; $hash = base64_encode(hash_hmac('sha256', $post['merchant_oid'].$merchant_salt.$post['status'].$post['total_amount'], $merchant_key, true) ); if( $hash != $post['hash'] ) die('PAYTR notification failed: bad hash'); if( $post['status'] == 'success' ): if( countRow(["table"=>"payments","where"=>["payment_privatecode"=>$order_id,"payment_delivery"=>1,"payment_status"=>1 ] ]) ): $payment_bonus = $conn->prepare("SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1 "); $payment_bonus -> execute(array("method"=>$method["id"],"from"=>$payment["payment_amount"])); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if( $payment_bonus ): $amount = ($payment["payment_amount"]+($payment["payment_amount"]*$payment_bonus["bonus_amount"]/100)); else: $amount = $payment["payment_amount"]; endif; $extra = ($_POST); $extra = json_encode($extra); $conn->beginTransaction(); $update = $conn->prepare("UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery, payment_extra=:extra WHERE payment_id=:id "); $update = $update->execute(array("balance"=>$payment["balance"],"status"=>3,"delivery"=>2,"extra"=>$extra,"id"=>$payment["payment_id"])); $balance = $conn->prepare("UPDATE clients SET balance=:balance WHERE client_id=:id "); $balance = $balance->execute(array("id"=>$payment["client_id"],"balance"=>$payment["balance"]+$amount)); $insert= $conn->prepare("INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date "); if( $payment_bonus ): $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla %".$payment_bonus["bonus_amount"]." bonus dahil ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); else: $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); endif; if($settings["alert_newpayment"] == 2): if( $settings["alert_type"] == 3 ): $sendmail = 1; $sendsms = 1; elseif( $settings["alert_type"] == 2 ): $sendmail = 1; $sendsms=0; elseif( $settings["alert_type"] == 1 ): $sendmail=0; $sendsms = 1; endif; if( $sendsms ): SMSUser($settings["admin_telephone"],$amount."Tutarında ".$method["method_name"]." aracılığı ile yeni bir ödeme yapıldı."); endif; if( $sendmail ): sendMail(["subject"=>"Yeni ödeme alındı.","body"=>$amount." Tutarında ".$method["method_name"]." aracılığı ile yeni bir ödeme yapıldı.","mail"=>$settings["admin_mail"]]); endif; endif; if( $update && $balance ): $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission echo "OK"; die; else: $conn->rollBack(); echo "OK"; die; endif; endif; else: $update = $conn->prepare("UPDATE payments SET payment_status=:status, payment_delivery=:delivery WHERE payment_privatecode=:code "); $update = $update->execute(array("status"=>2,"delivery"=>1,"code"=>$order_id)); endif; echo "OK"; die; ## paytr bitti ## elseif( $method_name == "paywant" ): ## paywant başla ## $apiSecret = $extras["apiSecret"]; $SiparisID = $_POST["SiparisID"]; $ExtraData = $_POST["ExtraData"]; $UserID = $_POST["UserID"]; $ReturnData = $_POST["ReturnData"]; $Status = $_POST["Status"]; $OdemeKanali = $_POST["OdemeKanali"]; $OdemeTutari = $_POST["OdemeTutari"]; $NetKazanc = $_POST["NetKazanc"]; $Hash = $_POST["Hash"]; $order_id = $_POST["ExtraData"]; $hashKontrol = base64_encode(hash_hmac('sha256',"$SiparisID|$ExtraData|$UserID|$ReturnData|$Status|$OdemeKanali|$OdemeTutari|$NetKazanc" . $apiKey, $apiSecret, true)); if( $Status == 100 ): if( countRow(["table"=>"payments","where"=>["payment_privatecode"=>$order_id,"payment_delivery"=>1 ] ]) ): $payment = $conn->prepare("SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_privatecode=:orderid "); $payment ->execute(array("orderid"=>$order_id)); $payment = $payment->fetch(PDO::FETCH_ASSOC); $payment_bonus = $conn->prepare("SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1 "); $payment_bonus -> execute(array("method"=>$method["id"],"from"=>$payment["payment_amount"])); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if( $payment_bonus ): $amount = ($payment["payment_amount"]+($payment["payment_amount"]*$payment_bonus["bonus_amount"]/100)); else: $amount = $payment["payment_amount"]; endif; $extra = ($_POST); $extra = json_encode($extra); $conn->beginTransaction(); $update = $conn->prepare("UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery, payment_extra=:extra WHERE payment_id=:id "); $update = $update->execute(array("balance"=>$payment["balance"],"status"=>3,"delivery"=>2,"extra"=>$extra,"id"=>$payment["payment_id"])); $balance = $conn->prepare("UPDATE clients SET balance=:balance WHERE client_id=:id "); $balance = $balance->execute(array("id"=>$payment["client_id"],"balance"=>$payment["balance"]+$amount)); $insert= $conn->prepare("INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date "); if( $payment_bonus ): $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla %".$payment_bonus["bonus_amount"]." bonus dahil ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); else: $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); endif; if($settings["alert_newpayment"] == 2): if( $settings["alert_type"] == 3 ): $sendmail = 1; $sendsms = 1; elseif( $settings["alert_type"] == 2 ): $sendmail = 1; $sendsms=0; elseif( $settings["alert_type"] == 1 ): $sendmail=0; $sendsms = 1; endif; if( $sendsms ): SMSUser($settings["admin_telephone"],$amount."Tutarında ".$method["method_name"]." aracılığı ile yeni bir ödeme yapıldı."); endif; if( $sendmail ): sendMail(["subject"=>"Yeni ödeme alındı.","body"=>$amount." Tutarında ".$method["method_name"]." aracılığı ile yeni bir ödeme yapıldı.","mail"=>$settings["admin_mail"]]); endif; endif; if( $update && $balance ): $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission echo "OK"; else: $conn->rollBack(); echo "NO"; endif; else: echo "NOO"; endif; else: $update = $conn->prepare("UPDATE payments SET payment_status=:status, payment_delivery=:delivery WHERE payment_privatecode=:code "); $update = $update->execute(array("status"=>2,"delivery"=>1,"code"=>$order_id)); echo "NOOO"; endif; ## paywant bitti ## elseif( $method_name == "shoplemo" ): $APIKey = $extras["apiKey"]; $secretKey = $extras["apiSecret"]; if (!$_POST || $_POST['status'] != 'success') { die('Shoplemo.com'); } $_data = json_decode($_POST['data']); // POST temizleme işlemi olduğu için geri düzelttik. $hash = base64_encode(hash_hmac('sha256', $_data['progress_id'] . implode('|', $_data['payment']) . $APIKey, $secretKey, true)); if ($hash != $_data['hash']) { die('Shoplemo: Calculated hashes doesn\'t match!'); } if ($_data['payment']['payment_status'] == 'COMPLETED') { $custom_params = json_decode($_data['custom_params']); $order_id = $custom_params->payment_code; if( countRow(["table"=>"payments","where"=>["payment_privatecode"=>$order_id,"payment_delivery"=>1 ] ]) ): $payment = $conn->prepare("SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_privatecode=:orderid "); $payment ->execute(array("orderid"=>$order_id)); $payment = $payment->fetch(PDO::FETCH_ASSOC); $payment_bonus = $conn->prepare("SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1 "); $payment_bonus -> execute(array("method"=>$method["id"],"from"=>$payment["payment_amount"])); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if( $payment_bonus ): $amount = ($payment["payment_amount"]+($payment["payment_amount"]*$payment_bonus["bonus_amount"]/100)); else: $amount = $payment["payment_amount"]; endif; $extra = ($_POST); $extra = json_encode($extra); $conn->beginTransaction(); $update = $conn->prepare("UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery, payment_extra=:extra WHERE payment_id=:id "); $update = $update->execute(array("balance"=>$payment["balance"],"status"=>3,"delivery"=>2,"extra"=>$extra,"id"=>$payment["payment_id"])); $balance = $conn->prepare("UPDATE clients SET balance=:balance WHERE client_id=:id "); $balance = $balance->execute(array("id"=>$payment["client_id"],"balance"=>$payment["balance"]+$amount)); $insert= $conn->prepare("INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date "); if( $payment_bonus ): $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla %".$payment_bonus["bonus_amount"]." bonus dahil ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); else: $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." API aracılığıyla ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); endif; if($settings["alert_newpayment"] == 2): if( $settings["alert_type"] == 3 ): $sendmail = 1; $sendsms = 1; elseif( $settings["alert_type"] == 2 ): $sendmail = 1; $sendsms=0; elseif( $settings["alert_type"] == 1 ): $sendmail=0; $sendsms = 1; endif; if( $sendsms ): SMSUser($settings["admin_telephone"],$amount."Tutarında ".$method["method_name"]." aracılığı ile yeni bir ödeme yapıldı."); endif; if( $sendmail ): sendMail(["subject"=>"Yeni ödeme alındı.","body"=>$amount." Tutarında ".$method["method_name"]." aracılığı ile yeni bir ödeme yapıldı.","mail"=>$settings["admin_mail"]]); endif; endif; if( $update && $balance ): $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission echo "OK"; else: $conn->rollBack(); echo "NO"; endif; else: if(countRow(["table"=>"payments","where"=>["payment_privatecode"=>$order_id,"payment_delivery"=>2 ] ])) exit("OK"); echo "NOO"; endif; }else{ exit("yükleme işlemi yok"); } elseif ($method_name == 'coinpayments'): $merchant_id = $extras['merchant_id']; $secret = $extras['ipn_secret']; function errorAndDie($error_msg) { die('IPN Error: '.$error_msg); } if (!isset($_POST['ipn_mode']) || $_POST['ipn_mode'] != 'hmac') { $ipnmode = $_POST['ipn_mode']; errorAndDie("IPN Mode is not HMAC $ipnmode"); } if (!isset($_SERVER['HTTP_HMAC']) || empty($_SERVER['HTTP_HMAC'])) { errorAndDie("No HMAC signature sent"); } $merchant = isset($_POST['merchant']) ? $_POST['merchant']:''; if (empty($merchant)) { errorAndDie("No Merchant ID passed"); } if (!isset($_POST['merchant']) || $_POST['merchant'] != trim($merchant_id)) { errorAndDie('No or incorrect Merchant ID passed'); } $request = file_get_contents('php://input'); if ($request === FALSE || empty($request)) { errorAndDie("Error reading POST data"); } $hmac = hash_hmac("sha512", $request, $secret); if ($hmac != $_SERVER['HTTP_HMAC']) { errorAndDie("HMAC signature does not match"); } // HMAC Signature verified at this point, load some variables. $status = intval($_POST['status']); $status_text = $_POST['status_text']; $txn_id = $_POST['txn_id']; $currency1 = $_POST['currency1']; $amount1 = floatval($_POST['amount1']); $order_currency = $settings['site_currency']; $order_total = $amount1; $subtotal = $_POST['subtotal']; $shipping = $_POST['shipping']; /////////////////////////////////////////////////////////////// // Check the original currency to make sure the buyer didn't change it. if ($currency1 != $order_currency) { errorAndDie('Original currency mismatch!'); } if ($amount1 < $order_total) { errorAndDie('Amount is less than order total!'); } if ($status >= 100 || $status == 2) { $user = $conn->prepare("SELECT * FROM clients WHERE email=:email"); $user->execute(array("email" => $_POST['email'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 8, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['txn_id']]])) { if ($status >= 100 || $status == 2) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['txn_id']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $payment_bonus = $conn->prepare('SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1'); $payment_bonus->execute(['method' => $method['id'], 'from' => $payment['payment_amount']]); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if ($payment_bonus) { $amount = $payment['payment_amount'] + (($payment['payment_amount'] * $payment_bonus['bonus_amount']) / 100); } else { $amount = $payment['payment_amount']; } $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); if ($payment_bonus) { $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'] . ' and included %' . $payment_bonus['bonus_amount'] . ' bonus.', 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s') ]); } else { $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s') ]); } if($settings["alert_newpayment"] == 2): if( $settings["alert_type"] == 3 ): $sendmail = 1; $sendsms = 1; elseif( $settings["alert_type"] == 2 ): $sendmail = 1; $sendsms=0; elseif( $settings["alert_type"] == 1 ): $sendmail=0; $sendsms = 1; endif; if( $sendsms ): SMSUser($settings["admin_telephone"],$amount."in the amount ".$method["method_name"]." A new payment has been made through."); endif; if( $sendmail ): sendMail(["subject"=>"New payment received.","body"=>$amount." in the amount ".$method["method_name"]." A new payment has been made through.","mail"=>$settings["admin_mail"]]); endif; endif; if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission echo 'OK'; } else { $conn->rollBack(); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id, payment_method=:payment_method, payment_delivery=:payment_delivery, payment_extra=:payment_extra'); $update = $update->execute(['payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => 6, 'payment_delivery' => 1, 'payment_extra' => $_POST['txn_id']]); } } } die('IPN OK'); elseif($method_name == '2checkout'): /* Instant Payment Notification */ $pass = "AABBCCDDEEFF"; /* pass to compute HASH */ $result = ""; /* string for compute HASH for received data */ $return = ""; /* string to compute HASH for return result */ $signature = $_POST["HASH"]; /* HASH received */ $body = ""; /* read info received */ ob_start(); while(list($key, $val) = each($_POST)){ $$key=$val; /* get values */ if($key != "HASH"){ if(is_array($val)) $result .= ArrayExpand($val); else{ $size = strlen(StripSlashes($val)); /*StripSlashes function to be used only for PHP versions <= PHP 5.3.0, only if the magic_quotes_gpc function is enabled */ $result .= $size.StripSlashes($val); /*StripSlashes function to be used only for PHP versions <= PHP 5.3.0, only if the magic_quotes_gpc function is enabled */ } } } $body = ob_get_contents(); ob_end_flush(); $date_return = date("YmdHis"); $return = strlen($_POST["IPN_PID"][0]).$_POST["IPN_PID"][0].strlen($_POST["IPN_PNAME"][0]).$_POST["IPN_PNAME"][0]; $return .= strlen($_POST["IPN_DATE"]).$_POST["IPN_DATE"].strlen($date_return).$date_return; function ArrayExpand($array){ $retval = ""; for($i = 0; $i < sizeof($array); $i++){ $size = strlen(StripSlashes($array[$i])); /*StripSlashes function to be used only for PHP versions <= PHP 5.3.0, only if the magic_quotes_gpc function is enabled */ $retval .= $size.StripSlashes($array[$i]); /*StripSlashes function to be used only for PHP versions <= PHP 5.3.0, only if the magic_quotes_gpc function is enabled */ } return $retval; } function hmac ($key, $data){ $b = 64; // byte length for md5 if (strlen($key) > $b) { $key = pack("H*",md5($key)); } $key = str_pad($key, $b, chr(0x00)); $ipad = str_pad('', $b, chr(0x36)); $opad = str_pad('', $b, chr(0x5c)); $k_ipad = $key ^ $ipad ; $k_opad = $key ^ $opad; return md5($k_opad . pack("H*",md5($k_ipad . $data))); } $hash = hmac($pass, $result); /* HASH for data received */ $body .= $result."\r\n\r\nHash: ".$hash."\r\n\r\nSignature: ".$signature."\r\n\r\nReturnSTR: ".$return; if($hash == $signature): echo "Verified OK!"; /* ePayment response */ $result_hash = hmac($pass, $return); echo "<EPAYMENT>".$date_return."|".$result_hash."</EPAYMENT>"; endif; elseif ($method_name == 'cardlink'): /* $get = $_REQUEST; $query_string = '?'; foreach ($get as $key => $value) { $query_string .= $key . '=' . $value . '&'; } $query_string;*/ $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 10)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $key = $extra['private_key']; $headers = array( "Accept: application/json", "Authorization: Bearer $key", ); $id = $_REQUEST['TrsId']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://cardlink.link/api/v1/bill/status?id=$id"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_GET, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); curl_setopt($ch, CURLOPT_TIMEOUT, 20); $result = @curl_exec($ch); if (curl_errno($ch)) { die("PAYTR IFRAME connection error. err:" . curl_error($ch)); } curl_close($ch); $result = json_decode($result, 1); $_POST['ORDERID'] = $_REQUEST['InvId']; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 10, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$result['status'] == 'SUCCESS') { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "10", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; exit(); elseif ($method_name == 'wish_money'): $referenceId = $_REQUEST['payment_id']; $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 25)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $channel = $extra['channel']; $secret = $extra['secret']; $website = $extra['website']; $mode = $extra['mode']; $headers = array( "Content-Type: application/json", "channel: $channel", "secret: $secret", "websiteurl: $website" ); if($mode == 'test'){ $url = 'https://lb.sandbox.whish.money/itel-service/api/payment/collect/status'; } else{ $url = 'https://whish.money/itel-service/api/payment/collect/status'; } $post_vals = array( 'currency'=> 'USD', 'externalId' => $referenceId ); $data = json_encode($post_vals); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = @curl_exec($ch); if (curl_errno($ch)) { die("PAYTR IFRAME connection error. err:" . curl_error($ch)); } curl_close($ch); $result = $result?$result:null; $result = json_decode($result,true); $payment_success = @$result['data']['collectStatus'] == 'success' ? true : false; $_POST['ORDERID'] = $referenceId; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 25, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "25", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; elseif($method_name == 'stripe'): $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 26)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $stripe_secret_key = $extra['stripe_secret_key']; $fee = $extra['fee']; $currency = $extra['currency']; require_once('/core/lib/stripe/stripe-php/init.php'); \Stripe\Stripe::setApiKey($stripe_secret_key); if ($_SERVER['REQUEST_METHOD'] === 'GET') { $session_id = $_REQUEST['session_id']; $_POST['ORDERID'] = $session_id; try{ $checkout_session = \Stripe\Checkout\Session::retrieve($session_id); $payment_success = $checkout_session->payment_status == 'paid' ? true : false; } catch(\Exception $e){ echo $e; } } if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => @$_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "26", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } header("Location: ".site_url()); exit; elseif($method_name == 'webmoney'): $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 22)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $purse = $extra['purse']; $secret_key = $extra['secret_key']; require_once($_SERVER['DOCUMENT_ROOT']."/core/lib/webmoney/webmoney.inc.php"); /* Handling payment notification data. */ // error_log(json_encode($_REQUEST)); $wm_prerequest = new WM_Prerequest(); $wm_notif = new WM_Notification(); $we_payment_no = $_REQUEST['LMI_PAYMENT_NO']; $we_amount = $_REQUEST['LMI_PAYMENT_AMOUNT']; $payment_success = false; error_log(json_encode($_REQUEST)); error_log(json_encode( $wm_prerequest)); error_log(json_encode( $wm_notif)); if ($wm_notif->GetForm() != WM_RES_NOPARAM) { if ($wm_notif->CheckMD5($purse, $we_amount, $we_payment_no, $secret_key) == WM_RES_OK) { $payment_success = true; } else { $payment_success = false; } } $_POST['ORDERID'] = $we_payment_no; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 22, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "22", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; exit; elseif ($method_name == 'payeer'): $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 19)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $account = $extra['account']; $apiId = $extra['user_id']; $apiPass = $extra['user_pass']; $referenceId = $_REQUEST['m_orderid']; $merchantId = $_REQUEST['m_shop']; $headers = array( "Accept: application/json" ); $referenceId = $_REQUEST['m_orderid']; $merchantId = $_REQUEST['m_shop']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://payeer.com/ajax/api/api.php"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, "account=$account&apiId=$apiId&apiPass=$apiPass&action=paymentDetails&merchantId=$merchantId&referenceId=$referenceId"); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type: application/x-www-form-urlencoded" )); $result = @curl_exec($ch); if (curl_errno($ch)) { die("PAYTR IFRAME connection error. err:" . curl_error($ch)); } curl_close($ch); $result = json_decode($result, 1); $_POST['ORDERID'] = $referenceId; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 19, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$result['success']) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "19", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; exit; elseif ($method_name == 'kashier'): $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 23)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $paymentApiKey = $extra["api_key"]; if ($_SERVER['REQUEST_METHOD'] === 'GET') { $queryString = ""; foreach ($_GET as $key => $value) { if($key == "signature" || $key== "mode"){ continue; } $queryString = $queryString."&".$key."=".$value; } $queryString = ltrim($queryString, $queryString[0]); $signature = hash_hmac( 'sha256' , $queryString ,$paymentApiKey ,false); if($signature == $_GET["signature"]){ $_POST['ORDERID'] = $_GET['merchantOrderId']; $payment_success = ($_GET['paymentStatus'] == 'SUCCESS') ? true : false; } } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $raw_payload = file_get_contents('php://input'); $json_data = json_decode($raw_payload, true); $data_obj = $json_data['data']; $event = $json_data['event']; sort($data_obj['signatureKeys']); $headers = getallheaders(); // Lower case all keys $headers = array_change_key_case($headers); $kashierSignature = $headers['x-kashier-signature']; $data = []; foreach ($data_obj['signatureKeys'] as $key) { $data[$key] = $data_obj[$key]; } $queryString = http_build_query($data, $numeric_prefix = "", $arg_separator = '&', $encoding_type = PHP_QUERY_RFC3986); $signature = hash_hmac('sha256',$queryString, $paymentApiKey, false);; if ($signature == $kashierSignature && @$event == 'pay') { $_POST['ORDERID'] = $data_obj['merchantOrderId']; $payment_success = ($data_obj['status'] == 'SUCCESS') ? true : false; } } $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 23, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "23", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; header("Location: ".site_url()); exit; elseif ($method_name == 'opay'): $request_body = file_get_contents('php://input'); $request_body = json_decode($request_body,true); $referenceId = @$request_body['payload']['reference']; if(!$referenceId){ exit; } $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 20)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $secret_key = $extra["secret_key"]; $merchant_id = $extra["merchant_id"]; $is_demo = $extra["is_demo"]; if( $is_demo == 1){ $url = 'https://sandboxapi.opaycheckout.com/api/v1/international/cashier/status'; } else{ $url = 'https://api.opaycheckout.com/api/v1/international/cashier/status'; } $data = [ 'country' => 'EG', 'reference' => $referenceId ]; $data2 = (string) json_encode($data,JSON_UNESCAPED_SLASHES); $auth = hash_hmac('sha512', $data2, $secret_key); $data = json_encode($data); $header = ['Content-Type:application/json', 'Authorization:Bearer '. $auth, 'MerchantId:'.$merchant_id]; $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $response = curl_exec($ch); $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error=curl_error($ch); curl_close($ch); if (200 != $httpStatusCode) { print_r("invalid httpstatus:{$httpStatusCode} ,response:$response,detail_error:" . $error, $httpStatusCode); } $result = $response?$response:null; $result = json_decode($result,true); $payment_success = @$result['data']['status'] == 'SUCCESS' ? true : false; $_POST['ORDERID'] = $referenceId; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 20, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "20", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; exit; elseif ($method_name == 'esewa'): $order_id = $_REQUEST['oid']; $merchant_id = $extras['merchant_id']; $is_demo = $extras['is_demo']; $header = 'Content-Type:application/json'; $url = 'https://'.($is_demo ? 'uat.' : '').'esewa.com.np/epay/transrec'; $data =[ 'amt'=> $_REQUEST['amt'], 'rid'=> $_REQUEST['refId'], 'pid'=>$order_id, 'scd'=> $merchant_id ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error=curl_error($ch); curl_close($ch); if (200 != $httpStatusCode) { print_r("invalid httpstatus:{$httpStatusCode} ,response:$response,detail_error:" . $error, $httpStatusCode); } $result = $response?$response:null; $result = strtoupper( trim( strip_tags( $result ) ) ) ; $payment_success = @$result == 'SUCCESS' ? true : false; $_POST['ORDERID'] = $order_id; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; header("Location: ".site_url()); elseif ($method_name == 'khalti'): $token = $_REQUEST['token']; $order_id = $_REQUEST['payment_id']; $secret_key = $extras['secret_key']; $amount = $_REQUEST['amount']; $headers = ['Authorization: Key '.$secret_key]; $url = 'https://khalti.com/api/v2/payment/verify/'; $data =http_build_query([ 'token'=> $token, 'amount'=> $amount, ]); $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $response = curl_exec($ch); $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error=curl_error($ch); curl_close($ch); if (200 != $httpStatusCode) { print_r("invalid httpstatus:{$httpStatusCode} ,response:$response,detail_error:" . $error, $httpStatusCode); } $result = $response?$response:null; $result = json_decode($result,true); $url_2 = 'https://khalti.com/api/v2/payment/status/?token='.$token.'&amount='.$amount; $ch_2 = curl_init(); curl_setopt($ch_2, CURLOPT_TIMEOUT, 0); curl_setopt($ch_2, CURLOPT_URL, $url_2); curl_setopt($ch_2, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch_2, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch_2, CURLOPT_POST, false); curl_setopt($ch_2, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch_2, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch_2, CURLOPT_HEADER, false); $response_2 = curl_exec($ch_2); $httpStatusCode = curl_getinfo($ch_2, CURLINFO_HTTP_CODE); $error=curl_error($ch_2); curl_close($ch_2); if (200 != $httpStatusCode) { print_r("invalid httpstatus:{$httpStatusCode} ,response:$response_2,detail_error:" . $error, $httpStatusCode); } $result_2 = $response_2?$response_2:null; $result_2 = json_decode($result_2,true); $payment_success = $result_2['state'] == 'Complete' ? true : false; $_POST['ORDERID'] = $order_id; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery , payment_note=:payment_note WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id'],'payment_note'=> @$result_2['txn_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status, payment_note=:payment_note WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'],'payment_note'=> @$result_2['txn_id'])); } endif; header("Location: ".site_url()); elseif ($method_name == 'mollie'): ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); error_reporting(E_ALL); require_once('core/lib/mollie/vendor/autoload.php'); require_once('core/lib/mollie/examples/functions.php'); $api_key = $extras["api_key"]; $mollie = new \Mollie\Api\MollieApiClient(); $mollie->setApiKey($api_key); $payment = $mollie->payments->get($_POST['id']); $order_id = $payment->metadata->order_id; if ($payment->isPaid() && ! $payment->hasRefunds() && ! $payment->hasChargebacks()){ $payment_success = true; } $_POST['ORDERID'] = $order_id; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery , payment_note=:payment_note WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id'],'payment_note'=> @$result_2['txn_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status, payment_note=:payment_note WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'],'payment_note'=> @$result_2['txn_id'])); } endif; header("Location: ".site_url()); elseif ($method_name == 'mercadopago'): $body = file_get_contents('php://input'); //file_put_contents(time().rand(100,999999),$body); $body = json_decode($body,true); if(@$body['action'] == 'payment.updated'){ $paymentId = @$body['data']['id']; //file_put_contents('payment_id',$paymentId); } else{ exit; } $access_token = $extras['access_token']; $paymentUrl = "https://api.mercadopago.com/v1/payments/" . $paymentId . "?access_token=" . $access_token; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $paymentUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $paymentData = curl_exec($ch); curl_close($ch); $payment = json_decode($paymentData, true); //file_put_contents('mercado_response',json_encode($payment)); $referenceId = @$payment['additional_info']['items'][0]['id']; if(!$referenceId){ header('location:' . site_url('')); exit; } $payment_success = @$payment['status'] == 'approved' ? true : false; $_POST['ORDERID'] = $referenceId; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url('')); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url('addfunds')); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => $method['id'], 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; header('location:' . site_url('')); exit; elseif ($method_name == 'youcan'): $order_id = $_REQUEST['order_id']; $transaction_id = $_REQUEST['transaction_id']; $is_demo = true; $private_key = $extras['private_key']; $is_demo = $extras['is_demo']; $header = 'Content-Type:application/json'; $url = 'https://youcanpay.com/'.($is_demo ? 'sandbox/' : '').'api/transactions/'.$transaction_id.'?pri_key='.$private_key; $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $response = curl_exec($ch); $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error=curl_error($ch); curl_close($ch); if (200 != $httpStatusCode) { print_r("invalid httpstatus:{$httpStatusCode} ,response:$response,detail_error:" . $error, $httpStatusCode); } $result = $response?$response:null; $result = json_decode($result,true); $payment_success = @$result['status'] == 1 ? true : false; $_POST['ORDERID'] = $order_id; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 28, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "28", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; header("Location: ".site_url()); elseif ($method_name == 'thawani'): $referenceId = @$_REQUEST['payment_id']; if(!$referenceId){ exit; } $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 27)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $secret_key = $extra["secret_key"]; $is_demo = $extra["is_demo"]; $url = 'https://'.($is_demo ? 'uat' : '').'checkout.thawani.om/api/v1/checkout/reference/'.$referenceId; $header = ['Content-Type:application/json', 'thawani-api-key:'.$secret_key]; $ch = curl_init(); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); $response = curl_exec($ch); $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error=curl_error($ch); curl_close($ch); if (200 != $httpStatusCode) { print_r("invalid httpstatus:{$httpStatusCode} ,response:$response,detail_error:" . $error, $httpStatusCode); } $result = $response?$response:null; $result = json_decode($result,true); $payment_success = @$result['data']['payment_status'] == 'paid' ? true : false; $_POST['ORDERID'] = $referenceId; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 27, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$payment_success) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "27", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); } endif; exit; elseif ($method_name == 'perfectmoney'): error_reporting(1); ini_set("display_errors",1); define( 'BASEPATH', true ); require_once($_SERVER['DOCUMENT_ROOT']."/core/lib/perfectmoney/perfectmoney_api.php"); if (isset($_REQUEST['PAYMENT_BATCH_NUM'])) { $tnx_id = $_REQUEST['PAYMENT_ID']; $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $tnx_id)); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); // check V2_hash $v2_hash = false; $v2_hash = check_v2_hash($extras['passphrase']); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 18, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $tnx_id]])) { if ($getfrompay && $getfrompay["payment_amount"] == $_REQUEST['PAYMENT_AMOUNT'] && $v2_hash) { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $tnx_id]); $payment = $payment->fetch(PDO::FETCH_ASSOC); if($settings['currency'] == "USD"){ $payment['payment_amount'] = $payment['payment_amount']/$settings["dolar_charge"]; } $payment_bonus = $conn->prepare('SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1'); $payment_bonus->execute(['method' => $method['id'], 'from' => $payment['payment_amount']]); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if ($payment_bonus) { $amount = $payment['payment_amount'] + (($payment['payment_amount'] * $payment_bonus['bonus_amount']) / 100); } else { $amount = $payment['payment_amount']; } $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); if ($payment_bonus) { $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["currency"] . ' payment has been made with ' . $method['method_name'] . ' and included %' . $payment_bonus['bonus_amount'] . ' bonus.', 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s') ]); } else { $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s') ]); } if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:'.site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:'.site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id, payment_method=:payment_method, payment_delivery=:payment_delivery, payment_extra=:payment_extra'); $update = $update->execute(['payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => 18, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]); header('location:'.site_url()); } }else{ header('location:'.site_url()); } } else { header('location:'.site_url()); } elseif ($method_name == 'paypal'): require_once "lib/paypal/autoload.php"; $method = $conn->prepare("SELECT * FROM payment_methods WHERE id=:id "); $method->execute(array("id" => 11)); $method = $method->fetch(PDO::FETCH_ASSOC); $extra = json_decode($method["method_extras"], true); $clientId = $extra['clientId']; $clientSecret = $extra['clientSecret']; if(@$extra['mode'] == 'live'){ $environment = new PayPalCheckoutSdk\Core\ProductionEnvironment($clientId, $clientSecret); } else{ $environment = new PayPalCheckoutSdk\Core\SandboxEnvironment($clientId, $clientSecret); } $client = new PayPalCheckoutSdk\Core\PayPalHttpClient($environment); $order_id = $_POST['ORDERID'] = $_REQUEST['token']; $request = new PayPalCheckoutSdk\Orders\OrdersCaptureRequest($order_id); $request->prefer('return=representation'); try { // Call API with your client and get a response for your call $response = $client->execute($request); $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 11, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])): if (@$response->result->status == 'COMPLETED') { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $amount = $payment['payment_amount']; $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s')]); if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:' . site_url('addfunds')); echo 'OK'; } else { $conn->rollBack(); header('location:' . site_url('addfunds')); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id and payment_method=:payment_method and payment_delivery=:payment_delivery and payment_extra=:payment_extra'); $update->execute(array('payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => "11", 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID'])); header('location:' . site_url('addfunds')); } else: header('location:' . site_url('addfunds')); endif; } catch (Throwable $ex) { /*echo $ex->statusCode; print_r($ex->getMessage());*/ header('location:' . site_url('addfunds')); } exit(); elseif($method_name == 'paytm'): require_once("lib/paytm/encdec_paytm.php"); $paytmChecksum = ""; $paramList = array(); $isValidChecksum = "FALSE"; $paramList = $_POST; $paytmChecksum = isset($_POST["CHECKSUMHASH"]) ? $_POST["CHECKSUMHASH"] : ""; //Sent by Paytm pg $isValidChecksum = verifychecksum_e($paramList, $extras['merchant_key'], $paytmChecksum); //will return TRUE or FALSE string. if($isValidChecksum == "TRUE"): $getfrompay = $conn->prepare("SELECT * FROM payments WHERE payment_extra=:payment_extra"); $getfrompay->execute(array("payment_extra" => $_POST['ORDERID'])); $getfrompay = $getfrompay->fetch(PDO::FETCH_ASSOC); $user = $conn->prepare("SELECT * FROM clients WHERE client_id=:client_id"); $user->execute(array("client_id" => $getfrompay['client_id'])); $user = $user->fetch(PDO::FETCH_ASSOC); if (countRow(['table' => 'payments', 'where' => ['client_id' => $user['client_id'], 'payment_method' => 12, 'payment_status' => 1, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]])) { if ($_POST["STATUS"] == "TXN_SUCCESS") { $payment = $conn->prepare('SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_extra=:extra '); $payment->execute(['extra' => $_POST['ORDERID']]); $payment = $payment->fetch(PDO::FETCH_ASSOC); $payment_bonus = $conn->prepare('SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1'); $payment_bonus->execute(['method' => $method['id'], 'from' => $payment['payment_amount']]); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if ($payment_bonus) { $amount = $payment['payment_amount'] + (($payment['payment_amount'] * $payment_bonus['bonus_amount']) / 100); } else { $amount = $payment['payment_amount']; } $conn->beginTransaction(); $update = $conn->prepare('UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery WHERE payment_id=:id '); $update = $update->execute(['balance' => $payment['balance'], 'status' => 3, 'delivery' => 2, 'id' => $payment['payment_id']]); $balance = $conn->prepare('UPDATE clients SET balance=:balance WHERE client_id=:id '); $balance = $balance->execute(['id' => $payment['client_id'], 'balance' => $payment['balance'] + $amount]); $insert = $conn->prepare('INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date '); if ($payment_bonus) { $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'] . ' and included %' . $payment_bonus['bonus_amount'] . ' bonus.', 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s') ]); } else { $insert = $insert->execute(['c_id' => $payment['client_id'], 'action' => 'New ' . $amount . ' ' . $settings["site_currency"] . ' payment has been made with ' . $method['method_name'], 'ip' => GetIP(), 'date' => date('Y-m-d H:i:s') ]); } if ($update && $balance) { $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission header('location:'.site_url()); echo 'OK'; } else { $conn->rollBack(); header('location:'.site_url()); echo 'NO'; } } else { $update = $conn->prepare('UPDATE payments SET payment_status=:payment_status WHERE client_id=:client_id, payment_method=:payment_method, payment_delivery=:payment_delivery, payment_extra=:payment_extra'); $update = $update->execute(['payment_status' => 2, 'client_id' => $user['client_id'], 'payment_method' => 12, 'payment_delivery' => 1, 'payment_extra' => $_POST['ORDERID']]); } } endif; header('location:'.site_url()); elseif( $method_name == "weepay" ): ## weepay başla ## $apiSecret = $extras["secret_key"]; $status = $_POST["paymentStatus"]; $status2 = $_POST["isSuccessful"]; $code = $_POST["errorCode"]; $secret = $_POST["secretKey"]; $order_id = $_GET["token"]; print_r($_POST); if( empty($code) && $status2 = true && $status == true && $secret == $apiSecret): if( countRow(["table"=>"payments","where"=>["payment_privatecode"=>$order_id,"payment_delivery"=>1 ] ]) ): $payment = $conn->prepare("SELECT * FROM payments INNER JOIN clients ON clients.client_id=payments.client_id WHERE payments.payment_privatecode=:orderid "); $payment ->execute(array("orderid"=>$order_id)); $payment = $payment->fetch(PDO::FETCH_ASSOC); $payment_bonus = $conn->prepare("SELECT * FROM payments_bonus WHERE bonus_method=:method && bonus_from<=:from ORDER BY bonus_from DESC LIMIT 1 "); $payment_bonus -> execute(array("method"=>$method["id"],"from"=>$payment["payment_amount"])); $payment_bonus = $payment_bonus->fetch(PDO::FETCH_ASSOC); if( $payment_bonus ): $amount = ($payment["payment_amount"]+($payment["payment_amount"]*$payment_bonus["bonus_amount"]/100)); else: $amount = $payment["payment_amount"]; endif; $extra = ($_POST); $extra = json_encode($extra); $conn->beginTransaction(); $update = $conn->prepare("UPDATE payments SET client_balance=:balance, payment_status=:status, payment_delivery=:delivery, payment_extra=:extra WHERE payment_id=:id "); $update = $update->execute(array("balance"=>$payment["balance"],"status"=>3,"delivery"=>2,"extra"=>$extra,"id"=>$payment["payment_id"])); $balance = $conn->prepare("UPDATE clients SET balance=:balance WHERE client_id=:id "); $balance = $balance->execute(array("id"=>$payment["client_id"],"balance"=>$payment["balance"]+$amount)); $insert= $conn->prepare("INSERT INTO client_report SET client_id=:c_id, action=:action, report_ip=:ip, report_date=:date "); if( $payment_bonus ): $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." via API %".$payment_bonus["bonus_amount"]." bonus dahil ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); else: $insert= $insert->execute(array("c_id"=>$payment["client_id"],"action"=>$method["method_name"]." via API ".$amount."balance loaded","ip"=>GetIP(),"date"=>date("Y-m-d H:i:s") )); endif; if($settings["alert_newpayment"] == 2): if( $settings["alert_type"] == 3 ): $sendmail = 1; $sendsms = 1; elseif( $settings["alert_type"] == 2 ): $sendmail = 1; $sendsms=0; elseif( $settings["alert_type"] == 1 ): $sendmail=0; $sendsms = 1; endif; if( $sendsms ): SMSUser($settings["admin_telephone"],$amount."in the amount ".$method["method_name"]." A new payment has been made through."); endif; if( $sendmail ): sendMail(["subject"=>"New payment received.","body"=>$amount." in the amount ".$method["method_name"]." A new payment has been made through.","mail"=>$settings["admin_mail"]]); endif; endif; if( $update && $balance ): $conn->commit(); // referralCommission referralCommission($payment,$payment["payment_amount"],$method['id']); // referralCommission echo "OK"; header("Location:".site_url()); else: $conn->rollBack(); echo "NO"; header("Location:".site_url()); endif; else: echo "NOO"; header("Location:".site_url()); endif; else: $update = $conn->prepare("UPDATE payments SET payment_status=:status, payment_delivery=:delivery WHERE payment_privatecode=:code "); $update = $update->execute(array("status"=>2,"delivery"=>1,"code"=>$order_id)); echo "NOOO"; header("Location:".site_url()); endif; ## weepay bitti ## endif;