shetabit / payment

simple laravel payment package , supports multiple drivers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

خطا هنگام پرداخت مجدد فاکتور پرداخت نشده

progintYasin opened this issue · comments

سلام و عرض ادب
من کد پرداخت هامو نوشتم و کاملا کار میکنه
الان یه مشکلی که دارم اینه که اگر کاربر پرداختشو انجام نداده بود و بخواد دوباره پرداخت کنه همون فاکتور را هنگام رفتن به درگاه کلا یهtransactionId جدید براش ساخته میشه و هنگام بازگشت به سایت خطای404میخوره
من 2 حالت کد را میزارم خطا دارم . لطفا راهنمایی کنین سپاس

حالت اول
public function rePayment(payment $payment) { $planPrice = $payment->amount; $invoice = (new Invoice)->amount($planPrice); return \Shetabit\Payment\Facade\Payment::via($payment->driver)->callbackUrl(route('payment.callback'))->purchase($invoice, function () use ($payment, $invoice) { })->pay()->render(); }

حالت دوم که بهش transactionId تراکنش ناموفق هم پاس میدم
public function rePayment(payment $payment) { $planPrice = $payment->amount; $invoice = (new Invoice)->amount($planPrice)->transactionId($payment->transactionId); return \Shetabit\Payment\Facade\Payment::via($payment->driver)->callbackUrl(route('payment.callback'))->purchase($invoice, function () use ($payment, $invoice) { })->pay()->render(); }

اینم متدCallBack
public function callback(Request $request) { try { $payment = payment::where('transactionId', $request->clientrefid)->firstOrFail(); $receipt = ShetabitPayment::via($payment->driver)->amount($payment->amount)->transactionId($request->clientrefid)->verify(); $payment->update([ 'status' => 'paid', 'ReferenceId' => $receipt->getReferenceId(), ]); return redirect()->route('order.user')->with('success', 'پرداخت شما با موفقیت انجام شد.'); } catch (InvalidPaymentException $exception) { $payment->update([ 'error' => $exception->getMessage(), ]); return redirect()->route('orders.user')->with('error', 'خطا در پرداخت'); } }

چرا باید موقع برگشت خطای 404 بخوره؟ پکیج اصلا همچین چیزی تولید نمیکنه

شما نباید با کد تراکنش پرداخت رو پیگیری کنی. شما باید یه توکن یا یه چیزی واسه خودت داشته باشی با اون پیگیری کنی و ادرسی که میدی به کالبک شامل اون دیتایی که خودت ایجاد کردی باشه

میتونی از مدل بایندینگ استفاده کنی مثلا ادرس های پرداخت یه چیزی مثل زیر باشه

/invoice/100/pay

موقع برگشت از درگاه میتونی 100 رو بگیری و دیتاشو از دیتابیس بکشی بیرون و وریفای کنی