'698fb2555f8b2efc74f60b2121421f45', 'txaction' => 'paid', 'clearingtype' => 'wlt', 'userid' => '158723953', 'txid' => '321623031', 'price' => '89.00', 'param' => '1', //$this->shopping_order->id, 'reference' => '15c83aee2766c3', ]; */ if(!isset($data['key']) || !isset($data['param']) || !isset($data['userid']) || !isset($data['txid']) || !isset($data['reference']) || !isset($data['price'])){ MyLog::writeLog( 'payone', 'error', 'Error:2001 App\Http\Controllers\Api\PayoneController::paymentStatus parameter incomplete', $data ); print("TSOK"); exit; } if($data['key'] != config('payone.defaults.key')) { MyLog::writeLog( 'payone', 'error', 'Error:2002 App\Http\Controllers\Api\PayoneController::paymentStatus Key error', $data ); print("TSOK"); exit; } $shopping_order = ShoppingOrder::find($data['param']); if(!$shopping_order){ MyLog::writeLog( 'payone', 'error', 'Error:2003 App\Http\Controllers\Api\PayoneController::paymentStatus ShoppingOrder not found:', $data ); print("TSOK"); exit; } $shopping_payment = ShoppingPayment::where('reference', $data['reference'])->first(); if(!$shopping_payment){ MyLog::writeLog( 'payone', 'error', 'Error:2004 App\Http\Controllers\Api\PayoneController::paymentStatus ShoppingPayment not found', $data ); print("TSOK"); exit; } if($shopping_payment->shopping_order_id != $shopping_order->id){ MyLog::writeLog( 'payone', 'error', 'Error:2005 App\Http\Controllers\Api\PayoneController::paymentStatus ShoppingPayment no realation ShoppingOrder', $data ); print("TSOK"); exit; } $price = number_format((round($data['price'],2) * 100), 0, '.', ''); $price_amount = number_format($shopping_payment->amount, 0, '.', ''); if($price_amount != $price){ $data['shopping_payment-amount'] = $price_amount; $data['price-amount'] = $price; MyLog::writeLog( 'payone', 'error', 'Error:2006 App\Http\Controllers\Api\PayoneController::paymentStatus Price error', $data ); print("TSOK"); exit; } /* TODO -- need this? */ if($shopping_payment->txaction == $data['txaction']){ if($data['txaction'] === 'paid' && $shopping_order->txaction === 'paid'){ MyLog::writeLog( 'payone', 'error', 'Error:2007 App\Http\Controllers\Api\PayoneController::paymentStatus same txaction - was already paid', $data ); //was already paid print("TSOK"); exit; }else{ MyLog::writeLog( 'payone', 'error', 'Error:2007 App\Http\Controllers\Api\PayoneController::paymentStatus same txaction - show', $data ); } } //create transaction PaymentTransaction::create([ 'shopping_payment_id' => $shopping_payment->id, 'request' => 'transaction', 'txid' => $data['txid'], 'userid' => $data['userid'], 'status' => 'PAYONE', 'key' => $data['key'], 'txaction' => $data['txaction'], 'transmitted_data' => Util::utf8ize($data), 'mode' => $data['mode'], ]); $shopping_order->txaction = $data['txaction']; $shopping_order->save(); $shopping_payment->txaction = $data['txaction']; $shopping_payment->save(); $send_link = false; $send_mail = true; if($data['txaction'] === 'failed'){ $shopping_order->setUserHistoryValue(['status' => 6]); Util::setInstanceStatusByPayment($shopping_payment, 5); } if($data['txaction'] === 'appointed'){ $shopping_order->setUserHistoryValue(['status' => 7]); ShoppingUserService::snycOrdersByShoppingOrder($shopping_order); Util::setInstanceStatusByPayment($shopping_payment, 4); } if($data['txaction'] === 'paid'){ if(!$shopping_order->paid){ $send_link = Payment::paymentStatusPaidAction($shopping_order, true, $shopping_payment); }else{ $send_mail = false; } } $data['send_link'] = $send_link; if($send_mail){ Payment::paymentStatusSendMail($shopping_order, $shopping_payment, $data); } print("TSOK"); exit; } }