25 lines
1.1 KiB
PHP
25 lines
1.1 KiB
PHP
<?php
|
|
// food/merchant_ops/reject.php — المطعم يرفض الطلب — استرجاع فوري إن دُفع من المحفظة
|
|
require_once __DIR__ . '/../connect_merchant.php';
|
|
|
|
$orderId = filterRequest('order_id', 'int');
|
|
$reason = filterRequest('reason');
|
|
if (!$orderId) jsonError('order_id is required');
|
|
|
|
$order = foodAssertOrderOwnership($orderId, 'merchant', (string)$food_merchant_id);
|
|
food_transition_status($orderId, 'rejected', 'merchant', (string)$food_merchant_user_id, $reason);
|
|
|
|
if ($order['payment_method'] === 'wallet') {
|
|
$refunded = foodWalletMove(
|
|
(string)$order['passenger_id'], (int)$order['grand_total'], 'add',
|
|
"food-refund-{$orderId}", "Food order #{$orderId} rejected by merchant"
|
|
);
|
|
$food_con->prepare(
|
|
"INSERT INTO food_order_payments (order_id, type, amount, status) VALUES (?,'release',?,?)"
|
|
)->execute([$orderId, (int)$order['grand_total'], $refunded ? 'success' : 'failed']);
|
|
|
|
if (!$refunded) appLog("[FOOD][MERCHANT][reject] refund FAILED for order $orderId — needs manual reconciliation", 'ERROR');
|
|
}
|
|
|
|
jsonSuccess(['order_id' => $orderId, 'status' => 'rejected']);
|