'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'])){ \Log::channel('payone')->error('PaymentStatus: parameter incomplete: '.json_encode($data)); echo "PaymentStatus: parameter incomplete:"; var_dump($data); die(); } if($data['key'] != config('payone.defaults.key')) { \Log::channel('payone')->error('PaymentStatus: Key error: '.json_encode($data)); echo "PaymentStatus: Key error:"; var_dump($data); die(); } $shopping_order = ShoppingOrder::find($data['param']); if(!$shopping_order){ \Log::channel('payone')->error('PaymentStatus: ShoppingOrder not found: '.json_encode($data)); echo "PaymentStatus: ShoppingOrder not found:"; var_dump($data); die(); } $shopping_payment = ShoppingPayment::where('reference', $data['reference'])->first(); if(!$shopping_payment){ \Log::channel('payone')->error('PaymentStatus: ShoppingPayment not found: '.json_encode($data)); echo "PaymentStatus: ShoppingPayment not found:"; var_dump($data); die(); } if($shopping_payment->shopping_order_id != $shopping_order->id){ \Log::channel('payone')->error('PaymentStatus: ShoppingPayment no realation ShoppingOrder: '.json_encode($data)); echo "PaymentStatus: ShoppingPayment no realation ShoppingOrder:"; var_dump($data); die(); } if($data['key'] != config('payone.defaults.key')) { \Log::channel('payone')->error('PaymentStatus: Key error: '.json_encode($data)); echo "PaymentStatus: ShoppingPayment no realation ShoppingOrder:"; var_dump($data); die(); } $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; \Log::channel('payone')->error('PaymentStatus: Price error: '.json_encode($data)); echo "PaymentStatus: Price error:"; var_dump($data); die(); } /* TODO -- need this? if($shopping_payment->txaction == $data['txaction']){ \Log::channel('payone')->error('PaymentStatus: same txaction error: '.json_encode($data)); echo "PaymentStatus: same txaction:"; var_dump($data); die(); } */ //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; if($data['txaction'] === 'failed'){ $shopping_order->setUserHistoryValue(['status' => 6]); } if($data['txaction'] === 'appointed'){ $shopping_order->setUserHistoryValue(['status' => 7]); Shop::userOrders(); } if($data['txaction'] === 'paid'){ $send_link = Payment::paymentStatusPaidAction($shopping_order, true); } $data['send_link'] = $send_link; Payment::paymentStatusSendMail($shopping_order, $shopping_payment, $data); print("TSOK"); exit; } }