chore(pay): close residual zibll edge contracts for content pay

Expand coupon scope to content categories, document points_deduction as runtime-off like zibll, reject card_pass on content cashier, and pass shop/content context into coupon validate.
This commit is contained in:
kate522 committed 2026-07-14 22:12:12 +08:00
1 parent dc28fafcc3
commit 2ead893923
6 files changed
+90 -24

No files matched your search

@@ -73,7 +73,10 @@ class AKSRT_Shop_Checkout_Service {
$shipping_profile = $this->resolve_shipping_quote($product_views, $shipping_method);
$coupon_code = sanitize_text_field((string) ($payload['coupon_code'] ?? ''));
$coupon_result = $this->resolve_coupon_discount($coupon_code, $subtotal + $shipping_profile['fee']);
$product_ids = array_values(array_unique(array_map(static function ($row) {
return (int) ($row['product_id'] ?? $row['id'] ?? 0);
}, $product_views)));
$coupon_result = $this->resolve_coupon_discount($coupon_code, $subtotal + $shipping_profile['fee'], $product_ids);
if (!$coupon_result['success']) {
return $coupon_result;
}
@@ -306,7 +309,7 @@ class AKSRT_Shop_Checkout_Service {
return $normalized;
}
private function resolve_coupon_discount(string $coupon_code, float $order_amount): array {
private function resolve_coupon_discount(string $coupon_code, float $order_amount, array $product_ids = []): array {
if ($coupon_code === '') {
return ['success' => true, 'discount' => 0.0, 'coupon' => []];
}
@@ -315,7 +318,11 @@ class AKSRT_Shop_Checkout_Service {
return ['success' => false, 'message' => __('优惠券系统不可用。', 'aksrt')];
}
$result = AKSRT_Coupon::get_instance()->validate($coupon_code, $order_amount);
$result = AKSRT_Coupon::get_instance()->validate($coupon_code, $order_amount, [
'user_id' => get_current_user_id(),
'product_ids' => array_values(array_filter(array_map('intval', $product_ids))),
'context' => 'shop',
]);
if (empty($result['valid'])) {
return ['success' => false, 'message' => $result['message'] ?? __('优惠券不可用。', 'aksrt')];
}