积分与余额账务系统硬切重构
This commit is contained in:
@@ -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'))
|
||||
|
||||
Reference in New Issue
Block a user