feat(forum): guest cash purchase for topic and plate follow
- Reuse pay_no_logged_in / pay_cookie_day; generalized guest cookie helpers - Topic + plate cash: guest preview/purchase (no balance), order.user_id=0, cookie unlock - View gates: can_view_topic pay + plate follow accept signed guest cookies - Templates: guest buy/follow CTAs; poll endpoint allows plate_follow guest orders
This commit is contained in:
1 parent
a9150862ef
commit
6b6314b033
9 files changed
+274
-70
No files matched your search
@@ -159,9 +159,13 @@ class AKSRT_Content_Pay {
|
||||
$order = $repo->get_user_order($uid, $order_number);
|
||||
} else {
|
||||
$order = $repo->get($order_number);
|
||||
// Guest may only poll own guest content orders (user_id=0 + resource).
|
||||
if ($order && ((int) ($order['user_id'] ?? -1) !== 0
|
||||
|| (string) ($order['product_type'] ?? '') !== AKSRT_Domain_Model::ORDER_PRODUCT_RESOURCE)) {
|
||||
// Guest may only poll own guest cash orders (user_id=0): content/topic resource or plate_follow.
|
||||
$ptype = sanitize_key((string) ($order['product_type'] ?? ''));
|
||||
$guest_types = [
|
||||
AKSRT_Domain_Model::ORDER_PRODUCT_RESOURCE,
|
||||
AKSRT_Domain_Model::ORDER_PRODUCT_PLATE_FOLLOW,
|
||||
];
|
||||
if ($order && ((int) ($order['user_id'] ?? -1) !== 0 || !in_array($ptype, $guest_types, true))) {
|
||||
$order = null;
|
||||
}
|
||||
}
|
||||
@@ -170,9 +174,9 @@ class AKSRT_Content_Pay {
|
||||
}
|
||||
$status = (string) ($order['status'] ?? '');
|
||||
$paid = class_exists('AKSRT_Domain_Model') && AKSRT_Domain_Model::is_paid_order_status($status);
|
||||
if ($paid && $uid <= 0 && function_exists('aksrt_set_guest_content_pay_cookies')) {
|
||||
if ($paid && $uid <= 0 && function_exists('aksrt_set_guest_pay_cookies')) {
|
||||
// Ensure cookie set even if notify raced ahead of browser cookie.
|
||||
aksrt_set_guest_content_pay_cookies($order);
|
||||
aksrt_set_guest_pay_cookies($order);
|
||||
}
|
||||
return new WP_REST_Response([
|
||||
'order_number' => $order_number,
|
||||
|
||||
Reference in new issue
Block a user