Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

مشکل در تایید تراکنش سپهر پی #331

Open
srz0201 opened this issue Dec 29, 2024 · 4 comments
Open

مشکل در تایید تراکنش سپهر پی #331

srz0201 opened this issue Dec 29, 2024 · 4 comments

Comments

@srz0201
Copy link

srz0201 commented Dec 29, 2024

در وعضی از موارد کاربر تو درگاه مبلغ رو به درستی پرداخت میکنه
تراکنش تایید میشه
ولی رو سایتم وضعیت تراکنش تغییر نمیکنه..
همیشه این اتفاق نمیفته هرچقد تست میکنم همه چی درسته ولی در مواردی این اتفاق میفته..
کد های callBack رو میزارم
لطفا راهنمایی کنید

`
public function callBack(Request $request){

    $transaction_id= (int)$request->Authority;


    try {
        $payment = \App\Models\Payment::where('transaction_id',$transaction_id)->latest()->first();
        $cart = Cart::where('id',$payment->cart_id)->first();


        $receipt = Payment::via($payment->port)->amount($payment->price)->transactionId($transaction_id)->verify();


        if ($receipt && $receipt->getReferenceId()) {

            $ReferenceId=$receipt->getReferenceId();
            $Date=$receipt->getDate();

            $cart->orderLogs()->create([
                'status' => 0,
                'text' => 'تراکنش تایید شد.کد رهگیری: :'.$ReferenceId
            ]);


            $payment->update([
                'ref_id' => $ReferenceId,
                'status' => 'SUCCEED',
                'result_message' => 'SUCCEED',
                'payment_date' => $Date,
            ]);


            $cart->update([
                'tracking_code' => $ReferenceId,
                'pay_status' => 1,
                'paid_price' => $payment->price,
                'transactions_id' => $payment->id

            ]);

            $cart->cartAddress()->create([
                'province_id'=> $cart->address->province_id,
                'city_id'=> $cart->address->city_id,
                'name'=> $cart->address->name,
                'address'=> $cart->address->address,
                'postal_code'=> $cart->address->postal_code,
                'location'=> $cart->address->location,
                'phone'=> $cart->address->phone,
            ]);

        }else{

            $cart->orderLogs()->create([
                'status' => 0,
                'text' => 'مشکل در تایید تراکنش در بانک : شماره تراکنش :'.$transaction_id
            ]);

            return "مشکل در تایید تراکنش در بانک.شماره تراکنش:".$transaction_id;

        }

        $date = Jalalian::forge($receipt->getDate())->format('Y/m/d H:i');

        $cart->orderLogs()->create([
            'status' => 0,
            'text' => 'پرداخت سبد خرید|زمان :'.$date
        ]);

        ultraFastSend([
            'order_id' => "$cart->id",
        ], config('sms.new_order'), $cart->user->mobile);


        foreach (config('website.manager_mobile') as $mobile){
            ultraFastSend([
                'user_name' => $cart->user->name,
                'date' => "$date",
            ], config('sms.manager_order_alert'), $mobile);
        }



        session()->flash('pay-success');
        return redirect(route('orders.show',$cart));



    } 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.
         **/

        $transID =null;
        $message = $exception->getMessage();
        return view('cart.payment_failed',compact('message','transID'));

    }
}

`

@khanzadimahdi
Copy link
Member

معنی اینکه در سایت شما وضعیت تراکنش تغییر نمیکنه چیه؟ چه تفاوتی در تایید تراکنش و وضعیت تراکنش در سایت شما وجود داره؟ متوجه منظور شما نشدم.

@srz0201
Copy link
Author

srz0201 commented Dec 29, 2024

بعد از تایید تراکنش من میام اطلاعت رو توی دیتابیس ذخیره میکنم و یا وضعیت پرداخت سبد خرید رو تغییر میدم

و این زمانی اتفاق میفته که تراکنش تایید شده باشه
بعضی مواقع از این خط به بعد اجرا نمیشه..
$receipt = Payment::via($payment->port)->amount($payment->price)->transactionId($transaction_id)->verify();

@khanzadimahdi
Copy link
Member

همه اکسپشن ها رو catch کنید و لاگ بزارید. الان شما فقط InvalidPaymentException رو catch میکنید.

@Rava-milad
Copy link

درود
این اتفاق برای من هم میوفته روی لاراول ورژن ۱۱
InvalidPaymentException کاربر به درگاه میره پرداخت رو انجام میده و زمانی که به سایت بر میگرده لازمه که ما تراکنش کاربر رو تایید کنیم که در این بخش موفق به تایید تراکنش کاربر نمیشم و پرداخت تایید نمیشه
لاگ هم گرفتم به شرح زیر:
"خطای ناشناخته ای رخ داده است."
از لاین ۲۱۰ درایوری که استفاده میکنم ایراد میگیره در صورتی که همین کد ها روی لاراول ۱۰ در حال کار هستش و مشکلی نداره

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants