feat(user-center): add cash wallet balance separate from credits

Introduce AKSRT_Balance (user_meta aksrt_balance + balance_log) for
Zibll-like pay_balance wallet. User center assets panel shows wallet
and points; balance gateway/card-pass/refunds credit cash when enabled.
This commit is contained in:
kate522 committed 2026-07-16 13:44:37 +08:00
1 parent f043d2c1ab
commit 8e0f9d989d
16 files changed
+637 -74

No files matched your search

+19 -9
View File
@@ -514,15 +514,25 @@ class AKSRT_After_Sale {
$payment_method = (string) ($order['payment_method'] ?? 'balance');
$order_number = (string) ($order['order_number'] ?? '');
// Balance refund: credit back via AKSRT_Credits
if ($payment_method === 'balance' && class_exists('AKSRT_Credits')) {
AKSRT_Credits::add(
$user_id,
(int) round($refund_amount),
sprintf(__('售后退款:订单 %s', 'aksrt'), $order_number),
['order_number' => $order_number, 'type' => 'refund'],
sprintf(__('售后退款金额 ¥%s', 'aksrt'), number_format($refund_amount, 2))
);
// Balance refund: prefer cash wallet, fall back to points.
if ($payment_method === 'balance') {
if (class_exists('AKSRT_Balance') && AKSRT_Balance::enabled()) {
AKSRT_Balance::add(
$user_id,
(float) $refund_amount,
'order_refund',
['type' => 'order', 'order' => $order_number],
sprintf(__('售后退款:订单 %s', 'aksrt'), $order_number)
);
} elseif (class_exists('AKSRT_Credits')) {
AKSRT_Credits::add(
$user_id,
(int) round($refund_amount),
'order_refund',
['order_number' => $order_number, 'type' => 'refund'],
sprintf(__('售后退款金额 ¥%s', 'aksrt'), number_format($refund_amount, 2))
);
}
}
// Deduct sales_volume for refunded items