$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'));
}
}
در وعضی از موارد کاربر تو درگاه مبلغ رو به درستی پرداخت میکنه
تراکنش تایید میشه
ولی رو سایتم وضعیت تراکنش تغییر نمیکنه..
همیشه این اتفاق نمیفته هرچقد تست میکنم همه چی درسته ولی در مواردی این اتفاق میفته..
کد های callBack رو میزارم
لطفا راهنمایی کنید
`
public function callBack(Request $request){
`