-
Notifications
You must be signed in to change notification settings - Fork 151
Open
Description
در وعضی از موارد کاربر تو درگاه مبلغ رو به درستی پرداخت میکنه
تراکنش تایید میشه
ولی رو سایتم وضعیت تراکنش تغییر نمیکنه..
همیشه این اتفاق نمیفته هرچقد تست میکنم همه چی درسته ولی در مواردی این اتفاق میفته..
کد های 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'));
}
}
`
Metadata
Metadata
Assignees
Labels
No labels