Yazılım başka bir yazılım doğal olarak 2. falan derken ne demek istediler anlamadım bu konuda yardımcı olacabilecek var mı?
Kodlar bu şekilde yardımcı olacaksa
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\OnlinePayment;
use App\PosMethod;
use App\Shopier;
use App\User;
use Illuminate\Http\Request;
/**
* Class OnlinePaymentController
* @package App\Http\Controllers\User
*/
class OnlinePaymentController extends Controller
{
/**
* OnlinePaymentController constructor.
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
$payments = OnlinePayment::where(['user_id' => auth()->id(), 'status' => 1])->get();
return view('user.online-payment.index', compact('payments'));
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
* Yeni ödeme talebi eklenince değerler çoğul gönderilecektir.
* Çoğul gönderilen ödeme yöntemleri bir select yardımıyla kullanılacaktır.
* Alt yapı amacıyla şimdilik first metodu kullanılmaktadır.
*/
public function create()
{
$methods = PosMethod::where('status', 1)->first();
return view('user.online-payment.create', compact('methods'));
}
/**
* @param Request $request
* @param $name - get method
* @return \Illuminate\Http\RedirectResponse
*/
public function shopier(Request $request, $name) // yakalanan değer tek fonksiyon üstünden çoklu sanal pos entegrasyonuna altyapıdır. Şu an işlevsizdir.
{
$find = PosMethod::where('name', 'shopier')->first();
$request->validate([
'amount' => 'numeric|min:'.$find->minimum
], [
'amount.min' => 'Minimum ödeme tutarını hatalı girdiniz.',
'amount.numeric' => 'Ödeme yapabilmek için sayı girmelisiniz.',
]);
$request->merge(['user_id' => auth()->id()]);
/*
* PosMethod modelinin içerisinde Payment fonksiyonuyla OnlinePayment modeline aktarılır.
*/
$id = $find->Payment()->create($request->all());
$shopier = new Shopier($find->key, $find->secret);
$shopier->setBuyer([
'id' => auth()->id(),
'first_name' => auth()->user()->name, 'last_name' => '', 'email' => auth()->user()->email, 'phone' => '']);
$shopier->setOrderBilling([
'billing_address' => '',
'billing_city' => '',
'billing_country' => 'turkey',
'billing_postcode' => '',
]);
$shopier->setOrderShipping([
'shipping_address' => '',
'shipping_city' => '',
'shipping_country' => 'turkey',
'shipping_postcode' => '',
]);
if ($find->commission == 1) {
$commission = $request->amount*0.0499;
$service = $commission+0.49;
$kdv = $service*1.18;
$price = $kdv+$request->amount;
} else {
$price = $request->amount;
}
//dd($price);
die($shopier->run($id->id, $price, route('shopier.callback')));
//die($shopier->run(ORDER_ID, ORDER_AMOUNT, CALLBACK_URL));
}
/**
* @return \Illuminate\Http\RedirectResponse
*/
public function shopierNotify() {
$info = PosMethod::where('name', 'shopier')->first();
$status = $_POST["status"];
$db_id = $_POST["platform_order_id"];
$payment_id = $_POST["payment_id"];
$signature = $_POST["signature"];
$data = $_POST["random_nr"] . $_POST["platform_order_id"];
$signature = base64_decode($signature);
$expected = hash_hmac('SHA256', $data, $info->secret, true);
if ($signature == $expected) {
$status = strtolower($status);
if ($status == "success") {
$shopier = OnlinePayment::find($db_id);
if ($shopier->status == 0) {
$shopier->update(['status' => 1, 'payment_id' => $payment_id]);
$user_id = $shopier->user_id;
$amount = $shopier->amount;
User::find($user_id)->increment('amount', $amount);
return redirect()->route('user.home');
}
} else {
return redirect()->route('user.home');
}
} else {
return redirect()->route('user.home');
}
}
}