新后台

This commit is contained in:
2026-06-07 13:43:53 +08:00
parent a736e52943
commit 143b8f3b24
14 changed files with 324 additions and 28 deletions

View File

@@ -5,6 +5,8 @@ import {
AppStateStatus,
Image,
Modal,
NativeModules,
Platform,
ScrollView,
StyleSheet,
Switch,
@@ -145,8 +147,7 @@ interface HomeScreenState {
export default class HomeScreen extends Component<any, HomeScreenState> {
private deviceId: string;
private androidId: string;
private tuneUserId: string;
private adid: string = '';
private clientId: string = '';
@@ -185,12 +186,39 @@ export default class HomeScreen extends Component<any, HomeScreenState> {
expandedBoundWalletGroups: {},
};
this.deviceId = DeviceInfo.getUniqueIdSync();
this.tuneUserId = "yz8mxybytus";//Math.random().toString(36).substring(2, 15);
this.androidId = DeviceInfo.getAndroidIdSync();
}
private loadAdid = async (): Promise<string> => {
if (Platform.OS !== 'android' || !NativeModules.AdId?.getAdvertisingId) {
this.adid = '';
return '';
}
try {
const id = await NativeModules.AdId.getAdvertisingId();
this.adid = (id || '').trim();
} catch (e) {
console.log('[ADID] getAdvertisingId failed:', e);
this.adid = '';
}
return this.adid;
};
private ensureMobikwikOtpParams = async () => {
const adid = this.adid || await this.loadAdid();
if (!adid) {
throw new Error('无法获取 GAID (广告 ID),请确认已安装 Google Play 服务且未关闭广告 ID');
}
return {
androidId: this.androidId,
adid,
tuneUserId: adid,
};
};
async componentDidMount() {
await loadServerDomain();
await this.loadAdid();
const tokenAutoRebind = getTokenAutoRebindEnabled();
this.setState({ tokenAutoRebind });
proxyBackgroundService.setTokenAutoRebindEnabled(tokenAutoRebind);
@@ -705,12 +733,14 @@ export default class HomeScreen extends Component<any, HomeScreenState> {
<MobikwikPersonalOTPBind
isDebug
initialMobile={bindPrefillMobile}
onRequestOTP={async (wt, p) =>
this.wrapOtpCall(() => Api.instance.requestOTP(wt, p.mobile, {
androidId: this.androidId,
tuneUserId: this.tuneUserId,
}))
}
onRequestOTP={async (wt, p) => {
try {
const otpParams = await this.ensureMobikwikOtpParams();
return this.wrapOtpCall(() => Api.instance.requestOTP(wt, p.mobile, otpParams));
} catch (e) {
return { success: false, message: (e as Error).message };
}
}}
onVerifyOTP={async (wt, p) =>
this.wrapOtpCall(() => Api.instance.verifyOTP(wt, p.mobile, p.otp, p))
}

View File

@@ -4,6 +4,7 @@ import {
onProxyMessage,
proxySendMessage,
openPaytmPayToBank,
openPaytmPayToBank2,
openMobikwikPayToBank,
openPhonePePayToBank,
openFreechargePayToBank,
@@ -34,6 +35,12 @@ export default function TestScreen() {
.catch(error => Alert.alert('Transfer Failed', String(error)));
};
const handlePaytmPayToBank2 = () => {
openPaytmPayToBank2('Harshpreet singh', '01601000068180', 'PSIB0000160', '3', '1234')
.then((result: boolean) => console.log('Paytm Pay To Bank2', result ? 'Success' : 'Failed'))
.catch((error: unknown) => Alert.alert('Transfer Failed', String(error)));
};
const handleMobikwikPayToBank = () => {
openMobikwikPayToBank('Anmol', '5521101002938', 'CNRB0005521', '12')
.then(result => console.log('Mobikwik Pay To Bank', result ? 'Success' : 'Failed'))
@@ -65,6 +72,9 @@ export default function TestScreen() {
<TouchableOpacity style={[styles.btn, { backgroundColor: '#2ecc71' }]} onPress={handlePaytmPayToBank}>
<Text style={styles.btnText}>Paytm Pay To Bank Test</Text>
</TouchableOpacity>
<TouchableOpacity style={[styles.btn, { backgroundColor: '#27ae60' }]} onPress={handlePaytmPayToBank2}>
<Text style={styles.btnText}>Paytm Pay To Bank2 (deeplink)</Text>
</TouchableOpacity>
<TouchableOpacity style={[styles.btn, { backgroundColor: '#2ecc33' }]} onPress={handleMobikwikPayToBank}>
<Text style={styles.btnText}>Mobikwik Pay To Bank Test</Text>
</TouchableOpacity>