'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 = intval($data['price']*100); if($shopping_payment->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), ]); $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]); } if($data['txaction'] === 'paid'){ $shopping_order->setUserHistoryValue(['status' => 8]); $shopping_order->paid = true; $shopping_order->save(); //if product has actions if($shopping_order->shopping_order_items && $shopping_order->auth_user_id){ foreach($shopping_order->shopping_order_items as $shopping_order_item){ if($shopping_order_item->product){ if($shopping_order_item->product->action){ $user = User::findOrFail($shopping_order->auth_user_id); $user->save(); $send_link = true; $date = date("Y-m-d H:i:s", strtotime("+1 years")); foreach ($shopping_order_item->product->action as $do){ if($shopping_order_item->product->getActionName($do) === 'payment_for_account'){ $user->payment_order_id = $shopping_order_item->product->id; //34 $user->payment_account = $date; $user->wizard = 100; $shopping_order->setUserHistoryValue(['status' => 9]); } if($shopping_order_item->product->getActionName($do) === 'payment_for_shop'){ $user->payment_order_id = $shopping_order_item->product->id; //35 $user->payment_shop = $date; $user->wizard = 100; $shopping_order->setUserHistoryValue(['status' => 9]); } if($shopping_order_item->product->getActionName($do) === 'payment_for_shop_upgrade'){ if($shopping_order_item->product->upgrade_to_id){ $user->payment_order_id = $shopping_order_item->product->upgrade_to_id; } $user->payment_shop = $user->payment_account; //same Date, is upgrade $shopping_order->setUserHistoryValue(['status' => 9]); } $user->save(); } } } } } } $billing_email = $shopping_order->shopping_user->billing_email; $user_shop_email = $shopping_order->user_shop->user->email; if(!$billing_email){ $billing_email = config('app.checkout_mail'); } $checkout_mail = config('app.checkout_mail'); if($user_shop_email){ Mail::to($billing_email)->bcc([$user_shop_email, $checkout_mail])->send(new MailCheckout($data['txaction'], $shopping_order, $shopping_payment, $send_link)); }else{ Mail::to($billing_email)->bcc($checkout_mail)->send(new MailCheckout($data['txaction'], $shopping_order, $shopping_payment, $send_link)); } print("TSOK"); exit; } }