import { login, getMyIndexInfo } from "../config/user" import { URL, appid } from "@/config/url.js" // 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) 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 { // 获取登录态信息 const token = uni.getStorageSync('token') if (!token) { reject(new Error('用户未登录')) return } console.log('开始请求获取手机号,code=', code, '请求地址=', URL + '/app/user/getPhoneNumber') // 发送请求到后端获取手机号 uni.request({ url: URL + '/app/user/getPhoneNumber', method: 'POST', header: { 'Authorization': 'Bearer ' + token, 'clientId': uni.getStorageSync('client_id'), 'Content-Type': 'application/json' }, data: { code: code, // 微信获取手机号授权后的临时code appid: appid }, success: (res) => { console.log('请求获取手机号接口成功,原始响应:', JSON.stringify(res)) // 检查HTTP状态码 if (res.statusCode !== 200) { reject(new Error(`HTTP错误: ${res.statusCode}`)) return } // 确保响应体存在 if (!res.data) { reject(new Error('服务器返回空数据')) return } // 正常返回响应数据,不做额外判断,由调用方处理业务状态码 resolve(res.data) }, fail: (err) => { console.error('请求获取手机号接口网络错误:', err) reject(new Error('请求获取手机号接口失败: ' + (err.errMsg || JSON.stringify(err)))) } }) } 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; }