netbozum
tr.link

Paywant Komisyonu Alıcıya Yansıtma

12 Mesajlar 3.051 Okunma
acebozum
tr.link

veyselbozdagli veyselbozdagli Sosyal Medya Hizmetleri Kullanıcı
  • Üyelik 14.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek
  • Konum Denizli
  • Ad Soyad V** B**
  • Mesajlar 90
  • Beğeniler 7 / 6
  • Ticaret 7, (%100)
Merhaba Arkadaşlar. Paywant ile ödeme ekledik siteme.

Örneğin 100TL bakiye satın alıyor kullanıcılar. 100tl satın alırken 105-106tl civarında geçiyor kartlarından bana ise 90TL geliyor. Bunun tamamını alıcıya yansıtmak için ne yapmalıyım bilgisi olan yardım edebilir mi acaba



namespace App\Http\Controllers;

use App\Transaction;
use Session;
use Auth;
use Validator;
use App\User;
use App\PaymentLog;
use App\PaymentMethod;
use Illuminate\Http\Request;

class PaywantController extends Controller
{
private $payment_method_id = 9;
private $paywant_api_key;
private $paywant_api_secret;
const PAYWANT_URL = 'http://api.paywant.com/gateway.php';
const PAYMENT_TYPES = [
'1' => 'Mobil Odeme',
'2' => 'Kredi Karti',
'3' => 'Banka (Havale/Eft/Atm)',
'4' => 'Turk ******* Odeme (***** Odeme)',
'5' => 'Mikrocard',
'6' => 'CashU',
];

public function __construct()
{
$this->paywant_api_key = PaymentMethod::where(['config_key' => 'paywant_api_key'])->first()->config_value;
$this->paywant_api_secret = PaymentMethod::where(['config_key' => 'paywant_api_secret'])->first()->config_value;
}

public function show(Request $request)
{
// check if payment method is not enabled then abort
$paymentMethod = PaymentMethod::where(['id' => $this->payment_method_id, 'status' => 'ACTIVE'])->first();
if (is_null($paymentMethod)) {
abort(403);
}

// User have assigned payment methods?
if (empty(Auth::user()->enabled_payment_methods)) {
abort(403);
}
// Get users enabled payment methods & see if this method is enabled for him.
$enabled_payment_methods = explode(',', Auth::user()->enabled_payment_methods);
if (!in_array($this->payment_method_id, $enabled_payment_methods)) {
abort(403);
}

return view('payments.paywant');
}


public function store(Request $request)
{

$minimum_deposit_amount = getOption('minimum_deposit_amount');
$validator = Validator::make($request->all(), [
'amount' => 'required|numeric|min:' . $minimum_deposit_amount
]);

if ($validator->fails()) {
return redirect('payment/add-funds/paywant')
->withErrors($validator)
->withInput();
}

// Store payment log attempt into the database first
// Also useful to get verify secrets
$paymentLogSecret = bcrypt(Auth::user()->id . time() . rand(1, 99999));
$user_id = Auth::user()->id;

// Create payment logs
$createLog = PaymentLog::create([
'currency_code' => strtoupper(getOption('currency_code')),
'details' => $paymentLogSecret,
'total_amount' => $request->input('amount'),
'payment_method_id' => $this->payment_method_id,
'user_id' => $user_id
]);

$api_key = $this->paywant_api_key;
$api_secret = $this->paywant_api_secret;
$api_user_id = Auth::user()->id; // bunları düzelttiniz mi?
$api_email = Auth::user()->email;
$returnData = $paymentLogSecret;
$ip_address = $request->ip();
$hash = hash_hmac('sha256', "$returnData|$api_email|$api_user_id" . $api_key, $api_secret, true);
$paywant_hash = base64_encode($hash);

$params = array(
'apiKey' => $api_key,
'hash' => $paywant_hash,
'returnData' => $returnData,
'userEmail' => $api_email,
'userIPAddress' => $ip_address,
'userID' => $api_user_id,
'proApi' => 'true',
'productData' => [
'name' => $request->input('amount') . ' Bakiye Yukleme - ' . $createLog->id,
'amount' => ($request->input('amount') * 100),
'commissionType' => 2,
'extraData' => $createLog->id,
]
);

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => self::PAYWANT_URL,
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($params),
));

$response = curl_exec($curl);
$err = curl_error($curl);
$jsonDecode = json_decode($response, false);
if ($err) {
Session::flash('alert', __('messages.payment_failed') . $jsonDecode->Message);
Session::flash('alertClass', 'danger no-auto-close');
//paywant sistem hata sayfasına yonlendir
return redirect('/payment/add-funds/paywant');
} else {
if ($jsonDecode->Status == 100) {
// Ortak odeme sayfasina yonlendir
return redirect()->away($jsonDecode->Message);
} else {
Session::flash('alert', __('messages.payment_failed') . $jsonDecode->Message);
Session::flash('alertClass', 'danger no-auto-close');
//paywant sistem hata sayfasına yonlendir
return redirect('/payment/add-funds/paywant');
}
}
curl_close($curl);
}

public function paywantNotify(Request $req) {
if (
$req->request->get('SiparisID') == '' ||
$req->request->get('ExtraData') == '' ||
$req->request->get('Status') == '' ||
$req->request->get('OdemeKanali') == '' ||
$req->request->get('OdemeTutari') == '' ||
$req->request->get('NetKazanc') == '' ||
$req->request->get('ReturnData') == '' ||
$req->request->get('UrunTutari') == '' ||
$req->request->get('UserID') == '' ||
$req->request->get('Hash') == '') {
activity('paywant')
->withProperties(['ip' => $req->ip])
->log('Post Data Missing.');
die();
}

$payment_secret = $req->request->get('ReturnData');
$paymentLog = PaymentLog::where(['details' => $payment_secret])->first();

// If payment log is found then it means
// the request is same which was sent
if (!is_null($paymentLog)) {

$log_id = $req->request->get('ExtraData');
$ap_status = $req->request->get('Status');
$order_id = $req->request->get('SiparisID');
$payment_type = $req->request->get('OdemeKanali');
$p_type = self::PAYMENT_TYPES[$payment_type];
$ap_totalamount = $req->request->get('OdemeTutari');
$ap_netamount = $req->request->get('NetKazanc');
$payment_secret = $req->request->get('ReturnData');
$load_amount = $req->request->get('UrunTutari');
$user_id = $req->request->get('UserID');
$hash = $req->request->get('Hash');

$user = User::find($user_id);

$api_key = $this->paywant_api_key;
$api_secret = $this->paywant_api_secret;
$api_user_id = $user_id;
$api_email = $user->email;
$returnData = $payment_secret;
$new_hash = hash_hmac('sha256', "$returnData|$api_email|$api_user_id" . $api_key, $api_secret, true);

if($new_hash != $hash){
activity('paywant')
->withProperties([
'ip' => $req->ip()
])->log('Hash MisMatch');
die();
}

$data = [
'status' => $ap_status,
'order_id' => $order_id,
'payment_type' => $p_type,
'toplam_tutar' => $ap_totalamount,
'toplam_kazanc' => $ap_netamount,
'yukleme_tutari' => $load_amount,
'hash' => $hash,
'user_id' => $user_id,
];


if ($ap_status == 100) {
// Payment successful and update payment log
PaymentLog::where(['details' => $payment_secret])->update([
'details' => json_encode($data),
]);
// Create Transaction logs
Transaction::create([
'amount' => $load_amount,
'payment_method_id' => $this->payment_method_id,
'user_id' => $user_id
]);


$user->funds = $user->funds + $load_amount;
$user->save();

activity('paywant')
->withProperties([
'ip' => $req->ip()
])->log('Payment Loaded successfully for user_id:' . $paymentLog->user_id . ' amount:' . $ap_netamount);
die();
}
}else{
activity('paywant')
->withProperties([
'ip' => $req->ip()
])->log('Payment Log Not Found');
die();
}
}

}
 

 

googleasistan
reklam

grsy grsy WM Aracı Kullanıcı
  • Üyelik 28.11.2014
  • Yaş/Cinsiyet 27 / E
  • Meslek Serbest
  • Konum Kütahya
  • Ad Soyad M** G**
  • Mesajlar 1256
  • Beğeniler 148 / 399
  • Ticaret 22, (%95)
Görünürde 100TL gösterip, arka planda fiyat değerini 106 yaparsanız olabilir. Paywant üzerinden olacağını sanmıyorum.
xsafa

kişi bu mesajı beğendi.

hesap satış

Ozcanocak Ozcanocak WM Aracı Kullanıcı
  • Üyelik 23.11.2015
  • Yaş/Cinsiyet 33 / E
  • Meslek serbest
  • Konum İstanbul Avrupa
  • Ad Soyad Ö** O**
  • Mesajlar 624
  • Beğeniler 105 / 86
  • Ticaret 43, (%91)
komisyon oranini daha yuksek tutman lazim %3 komisyon yazman lazim
 

 

veyselbozdagli veyselbozdagli Sosyal Medya Hizmetleri Kullanıcı
  • Üyelik 14.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek
  • Konum Denizli
  • Ad Soyad V** B**
  • Mesajlar 90
  • Beğeniler 7 / 6
  • Ticaret 7, (%100)

Ozcanocak adlı üyeden alıntı

komisyon oranini daha yuksek tutman lazim %3 komisyon yazman lazim


Panelden ayarlanmıyor. Bakiyeli sistem. 100tl yüklemek istediğinde paywant sayfasına 100tl yükleme sayfası açıyor

grsy adlı üyeden alıntı

Görünürde 100TL gösterip, arka planda fiyat değerini 106 yaparsanız olabilir. Paywant üzerinden olacağını sanmıyorum.

111.11 Ayarlamam gerekiyor 116 civarı ödemeleri lazım da nasıl yaparım bilmiyorum kodlama bilgim fazla yok
 

 

wmaraci
wmaraci

UmutWare UmutWare Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 24.03.2017
  • Yaş/Cinsiyet 26 / E
  • Meslek Ögrenci & Yazılım
  • Konum KKTC
  • Ad Soyad U** M**
  • Mesajlar 482
  • Beğeniler 26 / 80
  • Ticaret 3, (%100)
Kullanıcı deger girdigi kısıma textten gelen veri * 100 / 3 yaparsanız çözüm bulursunuz diye düşünmekteyim.Bu arada sistem nedir ?
 

 

veyselbozdagli veyselbozdagli Sosyal Medya Hizmetleri Kullanıcı
  • Üyelik 14.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek
  • Konum Denizli
  • Ad Soyad V** B**
  • Mesajlar 90
  • Beğeniler 7 / 6
  • Ticaret 7, (%100)

namespace App\Http\Controllers;

use App\Transaction;
use Session;
use Auth;
use Validator;
use App\User;
use App\PaymentLog;
use App\PaymentMethod;
use Illuminate\Http\Request;

class PaywantController extends Controller
{
private $payment_method_id = 9;
private $paywant_api_key;
private $paywant_api_secret;
const PAYWANT_URL = 'http://api.paywant.com/gateway.php';
const PAYMENT_TYPES = [
'1' => 'Mobil Odeme',
'2' => 'Kredi Karti',
'3' => 'Banka (Havale/Eft/Atm)',
'4' => 'Turk ******* Odeme (***** Odeme)',
'5' => 'Mikrocard',
'6' => 'CashU',
];

public function __construct()
{
$this->paywant_api_key = PaymentMethod::where(['config_key' => 'paywant_api_key'])->first()->config_value;
$this->paywant_api_secret = PaymentMethod::where(['config_key' => 'paywant_api_secret'])->first()->config_value;
}

public function show(Request $request)
{
// check if payment method is not enabled then abort
$paymentMethod = PaymentMethod::where(['id' => $this->payment_method_id, 'status' => 'ACTIVE'])->first();
if (is_null($paymentMethod)) {
abort(403);
}

// User have assigned payment methods?
if (empty(Auth::user()->enabled_payment_methods)) {
abort(403);
}
// Get users enabled payment methods & see if this method is enabled for him.
$enabled_payment_methods = explode(',', Auth::user()->enabled_payment_methods);
if (!in_array($this->payment_method_id, $enabled_payment_methods)) {
abort(403);
}

return view('payments.paywant');
}


public function store(Request $request)
{

$minimum_deposit_amount = getOption('minimum_deposit_amount');
$validator = Validator::make($request->all(), [
'amount' => 'required|numeric|min:' . $minimum_deposit_amount
]);

if ($validator->fails()) {
return redirect('payment/add-funds/paywant')
->withErrors($validator)
->withInput();
}

// Store payment log attempt into the database first
// Also useful to get verify secrets
$paymentLogSecret = bcrypt(Auth::user()->id . time() . rand(1, 99999));
$user_id = Auth::user()->id;

// Create payment logs
$createLog = PaymentLog::create([
'currency_code' => strtoupper(getOption('currency_code')),
'details' => $paymentLogSecret,
'total_amount' => $request->input('amount'),
'payment_method_id' => $this->payment_method_id,
'user_id' => $user_id
]);

$api_key = $this->paywant_api_key;
$api_secret = $this->paywant_api_secret;
$api_user_id = Auth::user()->id; // bunları düzelttiniz mi?
$api_email = Auth::user()->email;
$returnData = $paymentLogSecret;
$ip_address = $request->ip();
$hash = hash_hmac('sha256', "$returnData|$api_email|$api_user_id" . $api_key, $api_secret, true);
$paywant_hash = base64_encode($hash);

$params = array(
'apiKey' => $api_key,
'hash' => $paywant_hash,
'returnData' => $returnData,
'userEmail' => $api_email,
'userIPAddress' => $ip_address,
'userID' => $api_user_id,
'proApi' => 'true',
'productData' => [
'name' => $request->input('amount') . ' Bakiye Yukleme - ' . $createLog->id,
'amount' => ($request->input('amount') * 100),
'commissionType' => 2,
'extraData' => $createLog->id,
]
);

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => self::PAYWANT_URL,
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($params),
));

$response = curl_exec($curl);
$err = curl_error($curl);
$jsonDecode = json_decode($response, false);
if ($err) {
Session::flash('alert', __('messages.payment_failed') . $jsonDecode->Message);
Session::flash('alertClass', 'danger no-auto-close');
//paywant sistem hata sayfasına yonlendir
return redirect('/payment/add-funds/paywant');
} else {
if ($jsonDecode->Status == 100) {
// Ortak odeme sayfasina yonlendir
return redirect()->away($jsonDecode->Message);
} else {
Session::flash('alert', __('messages.payment_failed') . $jsonDecode->Message);
Session::flash('alertClass', 'danger no-auto-close');
//paywant sistem hata sayfasına yonlendir
return redirect('/payment/add-funds/paywant');
}
}
curl_close($curl);
}

public function paywantNotify(Request $req) {
if (
$req->request->get('SiparisID') == '' ||
$req->request->get('ExtraData') == '' ||
$req->request->get('Status') == '' ||
$req->request->get('OdemeKanali') == '' ||
$req->request->get('OdemeTutari') == '' ||
$req->request->get('NetKazanc') == '' ||
$req->request->get('ReturnData') == '' ||
$req->request->get('UrunTutari') == '' ||
$req->request->get('UserID') == '' ||
$req->request->get('Hash') == '') {
activity('paywant')
->withProperties(['ip' => $req->ip])
->log('Post Data Missing.');
die();
}

$payment_secret = $req->request->get('ReturnData');
$paymentLog = PaymentLog::where(['details' => $payment_secret])->first();

// If payment log is found then it means
// the request is same which was sent
if (!is_null($paymentLog)) {

$log_id = $req->request->get('ExtraData');
$ap_status = $req->request->get('Status');
$order_id = $req->request->get('SiparisID');
$payment_type = $req->request->get('OdemeKanali');
$p_type = self::PAYMENT_TYPES[$payment_type];
$ap_totalamount = $req->request->get('OdemeTutari');
$ap_netamount = $req->request->get('NetKazanc');
$payment_secret = $req->request->get('ReturnData');
$load_amount = $req->request->get('UrunTutari');
$user_id = $req->request->get('UserID');
$hash = $req->request->get('Hash');

$user = User::find($user_id);

$api_key = $this->paywant_api_key;
$api_secret = $this->paywant_api_secret;
$api_user_id = $user_id;
$api_email = $user->email;
$returnData = $payment_secret;
$new_hash = hash_hmac('sha256', "$returnData|$api_email|$api_user_id" . $api_key, $api_secret, true);

if($new_hash != $hash){
activity('paywant')
->withProperties([
'ip' => $req->ip()
])->log('Hash MisMatch');
die();
}

$data = [
'status' => $ap_status,
'order_id' => $order_id,
'payment_type' => $p_type,
'toplam_tutar' => $ap_totalamount,
'toplam_kazanc' => $ap_netamount,
'yukleme_tutari' => $load_amount,
'hash' => $hash,
'user_id' => $user_id,
];


if ($ap_status == 100) {
// Payment successful and update payment log
PaymentLog::where(['details' => $payment_secret])->update([
'details' => json_encode($data),
]);
// Create Transaction logs
Transaction::create([
'amount' => $load_amount,
'payment_method_id' => $this->payment_method_id,
'user_id' => $user_id
]);


$user->funds = $user->funds + $load_amount;
$user->save();

activity('paywant')
->withProperties([
'ip' => $req->ip()
])->log('Payment Loaded successfully for user_id:' . $paymentLog->user_id . ' amount:' . $ap_netamount);
die();
}
}else{
activity('paywant')
->withProperties([
'ip' => $req->ip()
])->log('Payment Log Not Found');
die();
}
}

}


Bakabilir misin bu sayfada var mıdır çözümü
 

 

UmutWare UmutWare Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 24.03.2017
  • Yaş/Cinsiyet 26 / E
  • Meslek Ögrenci & Yazılım
  • Konum KKTC
  • Ad Soyad U** M**
  • Mesajlar 482
  • Beğeniler 26 / 80
  • Ticaret 3, (%100)
'amount' => ($request->input('amount') * 100),
'commissionType' => 2,

bu kısımda ancak comisyon type diye bir veri yaratmıs orada ne tür bir işlem yapıyor onu bulmak gerek
 

 

veyselbozdagli veyselbozdagli Sosyal Medya Hizmetleri Kullanıcı
  • Üyelik 14.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek
  • Konum Denizli
  • Ad Soyad V** B**
  • Mesajlar 90
  • Beğeniler 7 / 6
  • Ticaret 7, (%100)
'amount' => ($request->input('amount') * 100),
'commissionType' => 2,

bu kısımda ancak comisyon type diye bir veri yaratmıs orada ne tür bir işlem yapıyor onu bulmak gerek


1 Olursa o 100ün üstündeki 5 kusuru da bize kilitliyor galiba. Bi çözüm şu 100 ne acaba %100 mü demekse artık. onu 111.11 yaparsam düzelir mi acaba
 

 

UmutWare UmutWare Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 24.03.2017
  • Yaş/Cinsiyet 26 / E
  • Meslek Ögrenci & Yazılım
  • Konum KKTC
  • Ad Soyad U** M**
  • Mesajlar 482
  • Beğeniler 26 / 80
  • Ticaret 3, (%100)
paywant modülünü kullanmadım hocam daha önce o yüzden pek yardımcı olamıyorum yanlış işlem yapmamak açısından
 

 

veyselbozdagli veyselbozdagli Sosyal Medya Hizmetleri Kullanıcı
  • Üyelik 14.04.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek
  • Konum Denizli
  • Ad Soyad V** B**
  • Mesajlar 90
  • Beğeniler 7 / 6
  • Ticaret 7, (%100)
Sorun çözüldü. Dediğim gibi 100 ü 111.11 yapınca halletti
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al