fix(vip): 会员弹窗支付方式渠道对齐 Zibll initiate_pay_input 组件

支付方式 UI 不再自实现(uc-vip-shop__method 文本 radio),改为与其他
两个弹窗(充值/积分)完全同源的 Zibll zibpay_get_initiate_pay_input
组件结构:

- 支付方式行:.payment-method-radio.hollow-radio + logo 图 +
  data-for/data-value 选中模型(多渠道时展示「请选择支付方式」)
- 我的余额盒:data-controller == balance 条件显隐,展示货币符号与余额
  (视图模型透传 wallet_balance / currency_mark)
- 卡密盒:Zibll password_box 同构(mb10 padding-h10 padding-w6 +
  desc muted-box + form-control 卡号/卡密输入)
- hidden payment_method + initiate-pay 按钮类(mt6 but jb-red
  btn-block radius)
- 服务端 payment_method_logo_url() 统一映射 pay-*-logo.svg
- 显隐统一走 data-controller(==/!=)通用匹配,卡密选中隐藏 .charge-box
- 清理 uc-vip-shop__method* 死样式与旧 change 监听;契约测试同步锁定
  (.gitignore 白名单补 card-pass-modal-redeem.test.cjs)
This commit is contained in:
2026-09-18 12:44:38 +08:00
parent e72d0710e6
commit 721fa29b8d
5 changed files with 298 additions and 62 deletions
+29
View File
@@ -64,6 +64,15 @@ trait VipServiceModal {
}
$points_exchange = is_array($catalog['points_exchange'] ?? null) ? $catalog['points_exchange'] : [];
$methods = is_array($catalog['payment_methods'] ?? null) ? $catalog['payment_methods'] : [];
// 支付方式 logo(与充值/积分弹窗的 payment-method-radio 组件同源)。
$methods = array_map(function ($m) {
$id = sanitize_key((string) ($m['id'] ?? ''));
return [
'id' => $id,
'name' => (string) ($m['name'] ?? $id),
'logo' => $this->payment_method_logo_url($id),
];
}, $methods);
$card_pass = is_array($catalog['card_pass'] ?? null)
? array_merge(['enabled' => false, 'desc' => '', 'only_password' => false], $catalog['card_pass'])
: ['enabled' => false, 'desc' => '', 'only_password' => false];
@@ -111,6 +120,7 @@ trait VipServiceModal {
'currency_name' => (string) ($catalog['currency_name'] ?? ''),
'level_packages' => $groups,
'points_exchange' => $points_exchange,
'wallet_balance' => (string) ($catalog['wallet_balance'] ?? '0.00'),
'vip_url' => (string) ($catalog['vip_url'] ?? ''),
],
'member' => [
@@ -128,6 +138,7 @@ trait VipServiceModal {
'levels' => $level_view,
'payment_methods' => $methods,
'card_pass' => $card_pass,
'currency_mark' => (string) (\AKSRT\Settings\Settings::get_payment_gateway_settings()['currency']['mark'] ?? '¥'),
'allowed_actions' => [
'purchase' => $package_ids !== [] && $methods !== [],
'renew' => $has_renew && $methods !== [],
@@ -146,6 +157,24 @@ trait VipServiceModal {
];
}
/**
* 支付方式 logo 映射(assets/img/pay-*-logo.svg,与充值/积分弹窗一致)。
*/
private function payment_method_logo_url(string $id): string {
$logos = [
'balance' => 'pay-balance-logo.svg',
'alipay' => 'pay-alipay-logo.svg',
'epay_alipay' => 'pay-alipay-logo.svg',
'wechatpay' => 'pay-wechat-logo.svg',
'epay_wxpay' => 'pay-wechat-logo.svg',
'paypal' => 'pay-paypal-logo.svg',
'stripe' => 'pay-stripe-logo.svg',
'card_pass' => 'pay-card-pass-logo.svg',
];
$file = $logos[$id] ?? '';
return $file === '' ? '' : esc_url_raw(get_template_directory_uri() . '/assets/img/' . $file);
}
/**
* Mini hover card for header (legacy aksrtpay_get_vip_card).
*/