Merhaba allta bulunan kod içersinde paywant ödeme eklettim fakat referansın ödeme yapınca komisyon vermiyor webmoney gibi diğer ödeme yöntemlerinde sorunsuz çalısıyor bu kodda ne eksik acaba yardım ederseniz sevinirim.Teşekkürler
<?php

use dezlov\PayPal\IpnListener;
use Jimmerioles\BitcoinCurrencyConverter\Converter;

class PaymentModel
{

    const PAYMENT_PAYPAL_ID = 1;
    const PAYMENT_STRIPE_ID = 2;
    const PAYMENT_WEBMONEY_ID = 3;
    const PAYMENT_PERFECT_MONEY = 4;
    /*const PAYMENT_SKRILL_ID = 5;*/
    const PAYMENT_GEARY_ID = 6;
    const PAYMENT_PAYZA_ID = 7;
    const PAYMENT_PAYTM_ID = 8;
    const PAYMENT_COINPAYMENTS_ID = 9;
    const PAYMENT_PAYWANT_ID = 10;

    public static function paymentInfo()
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $method = intval($_GET['method']);
        $get = $database->prepare('SELECT minlimit, maxlimit FROM payment_methods WHERE id = :id');
        $get->execute([':id' => $method]);
        echo json_encode($get->fetchObject());
    }

    public static function history(int $page = 0, int $itemsPerPage = 20)
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $get = $database->prepare("SELECT * FROM transactions WHERE user_id = :userid ORDER BY created DESC LIMIT " . $itemsPerPage . " OFFSET " . $itemsPerPage * $page);
        $get->execute(array(':userid' => Session::get('user_id')));

        return $get->fetchAll();
    }

    public static function paypalsettings()
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $get = $database->prepare('SELECT * FROM payment_methods WHERE id = 1');
        $get->execute();
        return $get->fetchObject();
    }

    public static function gearySettings()
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $get = $database->prepare('SELECT * FROM payment_methods WHERE id = 6');
        $get->execute();
        return $get->fetchObject();
    }

    // START STRIPE METHOD

    public static function stripeSettings()
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $get = $database->prepare('SELECT * FROM payment_methods WHERE id = 2');
        $get->execute();
        return $get->fetchObject();
    }

    public static function stripe()
    {
        $secret = self::stripeSettings()->field2;

        // Stripe settings
        $stripesettings = self::stripeSettings();

        // From post
        $token = Request::post('stripeToken', true);
        $amount = Request::post('amountInCents', true);
        $amountnormal = $amount / 100;
        $email = Request::post('stripeEmail', true);

        $username = $_SESSION['user_name'];

        $database = DatabaseFactory::getFactory()->getConnection();

        if (empty($amount)) {
            Session::add('feedback_negative', Text::get('Amountisemptyenteravalidvalue'));
            return false;
        } elseif (!filter_var($amount, FILTER_VALIDATE_FLOAT)) {
            Session::add('feedback_negative', Text::get('Amountisnotfloatnumber'));
            return false;
        } elseif ($amountnormal > $stripesettings->maxlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountismorethanmaxlimit')." ($$stripesettings->maxlimit), ".Text::get('pleasetryagain'));
            return false;
        } elseif ($amountnormal < $stripesettings->minlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountislessthanminlimit')." ($$stripesettings->minlimit), ".Text::get('pleasetryagain'));
            return false;
        } elseif ($stripesettings->enabled == 0) {
            Session::add('feedback_negative', Text::get('StripePaymentMethodisdisabled'));
            return false;
        } else {

                $createCharge = SubscriptionModel::processStripe($secret, $token, $email, $amount, 'usd', "Add funds to account: $username");
                if(isset($createCharge['success'])) {

                    /* Check if its users first payment & user is referred by someone, if yes
                     * someone gets 10% etc of the payment amount depending on table settings->affiliate_comission value
                     */
                    AffiliateModel::rewardReferrer(Session::get('user_id'), $amountnormal, $createCharge['customerId']);

                    // Add balance
                    $add = $database->prepare('UPDATE users SET balance = balance + :amount WHERE user_id = :userid');
                    $executeAdd = $add->execute(array(
                        ':userid' => Session::get('user_id'),
                        ':amount' => $amountnormal
                    ));

                    // Add transaction history
                    $addtran = $database->prepare('INSERT INTO transactions (user_id, payment_id, complete, created, amount, method) VALUES (:userid, :payment, :complete, :created, :amount, :method)');
                    $executeAddtran = $addtran->execute(array(
                        ':userid' => Session::get('user_id'),
                        ':payment' => $createCharge['customerId'],
                        ':complete' => 1,
                        ':created' => date('Y-m-d H:i:s'),
                        ':amount' => $amountnormal,
                        ':method' => 'Stripe'
                    ));

                    if ($executeAdd && $executeAddtran) {
                        Session::add('feedback_positive', Text::get('Youhavesuccessfullyadded').' <b>$' . $amountnormal . '</b> '.Text::get('toyourbalance'));
                    }
                } else {
                    Session::add('feedback_negative', Text::get('Couldnotprocesspayment'));
                }
        }
    }

    public static function webmoneySettings()
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $get = $database->prepare('SELECT * FROM payment_methods WHERE id = 3');
        $get->execute();
        return $get->fetchObject();
    }

    public static function paywantSettings()
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $get = $database->prepare('SELECT * FROM payment_methods WHERE id = 10');
        $get->execute();
        return $get->fetchObject();
    }
    public static function paywant(){
      if($_POST){
        error_reporting(0);
        $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"];
        $database = DatabaseFactory::getFactory()->getConnection();
        $add = $database->prepare('UPDATE users SET balance = balance + :amount WHERE user_id = :userid');
        $add->execute(array(
            ':userid' => $UserID,
            ':amount' => $OdemeTutari
        ));
        $addtran = $database->prepare('INSERT INTO transactions (user_id, payment_id, complete, created, amount, method) VALUES (:userid, :payment, :complete, :created, :amount, :method)');
        $addtran->execute(array(
            ':userid' => $UserID,
            ':payment' => '',
            ':complete' => 1,
            ':created' => date('Y-m-d H:i:s'),
            ':amount' => $OdemeTutari,
            ':method' => 'PayWant'
        ));
        echo 'OK';
      }
    }
    public static function webmoney()
    {
        // Prerequest flag
        if ($_POST['LMI_PREREQUEST'] == 1) {
            // The merchant's purse to which the customer has made payment. Format is a letter and 12 digits.
            if ($_POST['LMI_PAYEE_PURSE'] == self::webmoneySettings()->field1) echo 'YES';
        } else {
            $key =
                $_POST['LMI_PAYEE_PURSE'] .
                $_POST['LMI_PAYMENT_AMOUNT'] .
                $_POST['LMI_PAYMENT_NO'] .
                $_POST['LMI_MODE'] .
                $_POST['LMI_SYS_INVS_NO'] .
                $_POST['LMI_SYS_TRANS_NO'] .
                $_POST['LMI_SYS_TRANS_DATE'] .
                self::webmoneySettings()->field2 .
                $_POST['LMI_PAYER_PURSE'] .
                $_POST['LMI_PAYER_WM'];

            if (strtoupper(hash('sha256', $key)) != $_POST['LMI_HASH']) {
                exit;
            }

            $userid = filter_var($_POST['userid'], FILTER_SANITIZE_NUMBER_INT);

            $database = DatabaseFactory::getFactory()->getConnection();

            AffiliateModel::rewardReferrer($userid, $_POST['LMI_PAYMENT_AMOUNT']);

            // Add balance
            $add = $database->prepare('UPDATE users SET balance = balance + :amount WHERE user_id = :userid');
            $add->execute(array(
                ':userid' => $userid,
                ':amount' => $_POST['LMI_PAYMENT_AMOUNT']
            ));

            // Add transaction history
            $addtran = $database->prepare('INSERT INTO transactions (user_id, payment_id, complete, created, amount, method) VALUES (:userid, :payment, :complete, :created, :amount, :method)');
            $addtran->execute(array(
                ':userid' => $userid,
                ':payment' => '',
                ':complete' => 1,
                ':created' => date('Y-m-d H:i:s'),
                ':amount' => $_POST['LMI_PAYMENT_AMOUNT'],
                ':method' => 'WebMoney'
            ));

        }

    }

    public static function processWebmoney()
    {
        // Amount user would like to deposit to account balance
        $price = Request::post('price', true);
        $webmoneysettings = self::webmoneySettings();
        if (empty($price)) {
            Session::add('feedback_negative', Text::get('Amountisemptyenteravalidvalue'));
            return false;
        } elseif (!filter_var($price, FILTER_VALIDATE_FLOAT)) {
            Session::add('feedback_negative', Text::get('Amountisnotfloatnumber'));
            return false;
        } elseif ($price > self::webmoneySettings()->maxlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountismorethanmaxlimit')." $$webmoneysettings->maxlimit, ".Text::get('pleasetryagain').".");
            return false;
        } elseif ($price < self::webmoneySettings()->minlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountislessthanminlimit')." $$webmoneysettings->minlimit, ".Text::get('pleasetryagain').".");
            return false;
        } elseif (self::webmoneySettings()->enabled == 0) {
            Session::add('feedback_negative', Text::get('WebmoneyPaymentMethodisdisabled'));
            return false;
        } else {
            $username = Session::get('user_name');
            Session::set('processwebmoney', '1');
            Session::set('LMI_PAYEE_PURSE', self::webmoneySettings()->field1);
            Session::set('LMI_PAYMENT_AMOUNT', $price);
            Session::set('LMI_PAYMENT_DESC', Text::get('Addfundstoaccount').": $username");
            Redirect::to('addfunds/processwebmoney');
        }
    }

    public static function perfectmoneySettings()
    {
        $database = DatabaseFactory::getFactory()->getConnection();
        $get = $database->prepare('SELECT * FROM payment_methods WHERE id = 4');
        $get->execute();
        return $get->fetchObject();
    }

    public static function perfectmoney()
    {
        $secret = strtoupper(md5(self::perfectmoneySettings()->field2));

        $hash = $_POST['PAYMENT_ID'] . ':' .
            $_POST['PAYEE_ACCOUNT'] . ':' .
            $_POST['PAYMENT_AMOUNT'] . ':' .
            $_POST['PAYMENT_UNITS'] . ':' .
            $_POST['PAYMENT_BATCH_NUM'] . ':' .
            $_POST['PAYER_ACCOUNT'] . ':' .
            $secret . ':' .
            $_POST['TIMESTAMPGMT'];

        $hash = strtoupper(md5($hash));

        if ($hash != $_POST['V2_HASH']) exit('error');

        $database = DatabaseFactory::getFactory()->getConnection();

        AffiliateModel::rewardReferrer($_POST['PAYMENT_ID'], $_POST['PAYMENT_AMOUNT']);

        // Add balance
        $add = $database->prepare('UPDATE users SET balance = balance + :amount WHERE user_id = :userid');
        $add->execute(array(
            ':userid' => $_POST['PAYMENT_ID'],
            ':amount' => $_POST['PAYMENT_AMOUNT']
        ));

        // Add transaction history
        $addtran = $database->prepare('INSERT INTO transactions (user_id, payment_id, complete, created, amount, method) VALUES (:userid, :payment, :complete, :created, :amount, :method)');
        $addtran->execute(array(
            ':userid' => $_POST['PAYMENT_ID'],
            ':payment' => '',
            ':complete' => 1,
            ':created' => date('Y-m-d H:i:s'),
            ':amount' => $_POST['PAYMENT_AMOUNT'],
            ':method' => 'Perfect Money'
        ));
    }
    public static function processpaywant()
    {
      $price = Request::post('price', true);
      Session::set('processpaywant', '1');
        $db = DatabaseFactory::getFactory()->getConnection();
        $result = $db->prepare("SELECT * FROM payment_methods WHERE id = ? ");
        $result->execute(array(10));
        $d = $result->fetchAll()[0];
      	$apiKey		  = $d->apikey;	// api anahtarı
      	$apiSecret 	= $d->apisecret;					// api gizli anahtarı
      	$userID		= Session::get('user_id');							// kullanıcı id
      	$userEmail	= Session::get('user_email');		// kullanıcı e-mail adresi
      	$returnData	= $orderid = Session::get('user_name'); 						// sipariş kodu
      	$userIPAdresi = $_SERVER['REMOTE_ADDR'];					// kullanıcının ip adresi

      	$hashOlustur = base64_encode(hash_hmac('sha256',"$returnData|$userEmail|$userID".$apiKey,$apiSecret,true));

      	$productData = array(
      	"name" =>  $price." TL Bakiye Yukleme ", // Ürün adı
      	"amount" => $price*100, 				// Ürün fiyatı, 10 TL : 1000
      	"extraData" => 1,				// Notify sayfasına iletilecek ekstra veri
      	"paymentChannel" => "1,2,3",	// Bu ödeme için kullanılacak ödeme kanalları
      	"commissionType" => 1			// Komisyon tipi, 1: Yansıt, 2: Üstlen
      	);

      	$postData = array(
      		'apiKey' => $apiKey,
      		'hash' => $hashOlustur,
      		'returnData'=> $returnData,
      		'userEmail' => $userEmail,
      		'userIPAddress' => $userIPAdresi,
      		'userID' => $userID,
      		'proApi' => true,
      		'productData' => $productData
      	);

      	$curl = curl_init();
      	curl_setopt_array($curl, array(
      	  CURLOPT_URL => "http://api.paywant.com/gateway.php",
      	  CURLOPT_RETURNTRANSFER => true,
      	  CURLOPT_ENCODING => "",
      	  CURLOPT_MAXREDIRS => 10,
      	  CURLOPT_TIMEOUT => 30,
      	  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      	  CURLOPT_CUSTOMREQUEST => "POST",
      	  CURLOPT_POSTFIELDS =>  http_build_query($postData),
      	));

      	$response = curl_exec($curl);
      	$err = curl_error($curl);

      	if ($err)
      	  echo "cURL Error #:" . $err;
      	else{
      	  $jsonDecode = json_decode($response,false);
      	  if($jsonDecode->Status == 100){
      		header("Location:". $jsonDecode->Message);
      		// Ortak odeme sayfasina yonlendir
      	  }else
      		echo $response;
      	}

      	curl_close($curl);


      //Redirect::to('addfunds/paywant');
    }

    public static function processPerfectmoney()
    {
        // Amount user would like to deposit to account balance
        $price = Request::post('price', true);
        $perfectsettings = self::perfectmoneySettings();
        if (empty($price)) {
            Session::add('feedback_negative', Text::get('Amountisemptyenteravalidvalue'));
            return false;
        } elseif (!filter_var($price, FILTER_VALIDATE_FLOAT)) {
            Session::add('feedback_negative', Text::get('Amountisnotfloatnumber'));
            return false;
        } elseif ($price > self::perfectmoneySettings()->maxlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountismorethanmaxlimit')." $$perfectsettings->maxlimit, ".Text::get('pleasetryagain').".");
            return false;
        } elseif ($price < self::perfectmoneySettings()->minlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountislessthanminlimit')." $$perfectsettings->minlimit, ".Text::get('pleasetryagain').".");
            return false;
        } elseif (self::perfectmoneySettings()->enabled == 0) {
            Session::add('feedback_negative', Text::get('PerfectMoneyPaymentMethodisdisabled'));
            return false;
        } else {

            Session::set('processperfect', '1');
            Session::set('usd_account', self::perfectmoneySettings()->field1);
            Session::set('payee_name', SiteSettingsModel::sitesettings()->sitename);
            Session::set('payment_amount', $price);

            Redirect::to('addfunds/processperfect');
        }
    }

    public static function processGeary() {
        // Amount user would like to deposit to account balance
        $price = Request::post('price', true);
        $gearySettings = self::gearySettings();
        if (empty($price)) {
            Session::add('feedback_negative', Text::get('Amountisemptyenteravalidvalue'));
            return false;
        } elseif (!filter_var($price, FILTER_VALIDATE_FLOAT)) {
            Session::add('feedback_negative', Text::get('Amountisnotfloatnumber'));
            return false;
        } elseif ($price > $gearySettings->maxlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountismorethanmaxlimit')." $$gearySettings->maxlimit, try again.");
            return false;
        } elseif ($price < $gearySettings->minlimit) {
            Session::add('feedback_negative', Text::get('Specifiedamountislessthanminlimit')." $$gearySettings->minlimit, try again.");
            return false;
        } elseif ($gearySettings->enabled == 0) {
            Session::add('feedback_negative', Text::get('MyceliumGearPaymentMethodisdisabled'));
            return false;
        } else {
            $gateway_id = PaymentModel::gearySettings()->field1;
            $gateway_secret = PaymentModel::gearySettings()->field2;

            $geary = new Geary($gateway_id, $gateway_secret);
            $keychain_id = $geary->get_last_keychain_id()->last_keychain_id + 1;
            self::updateKeychainGeary($keychain_id);
            $callback_data = (string)Session::get('user_id').'&'.$price;
            $order = $geary->create_order($price, $keychain_id, $callback_data);

            if ($order->payment_id) {
                // Redirect to a payment gateway
                header("Location: https://gateway.gear.mycelium.com/pay/{$order->payment_id}");
                die();
            }
        }
    }

    public static function geary() {
        $gateway_id = PaymentModel::gearySettings()->field1;
        $gateway_secret = PaymentModel::gearySettings()->field2;

        $geary = new Geary($gateway_id, $gateway_secret);
        $order = $geary->check_order_callback();

        // Order status was received
        if ($order !== FALSE) {
            // If payment is paid 2 or over-paid 4, proceed
            if($order['status'] == 2 || $order['status'] == 4) {

            // get user id from callback_data (get value before &)
            $userid = strtok($order['callback_data'], '&');
            // get price from callback_data (get value after &)
            $receivedPriceUSD = substr($order['callback_data'], strrpos($order['callback_data'], '&') + 1);

            // If the user has over-paid, convert paid bitcoin to usd
            if($order['status'] == 4) {
                $convert = new Converter;
                $receivedPriceUSD = $convert->toCurrency('USD', $order['amount_paid_in_btc']);
            }

            AffiliateModel::rewardReferrer($userid, $receivedPriceUSD, $order['order_id']);

            $database = DatabaseFactory::getFactory()->getConnection();
            // Add balance
            $add = $database->prepare('UPDATE users SET balance = balance + :amount WHERE user_id = :userid');
            $add->execute(array(
                ':userid' => $userid,
                ':amount' => $receivedPriceUSD
            ));

            // Add transaction history
            $addtran = $database->prepare('INSERT INTO transactions (user_id, payment_id, complete, created, amount, method) VALUES (:userid, :payment, :complete, :created, :amount, :method)');
            $addtran->execute(array(
                ':userid' => $userid,
                ':payment' => $order['order_id'],
                ':complete' => 1,
                ':created' => date('Y-m-d H:i:s'),
                ':amount' => $receivedPriceUSD,
                ':method' => 'Mycelium Gear'
            ));
            }
        } else {
            echo 'Signature mismatch';
        }
    }

    public static function updateKeychainGeary(int $id) {
        $database = DatabaseFactory::getFactory()->getConnection();
        $update = $database->prepare('UPDATE payment_methods SET field3 = :id WHERE id = 6');
        $update->execute([
            ':id' => $id
        ]);
    }

    public static function getUserCustomDefaults()
    {
        $database = DatabaseFactory::getFactory()->getConnection();

        $ids = [];
        $values = [];
        $query = $database->query("SELECT id, name, enabled, user_default_enabled FROM payment_methods");
        $rows = $query->fetchAll();
        foreach ($rows as $row) {
            $ids[] = $row->id;
            $values[] = $row;
        }
        return array_combine($ids, $values);
    }