everything semi working before sample implementation

This commit is contained in:
twotalesanimation
2025-12-30 00:09:14 +02:00
parent 00b8ff77b2
commit 3c24c0e9ef
39 changed files with 1072 additions and 1615 deletions
+96 -34
View File
@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\CustomOrder;
use App\Models\Order;
use App\Models\OrderItem;
use App\Models\Product;
@@ -267,6 +268,7 @@ class OrderController extends Controller
'metadata' => [
'order_uuid' => $order->uuid,
'order_number' => $order->order_number,
'order_type' => 'standard',
'site' => 'additional_design',
],
];
@@ -477,6 +479,7 @@ class OrderController extends Controller
$metadata = $payload['metadata'] ?? [];
$orderUuid = $metadata['order_uuid'] ?? null;
$orderType = $metadata['order_type'] ?? null;
$site = $metadata['site'] ?? null;
$paymentId = $payload['id'] ?? null;
$status = $payload['status'] ?? null;
@@ -484,6 +487,7 @@ class OrderController extends Controller
\Log::info('Yoco Webhook: Payload extracted', [
'type' => $type,
'site' => $site,
'order_type' => $orderType,
'order_uuid' => $orderUuid,
'payment_id' => $paymentId,
'status' => $status,
@@ -506,49 +510,107 @@ class OrderController extends Controller
return response()->json(['error' => 'Invalid payload'], 400);
}
// 7. Update Payment State
$order = Order::where('uuid', $orderUuid)->first();
// 7. Update Payment State where orderType is 'standard'
if ($orderType === 'standard') {
if (!$order) {
\Log::warning('Yoco Webhook: Order not found', ['order_uuid' => $orderUuid]);
return response()->json(['error' => 'Order not found'], 404);
}
if ($status === 'succeeded') {
\Log::info('Yoco Webhook: Processing successful payment', [
'order_uuid' => $orderUuid,
'payment_id' => $paymentId,
]);
$order = Order::where('uuid', $orderUuid)->first();
if ($order->payment_status !== 'paid') {
$order->update([
'payment_status' => 'paid',
'status' => 'processing',
'yoco_checkout_response' => json_encode($payload),
if (!$order) {
\Log::warning('Yoco Webhook: Order not found', ['order_uuid' => $orderUuid]);
return response()->json(['error' => 'Order not found'], 404);
}
if ($status === 'succeeded') {
\Log::info('Yoco Webhook: Processing successful payment', [
'order_uuid' => $orderUuid,
'payment_id' => $paymentId,
]);
// Reduce stock
foreach ($order->items as $item) {
$product = $item->product;
$product->stock -= $item->quantity;
$product->save();
if ($order->payment_status !== 'paid') {
$order->update([
'payment_status' => 'paid',
'status' => 'processing',
'yoco_checkout_response' => json_encode($payload),
]);
// Reduce stock
foreach ($order->items as $item) {
$product = $item->product;
$product->stock -= $item->quantity;
$product->save();
}
\Log::info('Yoco Webhook: Order updated for successful payment', [
'order_uuid' => $orderUuid,
'order_id' => $order->id,
]);
}
\Log::info('Yoco Webhook: Order updated for successful payment', [
} elseif ($status === 'failed' || $status === 'cancelled') {
\Log::info('Yoco Webhook: Processing failed/cancelled payment', [
'order_uuid' => $orderUuid,
'order_id' => $order->id,
'payment_id' => $paymentId,
'status' => $status,
]);
$order->update([
'payment_status' => 'failed',
]);
}
} elseif ($status === 'failed' || $status === 'cancelled') {
\Log::info('Yoco Webhook: Processing failed/cancelled payment', [
'order_uuid' => $orderUuid,
'payment_id' => $paymentId,
'status' => $status,
]);
} elseif ($orderType === 'custom_deposit' || $orderType === 'custom_balance') {
$order->update([
'payment_status' => 'failed',
]);
$order = CustomOrder::where('uuid', $orderUuid)->first();
if (!$order) {
\Log::warning('Yoco Webhook: Order not found', ['order_uuid' => $orderUuid]);
return response()->json(['error' => 'Order not found'], 404);
}
if ($status === 'succeeded') {
\Log::info('Yoco Webhook: Processing successful payment', [
'order_uuid' => $orderUuid,
'payment_id' => $paymentId,
'order_type' => $orderType,
]);
if ($orderType === 'custom_deposit' && $order->deposit_status !== 'paid') {
$order->update([
'deposit_status' => 'paid',
'status' => 'submitted',
'yoco_checkout_response' => json_encode($payload),
]);
\Log::info('Yoco Webhook: Order updated for successful deposit payment', [
'order_uuid' => $orderUuid,
'order_id' => $order->id,
'order_type' => $orderType,
]);
} elseif ($orderType === 'custom_balance' && $order->balance_status !== 'paid') {
$order->update([
'balance_status' => 'paid',
'status' => 'in production',
'yoco_checkout_response' => json_encode($payload),
]);
\Log::info('Yoco Webhook: Order updated for successful balance payment', [
'order_uuid' => $orderUuid,
'order_id' => $order->id,
'order_type' => $orderType,
]);
}
} elseif ($status === 'failed' || $status === 'cancelled') {
\Log::info('Yoco Webhook: Processing failed/cancelled payment', [
'order_uuid' => $orderUuid,
'payment_id' => $paymentId,
'status' => $status,
]);
if ($orderType === 'custom_deposit') {
$order->update(['deposit_status' => 'failed']);
} elseif ($orderType === 'custom_balance') {
$order->update(['balance_status' => 'failed']);
}
}
}
\Log::info('Yoco Webhook: Processed successfully', [