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:
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')];
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user