سلام وقت بخیر
من از پکیج shetabit payment برای درگاه پارسیان استفاده میکنم
به درگاه متصل میشم ولی موقع برگشت از بانک وقتی روت به شکل get تعریف میکنم خطا میده که به شکل post باید باشه وقتی به شکل post تعریف میکنم موقع برگشت از بانک خطای 404 نمایش داده میشه و کاربر از سایت logout میشه
خیلی وقته درگیرش هستم و مشکل حل نمیشه لطفا اگه کسی میدونه راهنمایی کنه
csrf توی میدلور غیرفعال کردم
protected $except = [
'/payment/callback'
];
روت ها
Route::namespace('frontend')->group(function() {
Route::post('/payment' , [PaymentController::class ,'payment'])->name('cart.payment');
Route::post('/payment/callback' , [PaymentController::class ,'callback'])->name('payment.callback');
});
controller
class PaymentController extends Controller
{
public function payment()
{
$cart = Cart::instance('cart');
$cartItems = $cart->all();
if($cartItems->count()) {
$price = $cartItems->sum(function($cart) {
return $cart['tour']->price * $cart['quantity'];
});
$orderItems = $cartItems->mapWithKeys(function($cart) {
return [$cart['tour']->id => [ 'quantity' => $cart['quantity']] ];
});
$order = auth()->user()->orders()->create([
'status' => 'unpaid',
'price' => $price
]);
$order->tours()->attach($orderItems);
// $invoice = (new Invoice)->amount($price);
$invoice = (new Invoice)->amount(1000);
return ShetabitPayment::callbackUrl(route('payment.callback'))->purchase($invoice, function($driver, $transactionId) use ($order, $cart,$invoice) {
$order->payments()->create([
'resnumber' => $invoice->getUuid(),
]);
$cart->flush();
})->pay()->render();
}
alert()->error('پرداخت انجام نشد مجددا سعی کنید');
return back();
}
public function callback(Request $request)
{
try {
$payment = Payment::where('resnumber', $request->clientrefid)->firstOrFail();
// $payment->order->price
$receipt = ShetabitPayment::amount(1000)->transactionId($request->clientrefid)->verify();
$payment->update([
'status' => 1
]);
$payment->order()->update([
'status' => 'paid'
]);
alert()->success('پرداخت شما موفق بود');
return redirect('/profile');
} catch (InvalidPaymentException $exception) {
/**
* when payment is not verified, it will throw an exception.
* We can catch the exception to handle invalid payments.
* getMessage method, returns a suitable message that can be used in user interface.
**/
alert()->error($exception->getMessage());
return redirect('/profile');
}
}
}
برای اینکه logout نشه کاربر توی فایل session به شکل زیر تغییر دادم
'secure' => env('SESSION_SECURE_COOKIE' , true),
'samesite' = 'none',
دیگه کاربر از سایت لاگ اوت نمیشه ولی مشکل کال بک همچنان هست
یه مشکل دیگه هم که هست وقتی پرداخت موفق انجام میدم بانک اصلاحیه میزنه و پول برگشت داده میشه
سلا م
خطلای 404 یعنی ادرس وجود ندارد
درمورد لاگ اوت شدن من ایدی کاربر رو میگیریم وخودم لاگین میکنم
@daniyalx77
روت که قطعا وجود داره
مشکل از کنترلر بود که مشکل کال بک حل شد
متوجه این جمله نشدم
درمورد لاگ اوت شدن من ایدی کاربر رو میگیریم وخودم لاگین میکنم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟