Files
wordpress-theme-aksrt/src/Admin/Schema/SchemaPayment.php
T
kate522 db0d63b99f fix(pay): 会员卡密单密码默认关闭,卡密盒与其他弹窗一致显示卡号+密码
会员购买/续费弹窗卡密盒此前仅显示卡密输入,与其他两个弹窗(卡号+密码)
不一致。根因是 pay_vip_pass_charge_only_password 的默认值偏离参考主题:

- PaymentRuntime:vip 类型 only_password 由「未设置即视为开启」改为
  !empty(),与其他两类型同构(参考主题 default false)
- ChargeCard:get_public_options 的 vip 回退值 only_password true→false
- SchemaPayment + recharge.js:会员卡密单密码模式开关 default true→false
- 契约测试同步锁定默认关闭与无 isset 回退
- admin SPA 重新构建

已保存过设置且该键被持久化为开启的站点,需在后台「余额充值 → 卡密
兑换 → 会员卡密单密码模式」手动关闭一次。
2026-09-18 17:26:50 +08:00

554 lines
58 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* @package AKSRT
*/
namespace AKSRT\Admin\Schema;
defined('ABSPATH') || exit;
/**
* 「支付&付费」设置 schema。
*
* 页面结构 1:1 复刻参考主题 Zibll 的「支付&付费」section(知识付费 / 余额充值 /
* VIP会员 / 创作分成 / 推广返佣 / 收款接口),并按产品需求新增「提现策略」子页。
* 收款接口仅保留支付宝、微信、PayPal、Stripe、易支付;订单前缀 / 流水号前缀 /
* 提现单号前缀配置保留并收口在收款接口页。
*/
class SchemaPayment {
public static function build(): array {
return [
'domain' => 'payment',
'title' => '支付&付费',
'sections' => [
/* ------------------------------------------------------------------
* 知识付费
* ------------------------------------------------------------------ */
'knowledge' => [
'key' => 'knowledge',
'title' => '知识付费',
'version' => '1.0.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'notice', 'title' => '说明', 'fields' => [
['key' => 'knowledge_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<p><b>知识付费</b></p><ul style="margin:6px 0 0 18px;line-height:1.9"><li>知识付费功能主要分为文章付费、付费会员、余额系统、推广返佣、创作分成等功能组成,您可以根据您的需要开启对应功能</li><li>使用支付功能请先在「收款接口」页配置好收款通道</li></ul>'],
]],
['key' => 'guest-buy', 'title' => '免登陆购买', 'fields' => [
['key' => 'pay_no_logged_in', 'label' => '免登陆购买', 'type' => 'switch', 'default' => true, 'help' => '开启后如果用户未登录则使用浏览器缓存验证是否购买'],
['key' => 'pay_cookie_day', 'label' => 'Cookie时间(天)', 'type' => 'number', 'default' => 15, 'min' => 1, 'max' => 31, 'dependsOn' => ['key' => 'pay_no_logged_in', 'value' => true], 'help' => '免登陆购买的浏览器缓存有效时间'],
['key' => 'pay_no_logged_remind', 'label' => '未登录提醒', 'type' => 'textarea', 'default' => '您当前未登录!建议登陆后购买,可保存购买订单', 'rows' => 2, 'dependsOn' => ['key' => 'pay_no_logged_in', 'value' => true]],
]],
['key' => 'box-position', 'title' => '模块显示位置', 'fields' => [
['key' => 'pay_box_position', 'label' => '购买模块位置', 'type' => 'radio', 'default' => 'top', 'options' => [
['label' => '文章模块上方', 'value' => 'box_top'],
['label' => '文章内容顶部', 'value' => 'top'],
['label' => '文章内容底部', 'value' => 'bottom'],
['label' => '文章模块下方', 'value' => 'box_bottom'],
], 'help' => '在文章页面中购买模块的显示位置'],
]],
['key' => 'display-basic', 'title' => '基础显示', 'fields' => [
['key' => 'pay_free_logged_show', 'label' => '免费资源登录可见', 'type' => 'switch', 'default' => true, 'help' => '免费资源必须登录后才能查看'],
['key' => 'pay_show_user', 'label' => '订单数据', 'type' => 'switch', 'default' => true, 'help' => '在用户中心显示订单数据'],
['key' => 'pay_show_paycount', 'label' => '销量显示', 'type' => 'switch', 'default' => true, 'help' => '商品详情显示销售数量'],
]],
['key' => 'coupon', 'title' => '商品优惠码', 'fields' => [
['key' => 'coupon_post_s', 'label' => '为所有商品启用优惠券功能', 'type' => 'switch', 'default' => false, 'help' => '开启后将为所有商品显示输入优惠码的功能;也可以单独给任意一个商品开启'],
['key' => 'coupon_desc', 'label' => '优惠码默认说明', 'type' => 'textarea', 'default' => '', 'rows' => 1, 'dependsOn' => ['key' => 'coupon_post_s', 'value' => true], 'help' => '用户填写优惠码时展示的提醒内容,支持HTML代码'],
]],
['key' => 'display', 'title' => '展示设置', 'fields' => [
['key' => 'pay_mark', 'label' => '付费标记', 'type' => 'input', 'default' => '付费'],
['key' => 'payment_show_ip', 'label' => '显示用户IP', 'type' => 'switch', 'default' => false],
['key' => 'payment_show_device', 'label' => '显示设备信息', 'type' => 'switch', 'default' => false],
['key' => 'payment_show_order_no', 'label' => '显示订单号', 'type' => 'switch', 'default' => true],
['key' => 'payment_show_create_time', 'label' => '显示创建时间', 'type' => 'switch', 'default' => true],
['key' => 'payment_show_pay_time', 'label' => '显示支付时间', 'type' => 'switch', 'default' => true],
]],
['key' => 'status', 'title' => '状态设置', 'fields' => [
['key' => 'payment_order_status_pending', 'label' => '待支付状态文案', 'type' => 'input', 'default' => '待支付'],
['key' => 'payment_order_status_paid', 'label' => '已支付状态文案', 'type' => 'input', 'default' => '已支付'],
['key' => 'payment_order_status_refunding', 'label' => '退款中状态文案', 'type' => 'input', 'default' => '退款中'],
['key' => 'payment_order_status_refunded', 'label' => '已退款状态文案', 'type' => 'input', 'default' => '已退款'],
['key' => 'payment_order_status_closed', 'label' => '已关闭状态文案', 'type' => 'input', 'default' => '已关闭'],
]],
['key' => 'service', 'title' => '客户服务', 'fields' => [
['key' => 'pay_service', 'label' => '用户服务内容', 'type' => 'group', 'button_title' => '添加服务项', 'default' => [], 'fields' => [
['key' => 'value', 'label' => '服务内容', 'type' => 'input', 'default' => ''],
['key' => 'icon', 'label' => '自定义图标', 'type' => 'icon', 'default' => ''],
]],
]],
['key' => 'feature', 'title' => '商品功能配置', 'fields' => [
['key' => 'pay_type_option', 'label' => '商品功能配置', 'type' => 'tabbed', 'tabs' => [
['key' => 'download', 'title' => '付费下载', 'fields' => [
['key' => 'down_alone_page', 'label' => '独立下载页面', 'type' => 'switch', 'default' => false, 'help' => '开启后,付费资源的下载链接会跳转独立页面显示'],
['key' => 'down_user_log', 'label' => '保存用户下载记录(条)', 'type' => 'number', 'default' => 50, 'min' => 0, 'help' => '填0则不保存,注意记录量太大可能会影响网站性能'],
['key' => 'down_post_log', 'label' => '保存文章下载记录(条)', 'type' => 'number', 'default' => 50, 'min' => 0, 'help' => '填0则不保存,注意记录量太大可能会影响网站性能'],
['key' => 'down_remote_to_local_s', 'label' => '远程文件转本地文件下载', 'type' => 'switch', 'default' => true, 'help' => '当下载地址为外链文件时,先将远程文件下载到本地服务器,再提供给用户下载,可完全隐藏远程下载地址'],
['key' => 'down_remote_to_local_size', 'label' => '文件大小限制(Kb)', 'type' => 'number', 'default' => 2048, 'min' => 0],
['key' => 'down_remote_to_local_ext', 'label' => '文件格式限制', 'type' => 'input', 'default' => 'zip,rar,7z,text,png,jpg,jpeg,gif,mp3,mp4,avi,wmv,flv,swf,doc,docx,xls,xlsx,ppt,pptx,pdf', 'help' => '限制使用此功能的文件格式,多个用英文逗号隔开'],
['key' => 'down_verify_nonce', 'label' => '下载前检测用户环境', 'type' => 'switch', 'default' => true, 'help' => '防止机器批量扫描下载,有效防止跨站攻击'],
]],
]],
]],
['key' => 'presets', 'title' => '商品预置参数配置', 'fields' => [
['key' => 'presets_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '在下方配置的参数新建文章时候会自动填入,方便新建文章的设置。最终以文章配置为准'],
['key' => 'pay_modo_default', 'label' => '支付类型', 'type' => 'radio', 'default' => '0', 'options' => [
['label' => '普通商品(金钱购买)', 'value' => '0'],
['label' => '积分商品(积分购买,依赖于用户积分功能)', 'value' => 'points'],
]],
['key' => 'points_price_default', 'label' => '积分售价(积分)', 'type' => 'number', 'default' => 0, 'min' => 0],
['key' => 'vip_1_points_default', 'label' => '一级会员积分售价(积分)', 'type' => 'number', 'default' => 0, 'min' => 0],
['key' => 'vip_2_points_default', 'label' => '二级会员积分售价(积分)', 'type' => 'number', 'default' => 0, 'min' => 0],
['key' => 'pay_price_default', 'label' => '执行价', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '0.01', 'suffix' => '元'],
['key' => 'pay_original_price_default', 'label' => '原价', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '', 'suffix' => '元', 'help' => '显示在执行价格前面,并划掉'],
['key' => 'pay_promotion_tag_default', 'label' => '促销标签', 'type' => 'textarea', 'sanitize_type' => 'html', 'default' => '<i class="fa fa-fw fa-bolt"></i> 限时特惠', 'rows' => 1],
['key' => 'vip_1_price_default', 'label' => '一级会员价格', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '0', 'suffix' => '元', 'help' => '填0则为一级会员免费'],
['key' => 'vip_2_price_default', 'label' => '二级会员价格', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '0', 'suffix' => '元', 'help' => '填0则为二级会员免费'],
['key' => 'pay_rebate_discount', 'label' => '推广折扣', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '0', 'suffix' => '元', 'help' => '通过推广链接购买,额外优惠的金额;需开启推广返佣功能,且不能超过实际购买价'],
['key' => 'pay_cuont_default', 'label' => '销量浮动', 'type' => 'between_number', 'default' => ['min' => 0, 'max' => 0], 'help' => '为真实销量增加或减少的数量,系统会根据此处设置的区间获取随机值作为预置参数'],
['key' => 'pay_details_default', 'label' => '更多详情', 'type' => 'textarea', 'sanitize_type' => 'html', 'default' => '', 'rows' => 3, 'help' => '可插入任意的HTML代码'],
['key' => 'pay_extra_hide_default', 'label' => '额外隐藏内容', 'type' => 'textarea', 'sanitize_type' => 'html', 'default' => '', 'rows' => 3, 'help' => '可插入任意的HTML代码'],
['key' => 'pay_attributes_default', 'label' => '资源属性', 'type' => 'group', 'button_title' => '添加属性', 'default' => [], 'fields' => [
['key' => 'key', 'label' => '属性名称', 'type' => 'input', 'default' => ''],
['key' => 'value', 'label' => '属性内容', 'type' => 'input', 'default' => ''],
]],
['key' => 'pay_gallery_show_default', 'label' => '付费图片免费查看数量(张)', 'type' => 'number', 'default' => 1, 'min' => 0, 'help' => '设置付费图片可免费查看前几张图片的数量的默认值'],
]],
],
],
/* ------------------------------------------------------------------
* 余额充值
* ------------------------------------------------------------------ */
'recharge' => [
'key' => 'recharge',
'title' => '余额充值',
'version' => '1.2.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'notice', 'title' => '说明', 'fields' => [
['key' => 'recharge_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<p><b>用户余额功能:</b></p><ul style="margin:6px 0 0 18px;line-height:1.9"><li>开启后用户可充值到余额,余额可用于全站消费</li><li>在下方设置默认的分成比例,同时支持单独为每一个用户设置独立的分成比例</li><li>可以在用户管理中,为某一个用户手动赠送余额</li></ul>'],
]],
['key' => 'basic', 'title' => '用户余额', 'fields' => [
['key' => 'pay_balance_s', 'label' => '启用余额充值/支付功能', 'type' => 'switch', 'default' => true, 'help' => '开启后用户中心显示现金钱包,并可作为收银台支付方式'],
['key' => 'pay_balance_withdraw_s', 'label' => '余额提现', 'type' => 'switch', 'default' => false, 'help' => '允许将余额提现', 'dependsOn' => ['key' => 'pay_balance_s', 'value' => true]],
['key' => 'pay_balance_desc', 'label' => '充值说明', 'type' => 'textarea', 'default' => '', 'rows' => 3, 'dependsOn' => ['key' => 'pay_balance_s', 'value' => true], 'help' => '用户充值时显示的内容,建议为提醒事项、充值协议等,支持HTML代码'],
]],
['key' => 'transfer', 'title' => '余额转账', 'fields' => [
['key' => 'pay_balance_transfer_s', 'label' => '启用余额转账', 'type' => 'switch', 'default' => false, 'help' => '允许用户转账给其他用户'],
['key' => 'pay_balance_transfer_service_charge', 'label' => '转账手续费(%)', 'type' => 'number', 'default' => 0, 'min' => 0, 'max' => 50, 'dependsOn' => ['key' => 'pay_balance_transfer_s', 'value' => true]],
['key' => 'pay_balance_transfer_desc', 'label' => '转账说明', 'type' => 'textarea', 'default' => '', 'rows' => 2, 'dependsOn' => ['key' => 'pay_balance_transfer_s', 'value' => true], 'help' => '用户转账时候显示的内容,建议为提醒事项、转账协议等,支持HTML代码'],
]],
['key' => 'products', 'title' => '充值商品选项', 'fields' => [
['key' => 'pay_balance_product', 'label' => '充值金额选项', 'type' => 'group', 'button_title' => '添加充值金额选项', 'default' => [
['price' => 50, 'pay_price' => 0, 'tag' => '', 'tag_class' => ''],
['price' => 100, 'pay_price' => 98, 'tag' => '', 'tag_class' => ''],
['price' => 200, 'pay_price' => 188, 'tag' => '推荐', 'tag_class' => 'jb-cyan'],
], 'help' => '用户充值时候,可快速选择的充值金额,同时支持设置折扣', 'fields' => [
['key' => 'price', 'label' => '充值金额', 'type' => 'number', 'default' => 100, 'min' => 0, 'suffix' => '元'],
['key' => 'pay_price', 'label' => '销售金额', 'type' => 'number', 'default' => 0, 'min' => 0, 'suffix' => '元', 'help' => '选填,设置不同的销售金额实现充值折扣的功能,设置为0则与充值金额一致'],
['key' => 'tag', 'label' => '小标签', 'type' => 'input', 'default' => '', 'help' => '支持HTML,请注意控制长度'],
['key' => 'tag_class', 'label' => '标签颜色类', 'type' => 'input', 'default' => '', 'help' => '主题标签颜色类,如 jb-cyan / jb-pink'],
]],
['key' => 'pay_balance_product_custom_s', 'label' => '自定义充值金额', 'type' => 'switch', 'default' => true, 'help' => '允许用户手动输入充值金额'],
['key' => 'pay_balance_product_custom_limit', 'label' => '自定义充值金额上限', 'type' => 'number', 'default' => 9999, 'min' => 1, 'max' => 99999, 'dependsOn' => ['key' => 'pay_balance_product_custom_s', 'value' => true]],
]],
['key' => 'pass-charge', 'title' => '卡密兑换', 'fields' => [
['key' => 'pay_balance_pass_charge_s', 'label' => '启用卡密兑换余额功能', 'type' => 'switch', 'default' => false, 'help' => '开启后用户可在余额充值弹窗选择「卡密」渠道,使用卡密直接兑换余额'],
['key' => 'pay_balance_pass_charge_desc', 'label' => '卡密兑换余额说明', 'type' => 'textarea', 'default' => '', 'rows' => 2, 'dependsOn' => ['key' => 'pay_balance_pass_charge_s', 'value' => true], 'help' => '用户使用卡密兑换余额时显示的内容,建议为提醒事项、兑换协议等,支持HTML代码'],
['key' => 'pay_balance_pass_charge_only_password', 'label' => '余额卡密单密码模式', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'pay_balance_pass_charge_s', 'value' => true], 'help' => '余额卡密仅需输入密码,不需要卡号'],
['key' => 'points_pass_exchange_s', 'label' => '启用卡密兑换积分功能', 'type' => 'switch', 'default' => false, 'help' => '开启后用户可在购买积分弹窗选择「卡密」渠道,使用卡密直接兑换积分'],
['key' => 'points_pass_exchange_desc', 'label' => '卡密兑换积分说明', 'type' => 'textarea', 'default' => '', 'rows' => 2, 'dependsOn' => ['key' => 'points_pass_exchange_s', 'value' => true], 'help' => '用户使用卡密兑换积分时显示的内容,建议为提醒事项、兑换协议等,支持HTML代码'],
['key' => 'points_pass_exchange_only_password', 'label' => '积分卡密单密码模式', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'points_pass_exchange_s', 'value' => true], 'help' => '积分卡密仅需输入密码,不需要卡号'],
['key' => 'pay_vip_pass_charge_s', 'label' => '启用卡密兑换会员功能', 'type' => 'switch', 'default' => false, 'help' => '开启后用户可在会员购买/续费弹窗选择「卡密」渠道,使用会员卡密直接兑换会员'],
['key' => 'pay_vip_pass_charge_desc', 'label' => '卡密兑换会员说明', 'type' => 'textarea', 'default' => '', 'rows' => 2, 'dependsOn' => ['key' => 'pay_vip_pass_charge_s', 'value' => true], 'help' => '用户使用卡密兑换会员时显示的内容,建议为提醒事项、兑换协议等,支持HTML代码'],
['key' => 'pay_vip_pass_charge_only_password', 'label' => '会员卡密单密码模式', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'pay_vip_pass_charge_s', 'value' => true], 'help' => '会员卡密仅需输入密码,不需要卡号;默认关闭,会员卡需输入卡号和密码(与其他卡密兑换一致)'],
]],
['key' => 'points-exchange', 'title' => '余额兑换积分', 'fields' => [
['key' => 'pay_balance_points_exchange_s', 'label' => '启用余额兑换积分', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'pay_balance_s', 'value' => true]],
['key' => 'pay_balance_points_exchange_rate', 'label' => '兑换比例', 'type' => 'number', 'default' => 100, 'min' => 1, 'max' => 10000, 'help' => '1 余额 = N 积分', 'dependsOn' => ['key' => 'pay_balance_points_exchange_s', 'value' => true]],
['key' => 'pay_balance_points_exchange_min_points', 'label' => '单笔最低购买积分', 'type' => 'number', 'default' => 100, 'min' => 1, 'max' => 10000000, 'dependsOn' => ['key' => 'pay_balance_points_exchange_s', 'value' => true]],
['key' => 'pay_balance_points_exchange_daily_max_points', 'label' => '每日最高购买积分', 'type' => 'number', 'default' => 100000, 'min' => 1, 'max' => 10000000, 'dependsOn' => ['key' => 'pay_balance_points_exchange_s', 'value' => true]],
['key' => 'pay_balance_points_exchange_desc', 'label' => '兑换说明', 'type' => 'textarea', 'default' => '', 'dependsOn' => ['key' => 'pay_balance_points_exchange_s', 'value' => true]],
]],
],
],
/* ------------------------------------------------------------------
* VIP会员
* ------------------------------------------------------------------ */
'vip' => [
'key' => 'vip',
'title' => 'VIP会员',
'version' => '1.1.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'notice', 'title' => '说明', 'fields' => [
['key' => 'vip_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>开启付费会员功能之前,请先配置好收款接口,确保网站收款正常</li><li>会员功能的设置项目较多,请仔细核对,避免出现价格、时间的问题</li><li>配合设置名称、有效期等可搭配出不同类型的会员</li><li>管理员可在后台为用户单独开启会员</li></ul>'],
]],
['key' => 'basic', 'title' => '会员等级', 'fields' => [
['key' => 'nav_pay_vip', 'label' => '导航栏购买按钮', 'type' => 'switch', 'default' => true, 'help' => '在顶部导航栏显示开通会员按钮;请注意顶部导航的整体宽度。'],
['key' => 'nav_user_pay_vip', 'label' => '用户框购买按钮', 'type' => 'switch', 'default' => true, 'help' => '在导航栏用户框内显示开通会员按钮。'],
['key' => 'pay_user_vip_1_s', 'label' => '启用一级会员', 'type' => 'switch', 'default' => true],
['key' => 'pay_user_vip_1_name', 'label' => '一级会员显示名称', 'type' => 'input', 'default' => '一级会员', 'dependsOn' => ['key' => 'pay_user_vip_1_s', 'value' => true]],
['key' => 'pay_user_vip_1_desc', 'label' => '一级会员一句话简介', 'type' => 'input', 'default' => '尊享一级会员特权', 'dependsOn' => ['key' => 'pay_user_vip_1_s', 'value' => true]],
['key' => 'pay_user_vip_1_equity', 'label' => '一级会员权益 HTML', 'type' => 'textarea', 'default' => '<li>免费下载部分资源</li><li>会员专属身份标识</li><li>付费内容会员价</li>', 'dependsOn' => ['key' => 'pay_user_vip_1_s', 'value' => true]],
['key' => 'vip_1_img_icon', 'label' => '一级会员图标 URL', 'type' => 'input', 'default' => '', 'dependsOn' => ['key' => 'pay_user_vip_1_s', 'value' => true], 'help' => '留空使用内置 vip-1.svg 图标'],
['key' => 'pay_user_vip_2_s', 'label' => '启用二级会员', 'type' => 'switch', 'default' => true],
['key' => 'pay_user_vip_2_name', 'label' => '二级会员显示名称', 'type' => 'input', 'default' => '二级会员', 'dependsOn' => ['key' => 'pay_user_vip_2_s', 'value' => true]],
['key' => 'pay_user_vip_2_desc', 'label' => '二级会员一句话简介', 'type' => 'input', 'default' => '尊享二级会员特权', 'dependsOn' => ['key' => 'pay_user_vip_2_s', 'value' => true]],
['key' => 'pay_user_vip_2_equity', 'label' => '二级会员权益 HTML', 'type' => 'textarea', 'default' => '<li>更高免费下载额度</li><li>更高等级身份标识</li><li>更多付费内容会员价</li>', 'dependsOn' => ['key' => 'pay_user_vip_2_s', 'value' => true]],
['key' => 'vip_2_img_icon', 'label' => '二级会员图标 URL', 'type' => 'input', 'default' => '', 'dependsOn' => ['key' => 'pay_user_vip_2_s', 'value' => true], 'help' => '留空使用内置 vip-2.svg 图标'],
['key' => 'pay_user_vip_desc', 'label' => '弹窗顶部会员说明', 'type' => 'textarea', 'default' => ''],
['key' => 'pay_user_vip_more', 'label' => '弹窗底部补充说明 HTML', 'type' => 'textarea', 'default' => ''],
]],
['key' => 'benefit', 'title' => '会员权益', 'fields' => [
['key' => 'vip_benefit', 'label' => '会员权益', 'type' => 'tabbed', 'tabs' => [
['key' => 'ordinary', 'title' => '普通用户', 'fields' => [
['key' => 'pay_download_limit', 'label' => '付费资源:免费资源每日可下载(个)', 'type' => 'number', 'default' => 0, 'min' => 0, 'max' => 9999, 'help' => '普通用户每日最多可下载几个免费资源(为0则不限制)'],
['key' => 'pay_download_speed', 'label' => '付费资源:下载限速(KB/s)', 'type' => 'number', 'default' => 0, 'min' => 0, 'help' => '付费下载限制最大下载速度(为0则不限制);只对本地服务器文件有效'],
]],
['key' => 'vip1', 'title' => '一级会员', 'fields' => [
['key' => 'pay_download_limit_vip_1', 'label' => '付费资源:免费资源每日可下载(个)', 'type' => 'number', 'default' => 0, 'min' => 0, 'max' => 9999, 'dependsOn' => ['key' => 'pay_user_vip_1_s', 'value' => true], 'help' => '一级会员每日最多可下载几个免费资源(为0则不限制)'],
['key' => 'pay_download_speed_vip_1', 'label' => '付费资源:下载限速(KB/s)', 'type' => 'number', 'default' => 0, 'min' => 0, 'dependsOn' => ['key' => 'pay_user_vip_1_s', 'value' => true], 'help' => '付费下载限制最大下载速度(为0则不限制);只对本地服务器文件有效'],
]],
['key' => 'vip2', 'title' => '二级会员', 'fields' => [
['key' => 'pay_download_limit_vip_2', 'label' => '付费资源:免费资源每日可下载(个)', 'type' => 'number', 'default' => 0, 'min' => 0, 'max' => 9999, 'dependsOn' => ['key' => 'pay_user_vip_2_s', 'value' => true], 'help' => '二级会员每日最多可下载几个免费资源(为0则不限制)'],
['key' => 'pay_download_speed_vip_2', 'label' => '付费资源:下载限速(KB/s)', 'type' => 'number', 'default' => 0, 'min' => 0, 'dependsOn' => ['key' => 'pay_user_vip_2_s', 'value' => true], 'help' => '付费下载限制最大下载速度(为0则不限制);只对本地服务器文件有效'],
]],
]],
]],
['key' => 'opt', 'title' => '会员购买选项', 'fields' => [
['key' => 'vip_opt', 'label' => '会员购买选项', 'type' => 'tabbed', 'tabs' => [
['key' => 'vip1', 'title' => '一级会员', 'fields' => [
['key' => 'vip_1_product_s', 'label' => '允许购买一级会员', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'pay_user_vip_1_s', 'value' => true]],
['key' => 'payment_vip_1_products', 'label' => '一级会员套餐', 'type' => 'textarea', 'default' => "30|59|1|month|限时|月卡\n98|199|3|month|特惠|季卡\n365|599|12|month|超值|年卡\n999|1299|0|day|永久|永久卡", 'dependsOn' => ['key' => 'vip_1_product_s', 'value' => true], 'help' => '每行:执行价|原价|时长|单位(day|month)|标签|标题;时长 0=永久'],
]],
['key' => 'vip2', 'title' => '二级会员', 'fields' => [
['key' => 'vip_2_product_s', 'label' => '允许购买二级会员', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'pay_user_vip_2_s', 'value' => true]],
['key' => 'payment_vip_2_products', 'label' => '二级会员套餐', 'type' => 'textarea', 'default' => "58|99|1|month|限时|月卡\n168|299|3|month|特惠|季卡\n598|999|12|month|超值|年卡\n1299|1999|0|day|永久|永久卡", 'dependsOn' => ['key' => 'vip_2_product_s', 'value' => true], 'help' => '每行:执行价|原价|时长|单位(day|month)|标签|标题;时长 0=永久'],
]],
['key' => 'renew', 'title' => '会员续费', 'fields' => [
['key' => 'vip_renew', 'label' => '允许续费', 'type' => 'switch', 'default' => true, 'help' => '关闭后则不能续费,只能会员到期之后再购买。永久会员不需要续费'],
['key' => 'vip_renew_desc', 'label' => '续费说明', 'type' => 'textarea', 'default' => '', 'dependsOn' => ['key' => 'vip_renew', 'value' => true]],
['key' => 'vip_renew_price_type', 'label' => '续费价格类型', 'type' => 'radio', 'default' => 'discount', 'dependsOn' => ['key' => 'vip_renew', 'value' => true], 'options' => [
['label' => '相同价格', 'value' => 'same'],
['label' => '折扣价格', 'value' => 'discount'],
['label' => '优惠立减', 'value' => 'reduce'],
]],
['key' => 'vip_renew_discount', 'label' => '续费折扣(折,如 8=八折)', 'type' => 'number', 'default' => 8, 'min' => 1, 'max' => 100, 'dependsOn' => ['key' => 'vip_renew_price_type', 'value' => 'discount']],
['key' => 'vip_renew_reduce', 'label' => '续费减免金额', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '20.00', 'min' => 0, 'max' => 9999, 'dependsOn' => ['key' => 'vip_renew_price_type', 'value' => 'reduce']],
]],
['key' => 'upgrade', 'title' => '会员升级', 'fields' => [
['key' => 'vip_upgrade', 'label' => '允许升级', 'type' => 'switch', 'default' => true],
['key' => 'vip_upgrade_desc', 'label' => '升级说明', 'type' => 'textarea', 'default' => '', 'dependsOn' => ['key' => 'vip_upgrade', 'value' => true]],
['key' => 'vip_upgrade_product', 'label' => '升级产品', 'type' => 'textarea', 'default' => "unit|1|按剩余天数升级\njump|199|升级永久二级会员\npermanent|299|永久一级升永久二级", 'dependsOn' => ['key' => 'vip_upgrade', 'value' => true], 'help' => '每行一条。永久VIP1:permanent|价格|标题;剩余天:unit|每日单价|标题;跳转永久:jump|价格|标题'],
]],
]],
]],
['key' => 'points-exchange', 'title' => '积分兑换会员', 'fields' => [
['key' => 'pay_vip_points_exchange_s', 'label' => '启用积分兑换', 'type' => 'switch', 'default' => false],
['key' => 'payment_vip_points_packages', 'label' => '兑换套餐', 'type' => 'textarea', 'default' => "1|500|30|积分月卡\n1|5000|0|积分永久", 'dependsOn' => ['key' => 'pay_vip_points_exchange_s', 'value' => true], 'help' => '每行:等级|积分|天数|标题(天数 0=永久;普通用户可开通,已有会员可续费同等级或升级更高等级)'],
['key' => 'pay_vip_points_exchange_desc', 'label' => '兑换说明', 'type' => 'textarea', 'default' => '', 'dependsOn' => ['key' => 'pay_vip_points_exchange_s', 'value' => true]],
]],
],
],
/* ------------------------------------------------------------------
* 创作分成
* ------------------------------------------------------------------ */
'revenue' => [
'key' => 'revenue',
'title' => '创作分成',
'version' => '2.1.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'notice', 'title' => '说明', 'fields' => [
['key' => 'revenue_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>开启创作分成后,用户发布的付费内容则按设置的比例收入与用户分成</li><li>在下方设置默认的分成比例,同时支持单独为每一个用户设置独立的分成比例</li><li>用户分成比例是按照订单实收现金并扣除推广佣金后,再按设置的比例分成</li><li>禁用此功能后,所有收款将不会与作者分成</li></ul>'],
]],
['key' => 'basic', 'title' => '创作中心设置', 'fields' => [
['key' => 'pay_income_s', 'label' => '启用创作分成', 'type' => 'switch', 'default' => false],
['key' => 'payment_revenue_cycle_days', 'label' => '结算周期(天)', 'type' => 'number', 'default' => 30, 'min' => 1, 'max' => 365, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true]],
['key' => 'payment_revenue_note', 'label' => '结算备注文案', 'type' => 'textarea', 'sanitize_type' => 'html', 'default' => '<p>订单完成并经过结算周期后,作者分成会自动转入对应的钱包。</p>', 'dependsOn' => ['key' => 'pay_income_s', 'value' => true]],
]],
['key' => 'cash', 'title' => '现金收益分成', 'fields' => [
['key' => 'payment_revenue_cash_ratio_user', 'label' => '普通用户分成比例(%)', 'type' => 'number', 'default' => 60, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true], 'help' => '为0则不参与分成'],
['key' => 'payment_revenue_cash_ratio_vip_1', 'label' => '一级会员分成比例(%)', 'type' => 'number', 'default' => 70, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true]],
['key' => 'payment_revenue_cash_ratio_vip_2', 'label' => '二级会员分成比例(%)', 'type' => 'number', 'default' => 80, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true]],
]],
['key' => 'points', 'title' => '积分收益分成', 'fields' => [
['key' => 'payment_revenue_points_ratio_user', 'label' => '普通用户分成比例(%)', 'type' => 'number', 'default' => 0, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true], 'help' => '为0则不参与分成(用户采用积分支付的订单给与作者的分成比例)'],
['key' => 'payment_revenue_points_ratio_vip_1', 'label' => '一级会员分成比例(%)', 'type' => 'number', 'default' => 0, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true]],
['key' => 'payment_revenue_points_ratio_vip_2', 'label' => '二级会员分成比例(%)', 'type' => 'number', 'default' => 0, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true]],
]],
['key' => 'detail', 'title' => '分成说明', 'fields' => [
['key' => 'pay_income_desc_details', 'label' => '创作分成说明', 'type' => 'textarea', 'sanitize_type' => 'html', 'default' => '<p>在本站发布付费内容,获得的收益将参与收入分成</p><p>普通用户分成比例为:60%</p><p>一级会员分成比例为:70%</p><p>二级会员分成比例为:80%</p><p>分成比例的计算方式为:(实收现金-推广佣金)x 分成比例</p><p>申请提现后,需后台人工处理,一般2-3小时,请耐心等待</p>', 'rows' => 8, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true], 'help' => '显示在用户中心的说明,建议为发布协议或者其他说明(必填项,内容不易太少),支持HTML代码'],
['key' => 'pay_income_desc_page_s', 'label' => '创作分成详情页面', 'type' => 'switch', 'default' => false, 'dependsOn' => ['key' => 'pay_income_s', 'value' => true], 'help' => '您可以新建一个页面写入更加详细的创作分成说明及协议内容,再开启此项并选择对应的页面'],
['key' => 'pay_income_desc_page', 'label' => '选择页面', 'type' => 'page_select', 'default' => 0, 'dependsOn' => ['key' => 'pay_income_desc_page_s', 'value' => true]],
]],
],
],
/* ------------------------------------------------------------------
* 推广返佣
* ------------------------------------------------------------------ */
'affiliate' => [
'key' => 'affiliate',
'title' => '推广返佣',
'version' => '1.1.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'notice', 'title' => '说明', 'fields' => [
['key' => 'affiliate_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>识别模式「绑定注册」:用户只要是通过任意推广链接注册的,今后此用户消费均会给推荐人返佣</li><li>识别模式「仅推广链接」:只有通过推广链接购买的才会给推荐人返佣,不会考虑是否是推荐注册的</li><li>开启的订单类型如果一个都不勾选,则代表该用户类型不参与此功能</li><li>您可以根据网站的VIP设置相互配合设置相应的规则</li><li>下面的设置为全局设置,还可以单独为每一个用户设置规则和比例</li></ul>'],
]],
['key' => 'switch', 'title' => '推广返佣', 'fields' => [
['key' => 'pay_rebate_s', 'label' => '启用推广返佣', 'type' => 'switch', 'default' => false],
]],
['key' => 'mode', 'title' => '推广识别模式', 'fields' => [
['key' => 'pay_rebate_judgment', 'label' => '推广识别模式', 'type' => 'radio', 'default' => 'all', 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'options' => [
['label' => '绑定注册', 'value' => 'all'],
['label' => '仅推广链接', 'value' => 'link'],
]],
['key' => 'pay_rebate_show_users', 'label' => '用户中心显示我推荐的用户', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'pay_rebate_judgment', 'value' => 'all']],
['key' => 'pay_rebate_self_s', 'label' => '自己推广自己', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'help' => '允许使用自己的推广链接购买商品并获得佣金'],
]],
['key' => 'rules', 'title' => '返佣规则', 'fields' => [
['key' => 'rebate_rule', 'label' => '为不同用户类型设置返佣规则', 'type' => 'tabbed', 'tabs' => [
['key' => 'ordinary', 'title' => '普通用户', 'fields' => [
['key' => 'pay_rebate_user_s', 'label' => '返佣订单', 'type' => 'checkbox', 'default' => [], 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'options' => [
['label' => '全部订单', 'value' => 'all'],
['label' => '购买会员', 'value' => 'membership'],
['label' => '付费内容', 'value' => 'content'],
['label' => '购买积分', 'value' => 'credits'],
], 'help' => '普通用户返利的订单类型,全部关闭,则代表普通用户不参与推广返佣'],
['key' => 'pay_rebate_ratio', 'label' => '普通用户返佣比例(%)', 'type' => 'number', 'default' => 5, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true]],
]],
['key' => 'vip1', 'title' => '一级会员', 'fields' => [
['key' => 'pay_rebate_user_s_1', 'label' => '返佣订单', 'type' => 'checkbox', 'default' => ['all'], 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'options' => [
['label' => '全部订单', 'value' => 'all'],
['label' => '购买会员', 'value' => 'membership'],
['label' => '付费内容', 'value' => 'content'],
['label' => '购买积分', 'value' => 'credits'],
], 'help' => '一级会员返利的订单类型,全部关闭,则代表一级会员用户不参与推广返佣'],
['key' => 'pay_rebate_ratio_vip_1', 'label' => '一级会员返佣比例(%)', 'type' => 'number', 'default' => 10, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true]],
]],
['key' => 'vip2', 'title' => '二级会员', 'fields' => [
['key' => 'pay_rebate_user_s_2', 'label' => '返佣订单', 'type' => 'checkbox', 'default' => ['all'], 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'options' => [
['label' => '全部订单', 'value' => 'all'],
['label' => '购买会员', 'value' => 'membership'],
['label' => '付费内容', 'value' => 'content'],
['label' => '购买积分', 'value' => 'credits'],
], 'help' => '二级会员返利的订单类型,全部关闭,则代表二级会员用户不参与推广返佣'],
['key' => 'pay_rebate_ratio_vip_2', 'label' => '二级会员返佣比例(%)', 'type' => 'number', 'default' => 20, 'min' => 0, 'max' => 100, 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true]],
]],
]],
['key' => 'affiliate_settlement_days', 'label' => '结算观察期(天)', 'type' => 'number', 'default' => 7, 'min' => 0, 'max' => 90, 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'help' => '订单完成后经过观察期,佣金才会结算到可提现余额'],
]],
['key' => 'text', 'title' => '返佣文案', 'fields' => [
['key' => 'pay_rebate_text_desc', 'label' => '返佣文案(一句话简介)', 'type' => 'input', 'default' => '加入分享计划,获得高额奖励', 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true]],
['key' => 'pay_rebate_text_details_title', 'label' => '返佣详情标题', 'type' => 'input', 'default' => '返佣详解', 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true]],
['key' => 'pay_rebate_text_details', 'label' => '返佣详情内容', 'type' => 'textarea', 'sanitize_type' => 'html', 'default' => '<p>通过您的推广链接打开本站后,在本站购买商品即可获得佣金</p><p>通过您的推广链接注册后的用户今后购买的商品均可获得佣金</p><p>申请提现后,需后台人工处理,一般2-3小时,请耐心等待</p>', 'rows' => 6, 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'help' => '返佣详情介绍,建议为规则介绍或者其他说明,支持HTML代码'],
]],
['key' => 'poster', 'title' => '推广海报', 'fields' => [
['key' => 'pay_rebate_poster_s', 'label' => '推广海报', 'type' => 'switch', 'default' => true, 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'help' => '在用户中心显示包含二维码的推广海报'],
['key' => 'pay_rebate_poster_img', 'label' => '推广海报顶部图片', 'type' => 'media', 'default' => '', 'dependsOn' => ['key' => 'pay_rebate_poster_s', 'value' => true]],
['key' => 'pay_rebate_poster_title', 'label' => '推广海报标题(20-30个字)', 'type' => 'input', 'default' => '发现一个精品网站,快来看一看', 'dependsOn' => ['key' => 'pay_rebate_poster_s', 'value' => true]],
['key' => 'pay_rebate_poster_desc', 'label' => '推广海报简介(40-60个字)', 'type' => 'input', 'default' => '网站有超多精品资源和优惠福利,扫码进入网站还可享受诸多优惠哦', 'dependsOn' => ['key' => 'pay_rebate_poster_s', 'value' => true]],
]],
['key' => 'discount', 'title' => '推广让利标签', 'fields' => [
['key' => 'discount_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<p><b>推广让利标签配置详解:</b></p><ul style="margin:6px 0 0 18px;line-height:1.9"><li>可使用的变量:折扣 <code>%discount%</code>、推荐人姓名 <code>%referrer_name%</code></li><li>使用变量示例:<code>%referrer_name%推荐购买 下单再减%discount%元</code></li></ul>', 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true]],
['key' => 'pay_rebate_text_discount', 'label' => '推广让利标签', 'type' => 'input', 'default' => '推荐购买 下单再减%discount%', 'dependsOn' => ['key' => 'pay_rebate_s', 'value' => true], 'help' => '显示在购买模块,推广让利的标签文案'],
]],
],
],
/* ------------------------------------------------------------------
* 收款接口(支付宝 / 微信 / PayPal / Stripe / 易支付)
* ------------------------------------------------------------------ */
'gateway' => [
'key' => 'gateway',
'title' => '收款接口',
'version' => '2.0.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'notice', 'title' => '说明', 'fields' => [
['key' => 'gateway_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>以下收款接口,主题仅提供API接入服务,收款平台的可靠性请自行斟酌!</li><li>涉及到资金及信息安全,有相关执照的商家推荐使用官方接口</li><li>微信 / 支付宝接口可在「官方」与「易支付」之间选择;PayPal 与 Stripe 独立开关</li><li>异步回调由各网关验签,无需额外口令;回调地址固定为 /wp-json/aksrt/v1/payment/{gateway}/{notify|return}</li></ul>'],
]],
['key' => 'channels', 'title' => '收款接口选择', 'fields' => [
['key' => 'pay_wechat_sdk_options', 'label' => '微信收款接口', 'type' => 'select', 'default' => 'null', 'options' => [
['label' => '微信官方', 'value' => 'official_wechat'],
['label' => '易支付-微信', 'value' => 'epay'],
['label' => '关闭微信收款', 'value' => 'null'],
]],
['key' => 'pay_alipay_sdk_options', 'label' => '支付宝收款接口', 'type' => 'select', 'default' => 'null', 'options' => [
['label' => '支付宝企业支付/当面付', 'value' => 'official_alipay'],
['label' => '易支付-支付宝', 'value' => 'epay'],
['label' => '关闭支付宝收款', 'value' => 'null'],
]],
['key' => 'pay_paypal_sdk_s', 'label' => 'PayPal支付(贝宝)', 'type' => 'switch', 'default' => false, 'help' => '启用后请在下方配置参数'],
['key' => 'pay_stripe_sdk_s', 'label' => 'Stripe支付', 'type' => 'switch', 'default' => false, 'help' => '启用后请在下方配置参数'],
]],
['key' => 'currency', 'title' => '货币与结算', 'fields' => [
['key' => 'pay_currency_mark', 'label' => '本地货币符号', 'type' => 'input', 'default' => '¥', 'help' => '显示在金额前面(例如 $ 或 ¥)'],
['key' => 'pay_currency_unit', 'label' => '本地货币单位名称', 'type' => 'input', 'default' => '元', 'help' => '金额后缀,例如:人民币填「元」、美元填「dollars」'],
['key' => 'pay_wechat_settle', 'label' => '微信结算配置', 'type' => 'fieldset', 'default' => ['settle_rate' => '1', 'settle_mark' => '¥', 'settle_unit' => '元'], 'fields' => [
['key' => 'settle_rate', 'label' => '结算汇率', 'type' => 'input', 'default' => '1'],
['key' => 'settle_mark', 'label' => '结算货币符号', 'type' => 'input', 'default' => '¥'],
['key' => 'settle_unit', 'label' => '结算货币单位', 'type' => 'input', 'default' => '元'],
]],
['key' => 'pay_alipay_settle', 'label' => '支付宝结算配置', 'type' => 'fieldset', 'default' => ['settle_rate' => '1', 'settle_mark' => '¥', 'settle_unit' => '元'], 'fields' => [
['key' => 'settle_rate', 'label' => '结算汇率', 'type' => 'input', 'default' => '1'],
['key' => 'settle_mark', 'label' => '结算货币符号', 'type' => 'input', 'default' => '¥'],
['key' => 'settle_unit', 'label' => '结算货币单位', 'type' => 'input', 'default' => '元', 'help' => '如果接入的收款方式与本地的货币类型不同,则在此配置结算汇率及单位'],
]],
['key' => 'pay_sdk_custom_title_s', 'label' => '自定义收款标题', 'type' => 'switch', 'default' => false, 'help' => '默认为付款类型加网站名,如需自定义请开启'],
['key' => 'pay_sdk_custom_title', 'label' => '自定义收款标题', 'type' => 'input', 'default' => '', 'dependsOn' => ['key' => 'pay_sdk_custom_title_s', 'value' => true], 'help' => '可使用变量:订单类型 %order_type%,例如:%order_type%-AKSRT;注意控制总长度,太长会导致部分接口报错'],
]],
['key' => 'order', 'title' => '订单与编号', 'fields' => [
['key' => 'payment_order_prefix', 'label' => '订单前缀', 'type' => 'input', 'default' => 'AKSRT', 'help' => '订单号生成前缀'],
['key' => 'payment_flow_prefix', 'label' => '流水号前缀', 'type' => 'input', 'sanitize_type' => 'business_prefix', 'default' => 'AK', 'maxlength' => 12, 'help' => '仅允许字母、数字、下划线和短横线,最多 12 位。'],
['key' => 'payment_withdrawal_prefix', 'label' => '提现单号前缀', 'type' => 'input', 'sanitize_type' => 'business_prefix', 'default' => 'TX', 'maxlength' => 12, 'help' => '仅允许字母、数字、下划线和短横线,最多 12 位。'],
['key' => 'payment_order_expiry', 'label' => '订单支付时效(分钟)', 'type' => 'number', 'default' => 30, 'min' => 5, 'max' => 1440, 'help' => '用户下单后,最大支付时间,超过后订单将自动关闭(不能低于5分钟)'],
['key' => 'pay_wait_float_s', 'label' => '浮窗显示待支付订单', 'type' => 'switch', 'default' => true, 'help' => '将用户待支付订单一直显示在右上角,提醒用户付款'],
]],
['key' => 'sdk-order', 'title' => '收款接口显示顺序', 'fields' => [
['key' => 'pay_sdk_order', 'label' => '显示顺序', 'type' => 'sortable', 'default' => [], 'items' => [
['key' => 'wechat', 'title' => '微信', 'fields' => []],
['key' => 'alipay', 'title' => '支付宝', 'fields' => []],
['key' => 'paypal', 'title' => 'PayPal(贝宝)', 'fields' => []],
['key' => 'stripe', 'title' => 'Stripe', 'fields' => []],
['key' => 'balance', 'title' => '余额', 'fields' => []],
['key' => 'card_pass', 'title' => '卡密', 'fields' => []],
], 'help' => '收银台支付方式显示顺序;仅显示已开启的接口'],
]],
['key' => 'alipay', 'title' => '支付宝官方', 'collapsible' => true, 'expandWhen' => 'pay_alipay_sdk_options', 'dependsOn' => ['key' => 'pay_alipay_sdk_options', 'value' => 'official_alipay'], 'fields' => [
['key' => 'alipay_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>支付宝公钥为必填项目(公钥错误可以成功付款,但会回调失败)</li><li>回调地址固定为 /wp-json/aksrt/v1/payment/alipay/{notify|return}</li><li>同时填写了企业支付以及当面付参数,则优先使用当面付</li></ul>'],
['key' => 'alipay_appid', 'label' => '当面付:APPID', 'type' => 'input', 'default' => ''],
['key' => 'alipay_privatekey', 'label' => '当面付:应用私钥', 'type' => 'textarea', 'sanitize_type' => 'code', 'default' => '', 'rows' => 4],
['key' => 'alipay_payment_type', 'label' => '支付方式', 'type' => 'select', 'default' => 'page', 'options' => [
['label' => '电脑网站支付(web)', 'value' => 'page'],
['label' => '手机网站支付(wap)', 'value' => 'wap'],
]],
['key' => 'alipay_app_public_cert_path', 'label' => '应用公钥证书路径', 'type' => 'input', 'default' => '', 'help' => 'appCertPublicKey.crt 绝对路径。'],
['key' => 'alipay_public_cert_path', 'label' => '支付宝公钥证书路径', 'type' => 'input', 'default' => '', 'help' => 'alipayCertPublicKey_RSA2.crt 绝对路径。'],
['key' => 'alipay_root_cert_path', 'label' => '支付宝根证书路径', 'type' => 'input', 'default' => '', 'help' => 'alipayRootCert.crt 绝对路径。'],
]],
['key' => 'wechat', 'title' => '微信官方', 'collapsible' => true, 'expandWhen' => 'pay_wechat_sdk_options', 'dependsOn' => ['key' => 'pay_wechat_sdk_options', 'value' => 'official_wechat'], 'fields' => [
['key' => 'wechat_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>微信企业支付:官方接口,商家可申请,有年费,申请较为复杂</li><li>回调地址固定为 /wp-json/aksrt/v1/payment/wechatpay/{notify|return},请配置 Native 支付回调链接</li></ul>'],
['key' => 'wechat_merchantid', 'label' => '商户号 PartnerID', 'type' => 'input', 'default' => ''],
['key' => 'wechat_appid', 'label' => '授权绑定的AppID', 'type' => 'input', 'default' => ''],
['key' => 'wechat_payment_type', 'label' => '支付方式', 'type' => 'select', 'default' => 'native', 'options' => [
['label' => '扫码支付(Native)', 'value' => 'native'],
['label' => 'H5支付', 'value' => 'h5'],
]],
['key' => 'wechat_api_v3_key', 'label' => '支付APIv3密钥', 'type' => 'input', 'default' => '', 'help' => '微信商户平台设置的 APIv3 密钥(32位)。'],
['key' => 'wechat_private_key_path', 'label' => '商户私钥路径', 'type' => 'input', 'default' => '', 'help' => 'apiclient_key.pem 绝对路径,用于签名。'],
['key' => 'wechat_cert_path', 'label' => '商户API证书路径', 'type' => 'input', 'default' => '', 'help' => 'apiclient_cert.pem 绝对路径。'],
]],
['key' => 'paypal', 'title' => 'PayPal(贝宝)', 'collapsible' => true, 'expandWhen' => 'pay_paypal_sdk_s', 'dependsOn' => ['key' => 'pay_paypal_sdk_s', 'value' => true], 'fields' => [
['key' => 'paypal_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>PayPal(贝宝)是常见的海外支付接口</li><li>如果您的收款账户为中国大陆地区,则账户类型必须是企业,且只能收取非中国大陆区的PayPal付款</li><li>REST 应用申请:https://developer.paypal.com/dashboard/applications</li></ul>'],
['key' => 'paypal_client_id', 'label' => 'Client ID', 'type' => 'input', 'default' => ''],
['key' => 'paypal_client_secret', 'label' => 'Client Secret', 'type' => 'input', 'default' => ''],
['key' => 'paypal_currency', 'label' => '结算货币', 'type' => 'select', 'case_insensitive' => true, 'default' => 'USD', 'options' => self::currency_options()],
['key' => 'paypal_rates', 'label' => '货币汇率', 'type' => 'input', 'default' => '0.14', 'help' => '根据你选择的货币类型与您定价货币的汇率进行填写,例如1元人民币兑换0.137美元(USD),则此处填0.137'],
['key' => 'paypal_sandbox', 'label' => '沙盒调试模式', 'type' => 'switch', 'default' => false, 'help' => '沙箱模式(Sandbox)是PayPal支付的测试环境。开启后请使用沙箱环境生成的收款账户和付款账户进行测试。'],
]],
['key' => 'stripe', 'title' => 'Stripe', 'collapsible' => true, 'expandWhen' => 'pay_stripe_sdk_s', 'dependsOn' => ['key' => 'pay_stripe_sdk_s', 'value' => true], 'fields' => [
['key' => 'stripe_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>Stripe 是常见的海外信用卡收款接口</li><li>API 密钥申请:https://dashboard.stripe.com/apikeys</li><li>Webhook 事件:checkout.session.completed</li><li>测试环境请使用 sk_test_ 开头的 Secret Key</li></ul>'],
['key' => 'stripe_secret_key', 'label' => '私钥Secret Key', 'type' => 'input', 'default' => '', 'help' => 'Stripe Dashboard → Developers → API keys → Secret key'],
['key' => 'stripe_publishable_key', 'label' => 'Publishable Key', 'type' => 'input', 'default' => ''],
['key' => 'stripe_webhook_secret', 'label' => '签名密钥Webhook Secret', 'type' => 'input', 'default' => '', 'help' => 'Developers → Webhooks → 端点 → Signing secret(whsec_ 开头)'],
['key' => 'stripe_currency', 'label' => '结算货币', 'type' => 'select', 'case_insensitive' => true, 'default' => 'USD', 'options' => self::currency_options()],
['key' => 'stripe_rates', 'label' => '货币汇率', 'type' => 'input', 'default' => '0.14', 'help' => '根据你选择的货币类型与您定价货币的汇率进行填写,例如1元人民币兑换0.137美元(USD),则此处填0.137'],
['key' => 'stripe_test_mode', 'label' => '测试模式', 'type' => 'switch', 'default' => false, 'help' => '如果使用的测试开放模式,则请使用 sk_test_ 测试密钥与 Stripe 测试卡进行配置'],
]],
['key' => 'epay', 'title' => '易支付', 'collapsible' => true, 'expandWhen' => 'pay_wechat_sdk_options', 'dependsOn' => ['any' => [
['key' => 'pay_wechat_sdk_options', 'value' => 'epay'],
['key' => 'pay_alipay_sdk_options', 'value' => 'epay'],
]], 'fields' => [
['key' => 'epay_notice', 'label' => '', 'type' => 'content', 'ui_only' => true, 'content' => '<ul style="margin:0 0 0 18px;line-height:1.9"><li>易支付是一个常见的支付系统源码,任何人都可以下载并搭建</li><li>同时市面上多数的小规模支付平台都是由易支付修改而来,例如部分码支付、源支付等等</li><li>由于此接口服务商众多,主题只负责技术接入,平台可靠性请自行斟酌</li></ul>'],
['key' => 'epay_apiurl', 'label' => 'API接口网址', 'type' => 'input', 'default' => '', 'help' => '请填写接口地址,例如:https://pay.xxxxxxx.cn/'],
['key' => 'epay_pid', 'label' => '商户号', 'type' => 'input', 'default' => ''],
['key' => 'epay_key', 'label' => '商户秘钥', 'type' => 'input', 'default' => '', 'help' => 'MD5 通信密钥。'],
['key' => 'epay_device', 'label' => '下单终端', 'type' => 'select', 'default' => 'auto', 'options' => [
['label' => '自动(按 UA)', 'value' => 'auto'],
['label' => '电脑端 submit', 'value' => 'pc'],
['label' => '移动端 mapi', 'value' => 'mobile'],
]],
]],
],
],
/* ------------------------------------------------------------------
* 提现策略
* ------------------------------------------------------------------ */
'withdrawal' => [
'key' => 'withdrawal',
'title' => '提现策略',
'version' => '1.1.0',
'option_key' => 'aksrt_settings',
'groups' => [
['key' => 'basic', 'title' => '提现门槛', 'fields' => [
['key' => 'affiliate_min_withdrawal', 'label' => '提现最低金额限制', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '50.00', 'help' => '当用户可提现总金额(推广佣金、余额、创作分成)高于多少时候,才能发起提现'],
['key' => 'affiliate_withdrawal_fee', 'label' => '提现手续费(%)', 'type' => 'number', 'default' => 5, 'min' => 0, 'max' => 100],
]],
['key' => 'limits', 'title' => '每日限制', 'fields' => [
['key' => 'affiliate_daily_withdrawal_count', 'label' => '每日可提现次数', 'type' => 'number', 'default' => 3, 'min' => 0, 'max' => 99999],
['key' => 'affiliate_daily_withdrawal_limit', 'label' => '每日提现上限', 'type' => 'input', 'sanitize_type' => 'money_decimal', 'default' => '500.00'],
['key' => 'affiliate_withdrawal_reset_time', 'label' => '重置时间', 'type' => 'input', 'default' => '00:00', 'help' => '按站点 WordPress 时区重置,格式 HH:MM。'],
]],
['key' => 'channels', 'title' => '收款渠道', 'fields' => [
['key' => 'affiliate_payout_channels', 'label' => '可用收款渠道', 'type' => 'checkbox', 'options' => [['value' => 'alipay', 'label' => '支付宝收款码'], ['value' => 'wechat', 'label' => '微信收款码']], 'default' => ['alipay', 'wechat']],
]],
['key' => 'agreement', 'title' => '提现协议', 'fields' => [
['key' => 'pay_rebate_withdraw_text_details', 'label' => '提现协议', 'type' => 'textarea', 'sanitize_type' => 'html', 'default' => '<div>可提现金额达到50元后即可发起提现</div><div>申请提现需后台人工处理,一般2-3小时,请耐心等待</div><div>如有其它疑问,请与客服联系</div>', 'rows' => 4, 'help' => '用户申请提现时展示的内容,建议为提现须知等,支持HTML代码'],
]],
],
],
],
];
}
/**
* PayPal / Stripe 结算货币选项(参考主题同款 26 种)。
*
* @return array<int,array{label:string,value:string}>
*/
private static function currency_options(): array {
$currencies = [
'AUD' => '澳元 (AUD)',
'BRL' => '巴西雷亚尔 (BRL)',
'CAD' => '加拿大元 (CAD)',
'CNY' => '人民币 (CNY)',
'CZK' => '克朗 (CZK)',
'DKK' => '丹麦克朗 (DKK)',
'EUR' => '欧元 (EUR)',
'HKD' => '港币 (HKD)',
'HUF' => '匈牙利福林 (HUF)',
'INR' => '印度卢比 (INR)',
'ILS' => '以色列新谢克尔 (ILS)',
'JPY' => '日元 (JPY)',
'MYR' => '马来西亚林吉特 (MYR)',
'MXN' => '墨西哥比索 (MXN)',
'TWD' => '新台币 (TWD)',
'NZD' => '新西兰元 (NZD)',
'NOK' => '挪威克朗 (NOK)',
'PHP' => '菲律宾比索 (PHP)',
'PLN' => '波兰兹罗提 (PLN)',
'GBP' => '英镑 (GBP)',
'RUB' => '俄罗斯卢布 (RUB)',
'SGD' => '新加坡元 (SGD)',
'SEK' => '瑞典克朗 (SEK)',
'CHF' => '瑞士法郎 (CHF)',
'THB' => '泰铢 (THB)',
'USD' => '美元 (USD)',
];
$options = [];
foreach ($currencies as $code => $label) {
$options[] = ['label' => $label, 'value' => $code];
}
return $options;
}
}