سلام دوستان من از زرین پال استفاده میکنم برای پرداخت وقتی از بانک برگشت میکنه اررور 404 لاراول میده این لینک برگشت:
http://localhost:8000/client/payments/checker?Authority=000000000000000000000000000155236721&Status=OK
این هم روت برگشت:
Route::get('payments/checker' , 'PaymentController@checker');
فقط لاراول من 7 هستش
با تشکر
سلام
معمولا توی پارامتر هایی که همون اول به سمت درگاه ارسال میکنید، یه پارامتر هم به اسم CallBackUrl ارسال میشه که وقتی کار بانک تمام شد، اطالاعات رو بهش POST میکنه. بعدش میتونید اگر پرداخت موفقیت امیز بود یه درخواست GET بزنید و به جایی هدایتش کنید
@sadrahkm با تشکر از جوابتان من این کاری گفتید انجام دادم این کد من شاید بتوانید بیشتر کمک کنید
public function pay(Payment $payment)
{
$price = $payment->totalPrice;
if ($price === 0 || $price === null) {
alert()->error('شما اجازه پرداخت ندارید')->confirmButton('باشه');
return redirect('/client/payments');
}
$Description = 'توضیحات تراکنش تستی'; // Required
$CallbackURL = url('/client/payments/checker'); // Required
$client = new SoapClient('https://www.zarinpal.com/pg/services/WebGate/wsdl', ['encoding' => 'UTF-8']);
$result = $client->PaymentRequest(
[
'MerchantID' => $this->MerchantID,
'Amount' => $price,
'Description' => $Description,
'Email' => '',
'CallbackURL' => $CallbackURL,
]
);
//Redirect to URL You can do it also by creating a form
if ($result->Status == 100) {
$payment->update([
'resNumber' => $result->Authority,
]);
return redirect('https://www.zarinpal.com/pg/StartPay/'.$result->Authority);
} else {
alert()->error('ERR: ' . $result->Status)->confirmButton('باشه');
}
return redirect('/client/payments');
}
public function checker()
{
$Authority = request('Authority');
$payment = Payment::query()->where('resNumber' , $Authority)->firstOrFail();
if (request('Status') == 'OK') {
$client = new SoapClient('https://www.zarinpal.com/pg/services/WebGate/wsdl', ['encoding' => 'UTF-8']);
$result = $client->PaymentVerification(
[
'MerchantID' => $this->MerchantID,
'Authority' => $Authority,
'Amount' => $payment->totalPrice,
]
);
if ($result->Status == 100) {
alert()->success('عملیات مورد نظر با موفقیت انجام شد','با تشکر')->confirmButton('باشه');
$payment->update([
'status_id' => 3,
]);
} else {
alert()->success('Transaction failed. Status:'.$result->Status)->confirmButton('باشه');
}
} else {
alert()->success('Transaction canceled by user')->confirmButton('باشه');
}
return redirect('/client/payments');
}شاید پاسخ شما همینجا باشد
@coaradsupp آدرس من توی group و prefix آن client
@coaradsupp داره و کاربر هم login کرده
یه نگاهی به پکیج زیر بندازید
https://github.com/shetabit/payment/blob/master/README-FA.md
همه ی درگاه ها رو با یکبار کدنویسی میتونید باهم داشته باشید :) کافیه اسم درگاه مورد نظرتون رو توی کانفیگ عوض کنید تا درگاه عوض بشه