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);
}