积分与余额账务系统硬切重构

This commit is contained in:
2026-08-24 15:59:11 +08:00
parent ca12226b39
commit 5cae5b5c93
159 changed files with 7275 additions and 4718 deletions
+21 -3
View File
@@ -53,7 +53,9 @@ class OrderCenterRest {
'methods' => \WP_REST_Server::CREATABLE,
'callback' => [$this, 'pay'],
'permission_callback' => [$this, 'require_logged_in'],
'args' => $route_args,
'args' => array_merge($route_args, [
'payment_method' => ['type' => 'string', 'sanitize_callback' => 'sanitize_key'],
]),
]);
register_rest_route($namespace, '/orders/' . $order_number . '/cancel', [
'methods' => \WP_REST_Server::CREATABLE,
@@ -76,10 +78,14 @@ class OrderCenterRest {
}
/** @return true|\WP_Error */
public function require_logged_in() {
public function require_logged_in(\WP_REST_Request $request) {
if (!is_user_logged_in()) {
return new \WP_Error('aksrt_rest_forbidden', __('请先登录', 'aksrt'), ['status' => 401]);
}
$nonce = (string) $request->get_header('X-WP-Nonce');
if ($nonce === '' || !wp_verify_nonce($nonce, 'wp_rest')) {
return new \WP_Error('aksrt_rest_nonce', __('安全验证失败,请刷新页面后重试', 'aksrt'), ['status' => 403]);
}
return true;
}
@@ -92,6 +98,10 @@ class OrderCenterRest {
}
public function pay(\WP_REST_Request $request): \WP_REST_Response {
$operation_key = \AKSRT\Ledger\OperationKey::from_request($request, 'order-pay', get_current_user_id());
if (is_wp_error($operation_key)) {
return new \WP_REST_Response(['success' => false, 'message' => $operation_key->get_error_message()], (int) ($operation_key->get_error_data()['status'] ?? 400));
}
$params = $request->get_json_params();
$params = is_array($params) ? $params : [];
$result = UserOrders::get_instance()->pay_order(
@@ -101,10 +111,14 @@ class OrderCenterRest {
);
return !empty($result['success'])
? $this->success(['data' => $result['data'] ?? []])
: $this->error((string) ($result['message'] ?? __('支付失败', 'aksrt')), 400);
: $this->error((string) ($result['message'] ?? __('支付失败', 'aksrt')), (int) ($result['status'] ?? 400));
}
public function cancel(\WP_REST_Request $request): \WP_REST_Response {
$operation_key = \AKSRT\Ledger\OperationKey::from_request($request, 'order-cancel', get_current_user_id());
if (is_wp_error($operation_key)) {
return new \WP_REST_Response(['success' => false, 'message' => $operation_key->get_error_message()], (int) ($operation_key->get_error_data()['status'] ?? 400));
}
$result = UserOrders::get_instance()->cancel_order(
get_current_user_id(),
sanitize_text_field((string) $request->get_param('order_number'))
@@ -115,6 +129,10 @@ class OrderCenterRest {
}
public function refresh(\WP_REST_Request $request): \WP_REST_Response {
$operation_key = \AKSRT\Ledger\OperationKey::from_request($request, 'order-refresh', get_current_user_id());
if (is_wp_error($operation_key)) {
return new \WP_REST_Response(['success' => false, 'message' => $operation_key->get_error_message()], (int) ($operation_key->get_error_data()['status'] ?? 400));
}
$order = UserOrders::get_instance()->refresh_order(
get_current_user_id(),
sanitize_text_field((string) $request->get_param('order_number'))