import { login, getMyIndexInfo, getWxUserPhoneNumber } from "../config/api/user" import { URL, appid } from "@/config/url.js" import { getCommonByBrand } from "@/config/api/system" import { HELP_CONTENT } from "@/constants/help" // import { GET_PHONE_NUMBER_URL } from "../config/url" // 微信登录方法 export const wxLogin = () => { return new Promise((resolve, reject) => { // 1. 获取微信登录凭证 uni.login({ provider: 'weixin', success: async (loginRes) => { try { if (loginRes.code) { // 2. 发送 code 到后端换取 token const result = await login({ code: loginRes.code, appid: "wx2165f0be356ae7a9" }) if (result.code === 200) { // 3. 保存token和用户信息 uni.setStorageSync('token', result.data.LoginWxVo.access_token) uni.setStorageSync('client_id', result.data.LoginWxVo.client_id) // 4. 登录成功后获取并缓存客服电话 fetchAndCacheCustomerPhone().catch(err => { console.error('获取客服电话失败,但不影响登录', err) }) resolve(result.data) } else { throw new Error(result.message || '登录失败') } } else { throw new Error('获取微信登录凭证失败') } } catch (error) { uni.showToast({ title: error.message || '登录失败', icon: 'none' }) reject(error) } }, fail: (error) => { uni.showToast({ title: '微信登录失败', icon: 'none' }) reject(error) } }) }) } // 检查登录状态 // export const checkLogin = () => { // const token = uni.getStorageSync('token') // return !!token // } // 获取用户信息 export const getUserInfo = () => { return new Promise(async (res, rej) => { const result = await getMyIndexInfo({ isHide: false, }) res(result) }) } // 获取用户手机号 export const getUserPhoneNumber = (code) => { return new Promise(async (resolve, reject) => { try { console.log('开始请求获取手机号,code=', code) // 发送请求到后端获取手机号 const res = await getWxUserPhoneNumber({ code: code, // 微信获取手机号授权后的临时code appid: appid }) if (res) { console.log('请求获取手机号接口成功:', JSON.stringify(res)) resolve(res) } else { reject(new Error('服务器返回空数据')) } } catch (error) { console.error('获取手机号过程中出现异常:', error) reject(new Error('获取手机号异常: ' + (error.message || JSON.stringify(error)))) } }) } // 调用微信支付分接口 export const initiateWeChatScorePayment = (paymentData) => { return new Promise((resolve, reject) => { // 确保paymentData包含所需数据 if (!paymentData || !paymentData.data || !paymentData.data.package) { reject(new Error('支付参数不完整')); return; } // 使用wx.openBusinessView打开微信支付分小程序 wx.openBusinessView({ businessType: 'wxpayScoreUse', extraData: { mch_id: paymentData.data.mch_id, package: paymentData.data.package }, success: (businessRes) => { // 根据返回结果判断是否完成支付 if (businessRes.errMsg === 'openBusinessView:ok') { resolve(businessRes); } else { reject(new Error('支付流程未完成')); } }, fail: (error) => { console.error('微信支付分小程序调用失败', error); uni.showToast({ title: error.errMsg || '支付分接口调用失败', icon: 'none' }); reject(error); } }); }); } export const getQueryString = function(url, name) { var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i') var r = url.substr(1).match(reg) if (r != null) { return r[2] } return null; } // 获取并缓存客服电话 export const fetchAndCacheCustomerPhone = async () => { try { // 获取当前语言 const locale = uni.getLocale ? uni.getLocale() : uni.getSystemInfoSync().language const isEnglish = locale && (locale.toLowerCase().startsWith('en') || locale.toLowerCase().includes('en')) // 根据语言设置品牌名称 const brandName = isEnglish ? 'fdzpower' : '风电者' console.log('获取客服电话,当前语言:', locale, '品牌名称:', brandName) // 调用接口获取客服电话 const res = await getCommonByBrand(brandName) if (res.code === 200 && res.data && res.data.servicePhone) { const phone = res.data.servicePhone // 缓存客服电话 uni.setStorageSync('customerPhone', phone) console.log('客服电话已缓存:', phone) return phone } else { console.warn('获取客服电话失败,使用内置默认电话') // 使用内置默认电话并缓存 const defaultPhone = HELP_CONTENT.CONTACT.PHONE.VALUE uni.setStorageSync('customerPhone', defaultPhone) return defaultPhone } } catch (error) { console.error('获取客服电话出错,使用内置默认电话:', error) // 使用内置默认电话并缓存 const defaultPhone = HELP_CONTENT.CONTACT.PHONE.VALUE uni.setStorageSync('customerPhone', defaultPhone) return defaultPhone } } // 从缓存获取客服电话 export const getCustomerPhone = () => { const phone = uni.getStorageSync('customerPhone') // 如果没有缓存,返回内置默认值 return phone || HELP_CONTENT.CONTACT.PHONE.VALUE }