{{siteTitle}}

小程序上传管理平台

{{loginError}}

{{siteTitle}}

小程序列表

管理配置与上传

已选 {{selectedIds.length}} 项:
ID名称公司名AppID / Secret渠道首页模式模式首页弹窗尾页弹窗状态上架Key操作
{{item.id}}{{item.name}}{{item.company_name}}
{{item.appid}}{{item.wx_authorized?'已授权':'未授权'}}
{{item.secret}}
上次 v{{item.last_version}} · {{(item.last_version_at||'').slice(5,16)}}未上传过
{{item.channel_name}}
{{item.invite_no}}
{{item.index_mode==10?'模式1':'模式2'}} {{item.run_mode==20?'跳转':'进件'}} {{item.wx_audit_status===2?'关·审核中':(item.follow_us_switch==10?'开':'关')}} {{item.wx_audit_status===2?'关·审核中':(item.tail_follow_us_switch==10?'开':'关')}} {{item.admin_status==10?'正常':'关闭'}} {{listingStatusMeta(item.listing_status).label}}
{{opt.label}}
{{keyMap[item.appid]?'有':'无'}} 审核中 上次被驳回
加载中...
共 {{pg.total}} 条 · 每页

状态审核

扫码登录 mp.weixin.qq.com,查看该微信号管理的全部小程序状态

点击「开始扫码」后会在后台启动一个 Chromium 浏览器,打开 mp.weixin.qq.com 登录页,截取二维码显示在这里。用微信扫码确认后,自动拉取该微信号管理的所有小程序列表和状态。会话仅在内存中保留,退出即销毁。会话仅对当前登录的 upxcx 用户可见。
{{ mps.error }}
⚠️ 登录状态已失效,请重新扫码

使用微信扫描二维码并确认登录

正在加载二维码...

扫码成功,正在登录...
已登录,正在拉取小程序列表...
刷新中...
当前账号:{{ mps.accountInfo.nickname || '(未识别)' }}{{ mps.accountInfo.ghId }}
{{ key }}:{{ mps.accountInfo.statusMap[key] || '—' }}
扫描进度:{{ mps.scanProgress }}
#名称gh_id小程序信息类目微信认证备案操作
{{ i+1 }}当前 {{ item.name }} {{ item.ghId || '—' }}
未抓到账号切换面板列表(该微信号可能仅管理一个小程序,或面板触发器失效)。
会话异常:{{ mps.error || '未知错误' }}

渠道统计

数据源:tehuihua channel_user_statistics({{ user&&user.role==='admin'?'全部渠道':'当前用户绑定渠道' }})

独立IP访客(不含跳转)
{{csTotals.ip_uv_num||0}}
表单注册
{{csTotals.register_count_sum||0}}
撞库成功
{{csTotals.query_success_count_sum||0}}
进件数
{{csTotals.apply_count_sum||0}}
渠道费用
¥{{(csTotals.channel_cost||0).toFixed(2)}}
跳转UV
{{csTotals.jump_uv||0}}
跳转订单(正常/总)
{{csTotals.jump_ok||0}}/{{csTotals.jump_total||0}}
跳转收益
¥{{(csTotals.jump_income||0).toFixed(2)}}
总收益
¥{{(csTotals.zongshouyi||0).toFixed(2)}}
整体ROI
{{(csTotals.roi||0).toFixed(2)}}%
转化漏斗
TOP 10 渠道收益
ID日期渠道名称结算方式合作价格 独立IP访客(不含跳转)表单注册数撞库数撞库成功数进件数 渠道费用进件成功率有效均价表单均价 贷超UV贷超创收API收益 跳转UV跳转订单(正常/总)跳转收益 总收益渠道ROI
{{r.id}} {{r.dates}} {{r.name}} {{r.settlement_type===10?'CPA':r.settlement_type===20?'UV':r.settlement_type===30?'CPS':'-'}} {{r.settlement_type===30?(r.channel_unit_price+' %'):(r.channel_unit_price+' 元')}} {{r.ip_uv_num}} {{r.register_count_sum}} {{r.query_count_sum}} {{r.query_success_count_sum}} {{r.apply_count_sum}} ¥{{r.channel_cost.toFixed(2)}} {{r.apply_rate}}% ¥{{r.youxiaojunjia.toFixed(2)}} ¥{{r.biaodanjunjia.toFixed(2)}} {{r.overlending_uv}} ¥{{Number(r.overlending_amount).toFixed(2)}} ¥{{Number(r.api_income).toFixed(2)}} {{r.jump_uv}} {{r.jump_ok}}/{{r.jump_total}} ¥{{Number(r.jump_income).toFixed(2)}} ¥{{r.zongshouyi.toFixed(2)}} {{r.roi.toFixed(2)}}%
暂无数据
共 {{cs.total}} 条

上传记录

时间名称AppID版本模板环境状态操作
{{l.created_at}}{{l.name}} {{l.appid}}{{l.version}}{{l.template}} {{l.base_url&&l.base_url.includes('10.10.10')?'测试':'正式'}} {{l.status==='success'?'成功':'失败'}}

定时任务

上传后自动打开弹窗

AppID延迟预计打开创建时间操作
{{t.appid}}{{t.hours}}h {{t.open_at}}{{t.created_at}}
暂无定时任务

系统设置

网站

账号

服务器地址

数据库连接

定时任务

公司名列表

授权公司名列表

平台名列表

郑重声明模板

用户协议模板

隐私政策模板

WeChat Operations

微信授权与发布工作台

先为业务员选定目标小程序,再按各第三方平台的实时承载量选择授权通道。业务域名、审核状态和版本发布集中在同一页处理。

Step 01 · 授权
选择小程序和第三方平台
平台卡片会显示已授权数量、剩余容量和运行状态。点击可用平台后直接生成该平台的授权二维码。
共 {{authPlatforms.length}} 个平台
{{authTargetMeta.name||authTargetMeta.appid}}
{{authTargetMeta.appid}}
{{authTargetMeta.channel_name}} {{authTargetMeta.wx_authorized?'已授权':'待授权'}} 当前:{{authTargetMeta.wx_platform_name}}

重新选择平台会发起一次新的授权流程,请确认当前管理关系后再扫码。

先选择一个小程序,再从右侧平台卡片中选择授权通道。
还没有配置可展示的第三方平台。

授权二维码必须由目标小程序管理员扫码。平台全网发布前,还需先在对应微信开放平台把小程序原始 ID 加入授权测试账号列表。 微信没有第三方平台主动解除授权接口;“删除本地记录”不会解除微信侧关系,真正取消需在公众平台「设置 → 第三方设置」中操作。

Step 02 · Domains
业务域名
自定义域名与机构域名分开维护,合并成一份白名单自动同步到所有已授权小程序。
自动同步
每 5 分钟同步一次,新授权小程序也会立即同步。
{{wxauth.lastSync&&wxauth.lastSync.at?'运行中':'等待首次同步'}}
{{wxauth.lastSync&&wxauth.lastSync.checked||0}}检查
{{wxauth.lastSync&&wxauth.lastSync.updated||0}}更新
{{wxauth.lastSync&&wxauth.lastSync.failed||0}}失败
上次同步:{{wxauth.lastSync&&wxauth.lastSync.at?fmtTime(wxauth.lastSync.at):'服务启动后等待执行'}}
添加自定义域名
支持空格、逗号分隔,一次添加多个;非域名内容自动剔除。清单在下方「白名单域名」的自定义域名卡片里查看。
{{wvItems.length}} 个域名
追加/覆盖模式只影响新授权小程序的首次同步;移除后不会主动撤销已经同步到小程序的旧域名。
白名单域名
自定义域名 + “跳转导流”机构的域名,点卡片查看明细;同一域名多方配置只推 1 次。
自定义 {{wvItems.length}} · 机构 {{agencyGroups.length}} · 机构域名 {{agencyDomains.length}}
自定义域名 不绑机构
{{wvItems.length}} 个域名 同为机构域名:{{customGroup.dup}}个
{{g.name}} {{g.status!==10?'已停用':(g.online?'在线':'离线')}}
{{g.domains.length}} 个域名 重复域名:{{g.dup}}个
暂无跳转导流机构域名
当前生效清单
{{desiredDomains.length}} 个域名将用于自动同步。
{{wvAction==='set'?'覆盖模式':'追加模式'}}
{{it.domain.replace(/^https?:\/\//,'')}}
{{n}} 重复域名:{{it.agency_names.length}}个
平台自定义域名 · 机构也在用:{{it.agency_names.join('、')}}
自动
暂无待同步域名
本次同步结果
失败项会保留微信返回的具体原因。
{{r.name||r.appid}}
{{r.ok?(r.domains||[]).join(' · '):r.msg}}
{{r.ok?'成功':'失败'}}
开放平台配置提醒
当前系统负责同步授权小程序的业务域名;每个第三方平台的业务域名白名单也需分别确认和维护,否则可能返回 89021 request domain is not open's webview domain。多平台时,请逐个平台核对这份白名单。
Step 03 · Release
代码发布控制台
卡片按异常优先排列:审核未通过 → 流程失败 → 审核中 → 审核通过待发布。每张卡只显示一个主状态,三个版本阶段分别呈现。
当前代码模板
{{codeTpl.current.source_template||'未知模板'}} · 编译于 {{fmtTime(codeTpl.current.built_at)}}
还没有可提交的代码模板。
v{{codeTpl.current&&codeTpl.current.version||'-'}}
{{codeTpl.current.base_url}}
微信提审额度
额度为 0 时只拦截提审,仍可先上传代码。
{{wxQuota.rest}} / {{wxQuota.limit}} 未知
加急 {{wxQuota.speedupRest}} / {{wxQuota.speedupLimit}}
额度已用完,可先执行“只上传代码”,等额度恢复后继续提审。
暂时查不到额度:{{wxQuota.error}}
{{releaseCounts.rejected}}未通过 / 流程失败
{{releaseCounts.auditing}}审核中 / 延后
{{releaseCounts.approved}}审核通过待发布
{{releaseCounts.published}}已发布
已选 {{authSel.length}} 个
一键流程会从每个小程序当前阶段继续:未上传则提交代码,已有体验版则继续提审,审核中保持等待,审核通过则进入发布。 审核过程中首页和尾页弹窗强制关闭;审核通过或不通过后两者自动打开,之后可手动关闭。支持代码发布的平台才会进入批量范围。
小程序发布状态
“未发布”只作为线上版阶段显示,不再与“审核未通过”等主状态并列,避免同一张卡出现互相矛盾的标签。
{{a.nick_name||'未命名小程序'}}
{{a.authorizer_appid}}
{{releaseMeta(a).label}}
第三方平台:{{a.platform_name||a.platform_id||'未标注'}}
{{a.status?'已授权':'已取消'}}
{{releaseMeta(a).reason}}
体验版
{{a.code_version?'v'+a.code_version:'未上传'}}
{{a.code_at?fmtTime(a.code_at):'等待提交代码'}}
审核版
{{a.audit_version?'v'+a.audit_version:(a.audit_status!==null&&a.audit_status!==undefined&&a.code_version?'v'+a.code_version:'未提审')}}
{{a.audit_status===null||a.audit_status===undefined?'尚未提交':auditText(a.audit_status)}}
线上版
{{a.released_version?'v'+a.released_version:'未发布'}}
{{a.released_at?fmtTime(a.released_at):'暂无线上版本'}}
{{a.flow_stage==='failed'?'流程失败:':'流程提示:'}}{{a.flow_error}}
域名同步失败:{{a.sync_error}}
体验版码
该第三方平台仅支持授权和域名管理,不提供代码提交、提审和发布能力。
校验文件 更新 {{fmtTime(a.updated_at)}}
还没有小程序授权。先在上方选择小程序和第三方平台生成二维码。

用户管理

管理系统用户与权限

ID用户名角色渠道状态编辑复制上传须改密创建时间操作
{{u.id}}{{u.username}} {{u.role==='admin'?'管理员':'普通'}} {{channelNameMap[u.channel_id]||'-'}} {{u.status?'启用':'禁用'}} {{u.can_edit?'是':'否'}} {{u.can_copy?'是':'否'}} {{u.can_upload?'是':'否'}} {{u.must_change_pwd?'是':'否'}} {{u.created_at}}
暂无用户

{{ef.id?'编辑':'添加'}}小程序

首页和尾页可以分别开关。小程序处于微信审核中时两个都会被强制关闭,审核通过或不通过后两个弹窗自动打开,之后可再手动关闭。

协议内容(郑重声明 / 用户协议 / 隐私政策)

上传小程序

{{uf.name}} ({{uf.appid}})

{{ufLastVer?('上次 v'+ufLastVer+',已自动 +1,可手改'):'该号没有上传记录'}}
上传时自动关闭弹窗,{{uf.autoOpenHours}}h 后自动打开
{{upLive.join('\n')}}

编译并更新代码模板

编译一次,供所有授权号共用

所有小程序都会用这个版本号

编译产物会用模板源小程序的私钥上传到第三方平台草稿箱,再自动加入模板库。 需要先在开放平台把模板源号绑定为「开发小程序」,否则草稿箱会是空的。

批量上传

已选 {{buTargets.length}} 个小程序

同一模板、同一版本号推给选中的小程序,每个号自动用自己的 appid、渠道码、密钥。串行执行,单个失败不影响后续。

{{t.name}} {{t.appid}} {{t.last_version?('上次 v'+t.last_version+' → '):''}} v{{bu.autoVersion?nextVer(t.last_version):bu.version}} 无渠道码 无密钥
正在上传中,请勿关闭浏览器{{dots}}
每个小程序需要「复制模板 → 编译 → 压缩 → 上传微信」,单个约 1-3 分钟,期间界面看起来不动是正常的。 已用时 {{buElapsed}},预计还需 {{buEta}}。
你可以关掉这个窗口去做别的,任务在服务器后台继续跑,完成后会弹提示。
进度 {{buJob.done||0}} / {{buJob.total||buTargets.length}} ,正在上传 {{buJob.current}} 已完成
当前步骤:{{buJob.currentStage}}(本个已耗时 {{buItemElapsed}})
{{r.ok?'成功':'失败'}} {{r.name}} {{r.appid}} v{{r.version}} {{r.seconds}}秒
{{r.msg}}

上传密钥

AppID: {{keyAppid}}
文件名: private.{{keyAppid}}.key

修改渠道归属

小程序: {{tf.name}}
当前渠道: {{tf.channel_name}}

修改以后这个小程序你将无法进行编辑

独立IP访客明细 — {{csXcxDialog.row&&csXcxDialog.row.name}} {{csXcxDialog.row&&csXcxDialog.row.dates}}

加载中...
小程序ID小程序名称独立IP访客数(不含跳转)
{{r.xcx_id}} {{r.xcx_name}} {{r.cou}}
暂无数据

{{agDialogG.name}} 自定义 {{agDialogG.status!==10?'已停用':(agDialogG.online?'在线':'离线')}}

{{agDialogG.custom?'不绑机构,手工维护':'机构ID '+agDialogG.id}} · 共 {{agDialogG.domains.length}} 个域名 · {{agDialogG.custom?'同为机构域名':'与其他机构重复'}} {{agDialogG.dup}} 个
ID域名状态{{agDialogG.custom?'机构也在用':'重复(其他机构也在用)'}}操作
{{r.i+1}}
{{r.domain}}
自定义{{r.status===10?'在线':'离线'}} {{r.others.length}}个 {{r.others.join('、')}}
{{agDialogG.custom&&!agDialogG.domains.length?'暂无自定义域名,可在「添加自定义域名」里录入或批量导入':'没有匹配的域名'}}
白名单按域名归并,同一域名被多方配置时只向微信推送 1 次;各自数据保留,互不影响。

批量导入自定义域名

识别到 {{customImportPreview.total}} · {{customImportPreview.fixed}} 条未带协议已自动补 https:// · {{customImportPreview.dupInText}} 条文本内重复已合并 · {{customImportPreview.dupExist}} 条已存在将跳过 · 实际新增 {{customImportPreview.add.length}} · 其中 {{customImportPreview.crossDup}} 条与机构域名重复(保留,仅提示)
已自动剔除 {{customImportPreview.invalid.length}} 条非域名内容(空行也已忽略),请核对是否误删:
{{x}}
将新增的域名({{customImportPreview.add.length}}):
{{x}}

跳转明细 — {{csJumpDialog.row&&csJumpDialog.row.name}} {{csJumpDialog.row&&csJumpDialog.row.dates}}

加载中...
小程序ID小程序名称跳转UV跳转订单(正常/总)跳转收益
{{r.xcx_id}} {{r.xcx_name}} {{r.jump_uv}} {{r.jump_ok}}/{{r.jump_total}} ¥{{Number(r.jump_income).toFixed(2)}}
暂无数据

{{csJjDialog.type==='jinjian'?'进件':'撞库成功'}}机构明细 — {{csJjDialog.row&&csJjDialog.row.name}} {{csJjDialog.row&&csJjDialog.row.dates}}

加载中...
机构ID机构名称撞库成功数进件成功数最后撞库时间最后进件时间
{{r.agency_id}} {{r.agency_name}} {{r.zhuangku_success}} {{r.jinjian_success}} {{r.last_zhuang_time}} {{r.last_jinjian_time}}
暂无数据

日志

{{viewLog}}

{{confirmDialog.msg}}

{{ue.id?'编辑用户':'添加用户'}}

重置密码

用户: {{resetPwdUser}}

微信开放平台授权

{{authIntent.platformName||'第三方平台'}}

请确认平台和小程序无误后,由该小程序管理员扫码。

正在生成专属授权二维码...
{{toast.msg}}