سلام دوستان من از زرین پال استفاده میکنم برای پرداخت وقتی از بانک برگشت میکنه اررور 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');
}
سلام
توی ادرس بازگشت از بانک
client/payments/checker
این هست، در صورتی که توی ادرس شما
payments/checker
هست، ادرس رو بررسی کنید
یه نگاهی به پکیج زیر بندازید
https://github.com/shetabit/payment/blob/master/README-FA.md
همه ی درگاه ها رو با یکبار کدنویسی میتونید باهم داشته باشید :) کافیه اسم درگاه مورد نظرتون رو توی کانفیگ عوض کنید تا درگاه عوض بشه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟