export const gatewaySchema = { key: 'payment.gateway', title: '收款接口', icon: 'fas fa-credit-card', description: '配置支付网关凭据、回调校验口令与运行模式。开启渠道后展开填写配置,可随时收起。', defaults: { payment_gateway_mode: 'manual_review', payment_gateway_test_enabled: true, payment_gateway_manual_review: true, payment_gateway_callback_secret: '', payment_gateway_help: '未接真实支付网关时,建议使用测试网关或人工确认模式完成联调。', payment_wechat_enabled: false, payment_alipay_enabled: false, payment_paypal_enabled: false, payment_balance_enabled: true, payment_card_pass_enabled: false, payment_xunhupay_enabled: false, payment_xhpay_enabled: false, payment_payjs_enabled: false, payment_epay_enabled: false, payment_vmq_enabled: false, payment_codepay_enabled: false, payment_stripe_enabled: false, wechat_merchantid: '', wechat_appid: '', wechat_payment_type: 'native', wechat_api_v3_key: '', wechat_private_key_path: '', wechat_cert_path: '', alipay_appid: '', alipay_privatekey: '', alipay_payment_type: 'page', alipay_app_public_cert_path: '', alipay_public_cert_path: '', alipay_root_cert_path: '', paypal_client_id: '', paypal_client_secret: '', paypal_currency: 'USD', paypal_sandbox: true, xunhupay_appid: '', xunhupay_appsecret: '', xhpay_mchid: '', xhpay_alipay_v2: '', xhpay_wx_h5: '', payjs_mchid: '', payjs_key: '', epay_apiurl: '', epay_pid: '', epay_key: '', stripe_secret_key: '', stripe_publishable_key: '', stripe_webhook_secret: '', stripe_currency: 'usd', stripe_test_mode: true, }, groups: [ { key: 'adapter', title: '网关适配器', icon: 'fas fa-plug', fields: [ { key: 'payment_gateway_mode', label: '运行模式', type: 'radio', default: 'manual_review', options: [{ label: '人工确认', value: 'manual_review' }, { label: '测试网关', value: 'test_gateway' }, { label: '适配器就绪', value: 'adapter_ready' }] }, { key: 'payment_gateway_test_enabled', label: '启用测试网关', type: 'switch', default: true }, { key: 'payment_gateway_manual_review', label: '保留人工复核', type: 'switch', default: true }, { key: 'payment_gateway_callback_secret', label: '回调校验口令', type: 'input', default: '', help: '真实网关接入时可直接复用该口令字段。' }, { key: 'payment_gateway_help', label: '运维说明', type: 'textarea', default: '未接真实支付网关时,建议使用测试网关或人工确认模式完成联调。' }, ], }, { key: 'gateways', title: '支付渠道开关', icon: 'fas fa-toggle-on', description: '先开启渠道,下方对应配置卡片会展开;填写凭据后网关状态变为可用。无凭据的内置渠道(余额/卡密)仅开关即可。', fields: [ { key: 'payment_wechat_enabled', label: '微信支付', type: 'switch', default: false }, { key: 'payment_alipay_enabled', label: '支付宝', type: 'switch', default: false }, { key: 'payment_paypal_enabled', label: 'PayPal', type: 'switch', default: false }, { key: 'payment_stripe_enabled', label: 'Stripe', type: 'switch', default: false }, { key: 'payment_xunhupay_enabled', label: '虎皮椒', type: 'switch', default: false }, { key: 'payment_xhpay_enabled', label: '小火付', type: 'switch', default: false }, { key: 'payment_payjs_enabled', label: 'PayJS', type: 'switch', default: false }, { key: 'payment_epay_enabled', label: '易支付', type: 'switch', default: false }, { key: 'payment_vmq_enabled', label: 'V免签', type: 'switch', default: false, help: '当前仅开关占位,凭据接入后补齐。' }, { key: 'payment_codepay_enabled', label: 'Codepay', type: 'switch', default: false, help: '当前仅开关占位,凭据接入后补齐。' }, { key: 'payment_balance_enabled', label: '余额支付', type: 'switch', default: true, help: '需同时在「余额充值」启用余额功能。关闭后用户中心仍可有钱包,但结账不可用余额支付。' }, { key: 'payment_card_pass_enabled', label: '卡密充值', type: 'switch', default: false, help: '卡密规则在「卡密设置」;此处仅控制是否作为收款渠道展示。' }, ], }, { key: 'wechat', title: '微信支付配置', icon: 'fab fa-weixin', description: '开启「微信支付」后填写商户号与密钥。', collapsible: true, expandWhen: 'payment_wechat_enabled', dependsOn: { key: 'payment_wechat_enabled', value: true }, fields: [ { key: 'wechat_merchantid', label: '商户号', 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: 'alipay', title: '支付宝配置', icon: 'fab fa-alipay', description: '开启「支付宝」后填写应用与回调地址。', collapsible: true, expandWhen: 'payment_alipay_enabled', dependsOn: { key: 'payment_alipay_enabled', value: true }, fields: [ { key: 'alipay_appid', label: 'AppID', type: 'input', default: '' }, { key: 'alipay_privatekey', label: '应用私钥', type: 'textarea', rows: 3, default: '' }, { 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: 'alipay_notify_help', label: '回调地址说明', type: 'notice', alertType: 'info', alertContent: '异步通知 / 同步返回已固定为 /wp-json/aksrt/v1/payment/alipay/{notify|return},无需在此填写。' }, ], }, { key: 'paypal', title: 'PayPal 配置', icon: 'fab fa-paypal', description: '开启「PayPal」后填写 Client 凭据。', collapsible: true, expandWhen: 'payment_paypal_enabled', dependsOn: { key: 'payment_paypal_enabled', value: true }, fields: [ { 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: 'input', default: 'USD' }, { key: 'paypal_sandbox', label: '沙箱模式', type: 'switch', default: true }, ], }, { key: 'stripe', title: 'Stripe 配置', icon: 'fab fa-stripe', description: '开启「Stripe」后填写 API Key 与 Webhook。', collapsible: true, expandWhen: 'payment_stripe_enabled', dependsOn: { key: 'payment_stripe_enabled', value: true }, fields: [ { key: 'stripe_secret_key', label: 'Secret Key', type: 'input', default: '' }, { key: 'stripe_publishable_key', label: 'Publishable Key', type: 'input', default: '' }, { key: 'stripe_webhook_secret', label: 'Webhook Secret', type: 'input', default: '', help: 'Stripe Dashboard 配置 Webhook 后获得,用于验签。' }, { key: 'stripe_currency', label: '货币', type: 'input', default: 'usd' }, { key: 'stripe_test_mode', label: '测试模式', type: 'switch', default: true }, ], }, { key: 'xunhupay', title: '虎皮椒配置', icon: 'fas fa-pepper-hot', description: '开启「虎皮椒」后填写 App 凭据。', collapsible: true, expandWhen: 'payment_xunhupay_enabled', dependsOn: { key: 'payment_xunhupay_enabled', value: true }, fields: [ { key: 'xunhupay_appid', label: 'AppID', type: 'input', default: '' }, { key: 'xunhupay_appsecret', label: 'AppSecret', type: 'input', default: '' }, ], }, { key: 'xhpay', title: '小火付配置', icon: 'fas fa-fire', description: '开启「小火付」后填写商户与通道参数。', collapsible: true, expandWhen: 'payment_xhpay_enabled', dependsOn: { key: 'payment_xhpay_enabled', value: true }, fields: [ { key: 'xhpay_mchid', label: '商户号', type: 'input', default: '' }, { key: 'xhpay_alipay_v2', label: '支付宝V2', type: 'input', default: '' }, { key: 'xhpay_wx_h5', label: '微信H5', type: 'input', default: '' }, ], }, { key: 'payjs', title: 'PayJS 配置', icon: 'fab fa-js', description: '开启「PayJS」后填写商户号与通信密钥。', collapsible: true, expandWhen: 'payment_payjs_enabled', dependsOn: { key: 'payment_payjs_enabled', value: true }, fields: [ { key: 'payjs_mchid', label: '商户号', type: 'input', default: '' }, { key: 'payjs_key', label: '通信密钥', type: 'input', default: '' }, ], }, { key: 'epay', title: '易支付配置', icon: 'fas fa-university', description: '开启「易支付」后填写接口与商户信息。', collapsible: true, expandWhen: 'payment_epay_enabled', dependsOn: { key: 'payment_epay_enabled', value: true }, fields: [ { key: 'epay_apiurl', label: '接口地址', type: 'input', default: '' }, { key: 'epay_pid', label: '商户ID', type: 'input', default: '' }, { key: 'epay_key', label: '商户密钥', type: 'input', default: '' }, ], }, ], }