本次提交主要实现微信小程序虚拟支付提审防审机制,包括: 1. 后台配置虚拟支付防审开关,支持开启/关闭模式 2. 前端根据开关状态及设备类型,iOS设备自动触发合规提示 3. 分销模块调整提现规则,无门槛即时提现 4. 登录页面优化,增加返回和暂不登录入口,符合微信审核规范 5. 新增提现记录页面,优化分销中心界面布局 该功能确保微信提审期间能顺利通过审核,审核通过后可一键切换为正常运营模式,无需重新发布小程序代码。
81 行
2.5 KiB
JavaScript
81 行
2.5 KiB
JavaScript
const fs = require('fs');
|
||
|
||
// 1. 修改 member/index.vue
|
||
let file1 = 'uniapp/pages/member/index.vue';
|
||
let content1 = fs.readFileSync(file1, 'utf8');
|
||
|
||
let target1 = ` isIosAudit() {
|
||
// #ifdef MP-WEIXIN
|
||
// 后台动态开关:开启时(true)走提审合规模式;审核通过后在后台关闭(false)立即全端恢复原状!
|
||
return uiState.virtualPayAudit !== false
|
||
// #endif
|
||
return false
|
||
},`;
|
||
|
||
let replacement1 = ` /**
|
||
* 是否触发 iOS 虚拟支付合规机制(仅针对 iOS 设备且后台开启提审保护)
|
||
* 微信官方仅对 iOS 端严查虚拟支付,Android 端完全合规支持直接支付;
|
||
* 故 Android 设备正常购买,仅在真实 iOS 设备(或工具模拟 iOS)下启动合规提示。
|
||
* @returns {boolean}
|
||
*/
|
||
isIosAudit() {
|
||
// #ifdef MP-WEIXIN
|
||
if (uiState.virtualPayAudit === false) {
|
||
return false
|
||
}
|
||
try {
|
||
const sys = uni.getSystemInfoSync() || {}
|
||
const platform = (sys.platform || '').toLowerCase()
|
||
const isIos = platform === 'ios'
|
||
const isDevtoolsIos = platform === 'devtools' && /iphone|ipad|ipod/i.test(sys.model || '')
|
||
return isIos || isDevtoolsIos
|
||
} catch (e) {
|
||
return false
|
||
}
|
||
// #endif
|
||
return false
|
||
},`;
|
||
|
||
content1 = content1.replace(target1, replacement1);
|
||
fs.writeFileSync(file1, content1, 'utf8');
|
||
|
||
// 2. 修改 member/recharge.vue
|
||
let file2 = 'uniapp/pages/member/recharge.vue';
|
||
let content2 = fs.readFileSync(file2, 'utf8');
|
||
|
||
let target2 = ` isIosAudit() {
|
||
// #ifdef MP-WEIXIN
|
||
// 后台动态开关:开启时(true)走提审合规模式;审核通过后在后台关闭(false)立即全端恢复原状!
|
||
return uiState.virtualPayAudit !== false
|
||
// #endif
|
||
return false
|
||
},`;
|
||
|
||
let replacement2 = ` /**
|
||
* 是否触发 iOS 虚拟支付合规机制(仅针对 iOS 设备且后台开启提审保护)
|
||
* 微信官方仅限制 iOS 端虚拟充值,Android 端完全合规支持直接支付。
|
||
* @returns {boolean}
|
||
*/
|
||
isIosAudit() {
|
||
// #ifdef MP-WEIXIN
|
||
if (uiState.virtualPayAudit === false) {
|
||
return false
|
||
}
|
||
try {
|
||
const sys = uni.getSystemInfoSync() || {}
|
||
const platform = (sys.platform || '').toLowerCase()
|
||
const isIos = platform === 'ios'
|
||
const isDevtoolsIos = platform === 'devtools' && /iphone|ipad|ipod/i.test(sys.model || '')
|
||
return isIos || isDevtoolsIos
|
||
} catch (e) {
|
||
return false
|
||
}
|
||
// #endif
|
||
return false
|
||
},`;
|
||
|
||
content2 = content2.replace(target2, replacement2);
|
||
fs.writeFileSync(file2, content2, 'utf8');
|
||
|
||
console.log('REPLACED_PLATFORM_AWARE_AUDIT_OK');
|