feat(payment): 通用卡密兑换弹窗并修正核销订单实付与订单名称
- /user/balance/ 余额卡片入口改为通用「卡密兑换」弹窗:请求不带类型, 后端按卡密自动识别余额/会员/积分;卡号输入恒展示且选填 - 后台「余额充值 → 卡密充值」语义更新为「卡密兑换」,开关更名 「启用卡密兑换功能」(设置键不变),双源 schema 同步并重建 SPA - 删除死代码:credits-vip.php 死文件、credits-balance.php 内联积分 兑换块、/pay/card-pass/options 路由与 rest_options、labels 数组、 asset_points_card_description/password_only 死字段及内联块专属 CSS - 卡密核销订单实付恒 0:create_redeem_order 源头写 0,UserOrders 对 card_pass 订单视图层归零覆盖历史行(不迁移数据) - 订单名称按 note.meta 生成:卡密兑换-余额充值X / 卡密兑换-积分充值X / 购入[会员档位名]X天(永久) - 新增契约 card-pass-universal-redeem.test.cjs,收紧 user-assets-layout 契约(禁 .uc-card-pass 根类回潮)
This commit is contained in:
1 parent
ba8d4b1b90
commit
3481620ed0
14 files changed
+213
-415
No files matched your search
@@ -13,11 +13,6 @@ if (!$credits_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
$card_pass_credits = ['enabled' => false, 'desc' => '', 'only_password' => true];
|
||||
if (class_exists('\AKSRT\Payment\ChargeCard')) {
|
||||
$opts = \AKSRT\Payment\ChargeCard::get_instance()->get_public_options();
|
||||
$card_pass_credits = is_array($opts['credits'] ?? null) ? $opts['credits'] : $card_pass_credits;
|
||||
}
|
||||
$all_settings = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_all() : [];
|
||||
$points_uid = (int) ($user_id ?? get_current_user_id());
|
||||
$points_transfer_on = !empty($all_settings['points_transfer_s']);
|
||||
@@ -83,23 +78,3 @@ $currency = (string) ($currency_name ?? __('积分', 'aksrt'));
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($card_pass_credits['enabled'])) : ?>
|
||||
<div class="uc-card-pass" data-aksrt-card-pass="credits">
|
||||
<div class="uc-card-pass__title">
|
||||
<i class="fa fas fa-ticket-alt" aria-hidden="true"></i>
|
||||
<span><?php esc_html_e('卡密兑换积分', 'aksrt'); ?></span>
|
||||
</div>
|
||||
<?php if (!empty($card_pass_credits['desc'])) : ?>
|
||||
<p class="uc-card-pass__desc"><?php echo esc_html((string) $card_pass_credits['desc']); ?></p>
|
||||
<?php endif; ?>
|
||||
<?php if (empty($card_pass_credits['only_password'])) : ?>
|
||||
<input type="text" class="uc-card-pass__input" name="aksrt_card_no" data-aksrt-card-no autocomplete="off" placeholder="<?php esc_attr_e('请输入卡号', 'aksrt'); ?>">
|
||||
<?php endif; ?>
|
||||
<input type="text" class="uc-card-pass__input" name="aksrt_card_password" data-aksrt-card-password autocomplete="off" placeholder="<?php esc_attr_e('请输入卡密', 'aksrt'); ?>">
|
||||
<button type="button" class="uc-card-pass__btn" data-aksrt-card-redeem data-type="credits">
|
||||
<?php esc_html_e('兑换积分', 'aksrt'); ?>
|
||||
</button>
|
||||
<p class="uc-card-pass__tip" data-aksrt-card-tip></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
@@ -1,269 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* User center credits: VIP membership card + purchase packages + points exchange.
|
||||
*
|
||||
* Expects extracted $context vars.
|
||||
*
|
||||
* @package AKSRT
|
||||
*/
|
||||
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
$vip_settings = is_array($vip_settings ?? null) ? $vip_settings : [];
|
||||
if (empty($vip_settings['enabled'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$user_id = (int) ($user_id ?? get_current_user_id());
|
||||
$vip_level = 0;
|
||||
$expires = 0;
|
||||
$expires_label = __('未开通', 'aksrt');
|
||||
$is_vip_user = false;
|
||||
$level_name = (string) ($vip_settings['name'] ?? __('VIP会员', 'aksrt'));
|
||||
|
||||
$packages = [];
|
||||
$renew_desc = '';
|
||||
$upgrade_desc = '';
|
||||
$points_exchange = ['enabled' => false, 'packages' => [], 'desc' => ''];
|
||||
$user_points = 0;
|
||||
$currency_name = __('积分', 'aksrt');
|
||||
$methods = [['id' => 'balance', 'name' => __('站内余额', 'aksrt')]];
|
||||
if (class_exists('\AKSRT\Content\VipService')) {
|
||||
$catalog = \AKSRT\Content\VipService::get_instance()->get_catalog($user_id);
|
||||
$vip_level = (int) ($catalog['user_level'] ?? 0);
|
||||
$expires = (int) ($catalog['user_expires'] ?? 0);
|
||||
$expires_label = (string) ($catalog['user_expires_label'] ?? $expires_label);
|
||||
$is_vip_user = $vip_level > 0;
|
||||
$packages = is_array($catalog['level_packages'] ?? null) ? $catalog['level_packages'] : [];
|
||||
$methods = is_array($catalog['payment_methods'] ?? null) ? $catalog['payment_methods'] : $methods;
|
||||
$renew_desc = (string) ($catalog['renew_desc'] ?? '');
|
||||
$upgrade_desc = (string) ($catalog['upgrade_desc'] ?? '');
|
||||
$points_exchange = is_array($catalog['points_exchange'] ?? null) ? $catalog['points_exchange'] : $points_exchange;
|
||||
$user_points = (int) ($catalog['user_points'] ?? 0);
|
||||
if (!empty($catalog['currency_name'])) {
|
||||
$currency_name = (string) $catalog['currency_name'];
|
||||
}
|
||||
} elseif (class_exists('\\AKSRT\\Settings\\Settings')) {
|
||||
$currency_name = \AKSRT\Settings\Settings::get_currency_name();
|
||||
}
|
||||
if ($vip_level >= 1 && !empty($vip_settings['levels'][$vip_level]['name'])) {
|
||||
$level_name = (string) $vip_settings['levels'][$vip_level]['name'];
|
||||
}
|
||||
|
||||
$level_icon_url = esc_url((string) ($vip_settings['levels'][$vip_level]['img_icon'] ?? ''));
|
||||
$level_icon = $level_icon_url !== ''
|
||||
? '<img' . aksrt_get_lazy_attr('lazy_other', $level_icon_url, 'aksrt-vip-level-icon') . ' alt="" decoding="async">'
|
||||
: '<i class="fa fas fa-certificate" aria-hidden="true"></i>';
|
||||
if (class_exists('\AKSRT\Settings\Settings')) {
|
||||
$paid_display = \AKSRT\Settings\Settings::get_paid_content_settings();
|
||||
$cash_symbol = (string) ($paid_display['display']['currency_symbol'] ?? '¥');
|
||||
}
|
||||
|
||||
$shop_title = __('开通会员', 'aksrt');
|
||||
if ($vip_level > 0) {
|
||||
$shop_title = __('续费 / 升级会员', 'aksrt');
|
||||
}
|
||||
$points_pkgs = is_array($points_exchange['packages'] ?? null) ? $points_exchange['packages'] : [];
|
||||
|
||||
$card_pass_vip = ['enabled' => false, 'desc' => '', 'only_password' => true];
|
||||
if (class_exists('\AKSRT\Payment\ChargeCard')) {
|
||||
$card_opts = \AKSRT\Payment\ChargeCard::get_instance()->get_public_options();
|
||||
$card_pass_vip = is_array($card_opts['vip'] ?? null) ? $card_opts['vip'] : $card_pass_vip;
|
||||
} elseif (!empty($vip_settings['benefit']['pass_charge'])) {
|
||||
$card_pass_vip = [
|
||||
'enabled' => true,
|
||||
'desc' => (string) ($vip_settings['benefit']['pass_charge_desc'] ?? ''),
|
||||
'only_password' => !isset($vip_settings['benefit']['pass_charge_only_password']) || !empty($vip_settings['benefit']['pass_charge_only_password']),
|
||||
];
|
||||
}
|
||||
?>
|
||||
<div class="uc-vip-card<?php echo $is_vip_user ? ' uc-vip-card--active' : ''; ?>" data-aksrt-vip-panel>
|
||||
<div class="uc-vip-card__bg"></div>
|
||||
<div class="uc-vip-card__content">
|
||||
<div class="uc-vip-card__header">
|
||||
<div class="uc-vip-card__icon">
|
||||
<?php echo $level_icon; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
|
||||
</div>
|
||||
<div class="uc-vip-card__info">
|
||||
<span class="uc-vip-card__label"><?php echo esc_html($level_name); ?></span>
|
||||
<?php if ($is_vip_user) : ?>
|
||||
<span class="uc-vip-card__status uc-vip-card__status--active"><?php echo esc_html($expires_label); ?></span>
|
||||
<?php else : ?>
|
||||
<span class="uc-vip-card__status"><?php esc_html_e('未开通', 'aksrt'); ?></span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uc-vip-card__benefits">
|
||||
<span class="uc-vip-card__benefit"><i class="fa fas fa-download" aria-hidden="true"></i> <?php esc_html_e('免费下载', 'aksrt'); ?></span>
|
||||
<span class="uc-vip-card__benefit"><i class="fa fas fa-certificate" aria-hidden="true"></i> <?php esc_html_e('专属身份', 'aksrt'); ?></span>
|
||||
<span class="uc-vip-card__benefit"><i class="fa fas fa-tag" aria-hidden="true"></i> <?php esc_html_e('会员价优惠', 'aksrt'); ?></span>
|
||||
</div>
|
||||
<?php if (!empty($vip_settings['desc'])) : ?>
|
||||
<p class="uc-vip-card__desc"><?php echo esc_html((string) $vip_settings['desc']); ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($packages)) : ?>
|
||||
<div class="uc-vip-shop" data-aksrt-vip-shop>
|
||||
<div class="uc-vip-shop__title">
|
||||
<i class="fa fas fa-gem" aria-hidden="true"></i>
|
||||
<span><?php echo esc_html($shop_title); ?></span>
|
||||
</div>
|
||||
|
||||
<?php if ($vip_level > 0 && $renew_desc !== '') : ?>
|
||||
<p class="uc-vip-shop__note"><?php echo esc_html($renew_desc); ?></p>
|
||||
<?php endif; ?>
|
||||
<?php if ($vip_level === 1 && $upgrade_desc !== '') : ?>
|
||||
<p class="uc-vip-shop__note"><?php echo esc_html($upgrade_desc); ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php foreach ($packages as $group) :
|
||||
$g_level = (int) ($group['level'] ?? 0);
|
||||
$g_name = (string) ($group['name'] ?? ('VIP' . $g_level));
|
||||
$g_action = (string) ($group['action'] ?? 'pay');
|
||||
$items = is_array($group['items'] ?? null) ? $group['items'] : [];
|
||||
if ($items === []) {
|
||||
continue;
|
||||
}
|
||||
$group_badge = '';
|
||||
if ($g_action === 'renew') {
|
||||
$group_badge = __('续费', 'aksrt');
|
||||
} elseif ($g_action === 'upgrade') {
|
||||
$group_badge = __('升级', 'aksrt');
|
||||
} elseif ($vip_level >= $g_level) {
|
||||
$group_badge = __('当前档', 'aksrt');
|
||||
}
|
||||
?>
|
||||
<div class="uc-vip-shop__group" data-vip-level="<?php echo esc_attr((string) $g_level); ?>" data-action="<?php echo esc_attr($g_action); ?>">
|
||||
<div class="uc-vip-shop__group-title">
|
||||
<?php echo esc_html($g_name); ?>
|
||||
<?php if ($group_badge !== '') : ?>
|
||||
<span class="uc-vip-shop__badge"><?php echo esc_html($group_badge); ?></span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="uc-vip-shop__grid">
|
||||
<?php foreach ($items as $item) :
|
||||
$pid = (int) ($item['package_id'] ?? 0);
|
||||
$price_label = (string) ($item['price_label'] ?? ($cash_symbol . ($item['price'] ?? 0)));
|
||||
$show_price_label = (string) ($item['show_price_label'] ?? '');
|
||||
$discount_tag = (string) ($item['discount_tag'] ?? '');
|
||||
$days_label = (string) ($item['days_label'] ?? '');
|
||||
$title = (string) ($item['title'] ?? '');
|
||||
$cta = (string) ($item['cta_label'] ?? __('立即开通', 'aksrt'));
|
||||
?>
|
||||
<button
|
||||
type="button"
|
||||
class="uc-vip-shop__item"
|
||||
data-aksrt-vip-buy
|
||||
data-package-id="<?php echo esc_attr((string) $pid); ?>"
|
||||
data-price-label="<?php echo esc_attr($price_label); ?>"
|
||||
data-title="<?php echo esc_attr($title); ?>"
|
||||
data-action="<?php echo esc_attr((string) ($item['action'] ?? 'pay')); ?>"
|
||||
>
|
||||
<?php if ($discount_tag !== '') : ?>
|
||||
<span class="uc-vip-shop__item-tag"><?php echo esc_html($discount_tag); ?></span>
|
||||
<?php endif; ?>
|
||||
<span class="uc-vip-shop__item-title"><?php echo esc_html($title); ?></span>
|
||||
<span class="uc-vip-shop__item-days"><?php echo esc_html($days_label); ?></span>
|
||||
<span class="uc-vip-shop__item-price">
|
||||
<?php echo esc_html($price_label); ?>
|
||||
<?php if ($show_price_label !== '') : ?>
|
||||
<small class="uc-vip-shop__item-show"><?php echo esc_html($show_price_label); ?></small>
|
||||
<?php endif; ?>
|
||||
</span>
|
||||
<span class="uc-vip-shop__item-cta"><?php echo esc_html($cta); ?></span>
|
||||
</button>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<?php if (count($methods) > 1) : ?>
|
||||
<div class="uc-vip-shop__methods" data-aksrt-vip-methods>
|
||||
<span class="uc-vip-shop__methods-label"><?php esc_html_e('支付方式', 'aksrt'); ?></span>
|
||||
<?php foreach ($methods as $i => $m) :
|
||||
$mid = (string) ($m['id'] ?? '');
|
||||
$mname = (string) ($m['name'] ?? $mid);
|
||||
?>
|
||||
<label class="uc-vip-shop__method">
|
||||
<input type="radio" name="aksrt_vip_pay_method" value="<?php echo esc_attr($mid); ?>" <?php checked($i === 0); ?>>
|
||||
<span><?php echo esc_html($mname); ?></span>
|
||||
</label>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php elseif (!empty($methods[0]['id'])) : ?>
|
||||
<input type="hidden" name="aksrt_vip_pay_method" value="<?php echo esc_attr((string) $methods[0]['id']); ?>" data-aksrt-vip-method-fixed>
|
||||
<?php endif; ?>
|
||||
|
||||
<p class="uc-vip-shop__tip" data-aksrt-vip-tip></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($points_exchange['enabled']) && $points_pkgs !== []) : ?>
|
||||
<div class="uc-vip-shop uc-vip-shop--points" data-aksrt-vip-points>
|
||||
<div class="uc-vip-shop__title">
|
||||
<i class="fa fas fa-money-bill" aria-hidden="true"></i>
|
||||
<span><?php esc_html_e('积分兑换会员', 'aksrt'); ?></span>
|
||||
</div>
|
||||
<div class="uc-vip-shop__balance">
|
||||
<?php
|
||||
printf(
|
||||
/* translators: 1: points balance 2: currency name */
|
||||
esc_html__('我的积分:%1$s %2$s', 'aksrt'),
|
||||
esc_html((string) $user_points),
|
||||
esc_html($currency_name)
|
||||
);
|
||||
?>
|
||||
</div>
|
||||
<?php if (!empty($points_exchange['desc'])) : ?>
|
||||
<p class="uc-vip-shop__note"><?php echo esc_html((string) $points_exchange['desc']); ?></p>
|
||||
<?php endif; ?>
|
||||
<div class="uc-vip-shop__grid">
|
||||
<?php foreach ($points_pkgs as $item) :
|
||||
$pid = (int) ($item['package_id'] ?? 0);
|
||||
$cost = (int) ($item['points'] ?? 0);
|
||||
$enough = $user_points >= $cost;
|
||||
?>
|
||||
<button
|
||||
type="button"
|
||||
class="uc-vip-shop__item<?php echo $enough ? '' : ' is-disabled'; ?>"
|
||||
data-aksrt-vip-points-buy
|
||||
data-package-id="<?php echo esc_attr((string) $pid); ?>"
|
||||
data-points="<?php echo esc_attr((string) $cost); ?>"
|
||||
<?php disabled(!$enough); ?>
|
||||
>
|
||||
<span class="uc-vip-shop__item-title"><?php echo esc_html((string) ($item['title'] ?? '')); ?></span>
|
||||
<span class="uc-vip-shop__item-days"><?php echo esc_html((string) ($item['days_label'] ?? '')); ?></span>
|
||||
<span class="uc-vip-shop__item-price"><?php echo esc_html((string) ($item['price_label'] ?? '')); ?></span>
|
||||
<span class="uc-vip-shop__item-cta">
|
||||
<?php echo $enough ? esc_html__('立即兑换', 'aksrt') : esc_html__('积分不足', 'aksrt'); ?>
|
||||
</span>
|
||||
</button>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<p class="uc-vip-shop__tip" data-aksrt-vip-points-tip></p>
|
||||
</div>
|
||||
<?php elseif (empty($packages) && !empty($vip_settings['help_text'])) : ?>
|
||||
<p class="uc-vip-shop__empty"><?php echo esc_html((string) $vip_settings['help_text']); ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($card_pass_vip['enabled'])) : ?>
|
||||
<div class="uc-card-pass" data-aksrt-card-pass="vip">
|
||||
<div class="uc-card-pass__title">
|
||||
<i class="fa fas fa-ticket-alt" aria-hidden="true"></i>
|
||||
<span><?php esc_html_e('卡密兑换会员', 'aksrt'); ?></span>
|
||||
</div>
|
||||
<?php if (!empty($card_pass_vip['desc'])) : ?>
|
||||
<p class="uc-card-pass__desc"><?php echo esc_html((string) $card_pass_vip['desc']); ?></p>
|
||||
<?php endif; ?>
|
||||
<?php if (empty($card_pass_vip['only_password'])) : ?>
|
||||
<input type="text" class="uc-card-pass__input" name="aksrt_card_no" data-aksrt-card-no autocomplete="off" placeholder="<?php esc_attr_e('请输入卡号', 'aksrt'); ?>">
|
||||
<?php endif; ?>
|
||||
<input type="text" class="uc-card-pass__input" name="aksrt_card_password" data-aksrt-card-password autocomplete="off" placeholder="<?php esc_attr_e('请输入卡密', 'aksrt'); ?>">
|
||||
<button type="button" class="uc-card-pass__btn" data-aksrt-card-redeem data-type="vip">
|
||||
<?php esc_html_e('兑换会员', 'aksrt'); ?>
|
||||
</button>
|
||||
<p class="uc-card-pass__tip" data-aksrt-card-tip></p>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
@@ -45,12 +45,12 @@ if ($withdraw_on && class_exists('\AKSRT\Payment\Withdrawal')) {
|
||||
$withdraw_pending_hold = $wd_svc->sum_pending_hold((int) ($user_id ?? 0));
|
||||
$withdraw_usage = $wd_svc->daily_usage((int) ($user_id ?? 0), $withdraw_settings);
|
||||
}
|
||||
$card_pass_balance = ['enabled' => false, 'desc' => '', 'only_password' => true];
|
||||
// 卡密兑换总开关(后台 余额充值 → 卡密兑换 → 启用卡密兑换功能),
|
||||
// 通用弹窗支持余额 / 会员 / 积分三类卡密,类型由后端按卡密自动识别。
|
||||
$card_pass_redeem = ['enabled' => false, 'desc' => ''];
|
||||
if (class_exists('\AKSRT\Payment\ChargeCard')) {
|
||||
$opts = \AKSRT\Payment\ChargeCard::get_instance()->get_public_options();
|
||||
$card_pass_balance = is_array($opts['balance'] ?? null) ? $opts['balance'] : $card_pass_balance;
|
||||
} elseif (!empty($recharge['pass_charge'])) {
|
||||
$card_pass_balance = is_array($recharge['pass_charge']) ? $recharge['pass_charge'] : $card_pass_balance;
|
||||
$card_pass_redeem = is_array($opts['balance'] ?? null) ? $opts['balance'] : $card_pass_redeem;
|
||||
}
|
||||
|
||||
$charge_view = [];
|
||||
@@ -92,14 +92,14 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元');
|
||||
<button type="button" class="but b-blue-2" data-aksrt-charge-open><?php esc_html_e('充值', 'aksrt'); ?></button>
|
||||
</div>
|
||||
</div>
|
||||
<?php if ($withdraw_on || !empty($card_pass_balance['enabled'])) : ?>
|
||||
<?php if ($withdraw_on || !empty($card_pass_redeem['enabled'])) : ?>
|
||||
<div class="uc-asset-card__foot muted-2-color em09 mt6 flex jsb ac">
|
||||
<?php if ($withdraw_on) : ?>
|
||||
<span><?php printf(esc_html__('冻结中 %s', 'aksrt'), esc_html($normalize_balance($withdraw_pending_hold)->formatted())); ?></span>
|
||||
<?php else : ?>
|
||||
<span></span>
|
||||
<?php endif; ?>
|
||||
<?php if (!empty($card_pass_balance['enabled'])) : ?>
|
||||
<?php if (!empty($card_pass_redeem['enabled'])) : ?>
|
||||
<button type="button" class="uc-asset-card__head-action muted-color px12" data-aksrt-card-pass-open>
|
||||
<?php esc_html_e('卡密兑换', 'aksrt'); ?>
|
||||
<i class="fa fas fa-angle-right em12 ml3" aria-hidden="true"></i>
|
||||
@@ -109,22 +109,20 @@ $mark = (string) ($charge_view['currency_mark'] ?? '元');
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<?php if (!empty($card_pass_balance['enabled'])) : ?>
|
||||
<div class="uc-modal" id="aksrt-card-pass-modal" hidden data-aksrt-card-pass-modal data-aksrt-card-pass="balance">
|
||||
<?php if (!empty($card_pass_redeem['enabled'])) : ?>
|
||||
<div class="uc-modal" id="aksrt-card-pass-modal" hidden data-aksrt-card-pass-modal data-aksrt-card-pass="">
|
||||
<div class="uc-modal__overlay" data-aksrt-card-pass-close></div>
|
||||
<div class="uc-modal__dialog" role="dialog" aria-modal="true" aria-labelledby="aksrt-card-pass-title">
|
||||
<button type="button" class="uc-modal__close" data-aksrt-card-pass-close aria-label="<?php esc_attr_e('关闭', 'aksrt'); ?>"><i class="fa fas fa-times" aria-hidden="true"></i></button>
|
||||
<h3 id="aksrt-card-pass-title" class="uc-modal__title"><i class="fa fas fa-ticket-alt mr6" aria-hidden="true"></i><?php esc_html_e('卡密兑换余额', 'aksrt'); ?></h3>
|
||||
<?php if (!empty($card_pass_balance['desc'])) : ?>
|
||||
<div class="uc-modal__desc muted-box em09"><?php echo esc_html((string) $card_pass_balance['desc']); ?></div>
|
||||
<?php endif; ?>
|
||||
<?php if (empty($card_pass_balance['only_password'])) : ?>
|
||||
<input type="text" class="uc-card-pass__input" name="aksrt_card_no" data-aksrt-card-no autocomplete="off" placeholder="<?php esc_attr_e('请输入卡号', 'aksrt'); ?>">
|
||||
<h3 id="aksrt-card-pass-title" class="uc-modal__title"><i class="fa fas fa-ticket-alt mr6" aria-hidden="true"></i><?php esc_html_e('卡密兑换', 'aksrt'); ?></h3>
|
||||
<?php if (!empty($card_pass_redeem['desc'])) : ?>
|
||||
<div class="uc-modal__desc muted-box em09"><?php echo esc_html((string) $card_pass_redeem['desc']); ?></div>
|
||||
<?php endif; ?>
|
||||
<input type="text" class="uc-card-pass__input" name="aksrt_card_no" data-aksrt-card-no autocomplete="off" placeholder="<?php esc_attr_e('请输入卡号(选填)', 'aksrt'); ?>">
|
||||
<input type="text" class="uc-card-pass__input" name="aksrt_card_password" data-aksrt-card-password autocomplete="off" placeholder="<?php esc_attr_e('请输入卡密', 'aksrt'); ?>">
|
||||
<div class="uc-card-pass-actions">
|
||||
<button type="button" class="uc-card-pass__btn" data-aksrt-card-redeem data-type="balance">
|
||||
<?php esc_html_e('兑换余额', 'aksrt'); ?>
|
||||
<button type="button" class="uc-card-pass__btn" data-aksrt-card-redeem>
|
||||
<?php esc_html_e('立即兑换', 'aksrt'); ?>
|
||||
</button>
|
||||
</div>
|
||||
<p class="uc-card-pass__tip" data-aksrt-card-tip></p>
|
||||
|
||||
Reference in new issue
Block a user