|
|
@@ -143,6 +143,7 @@ const request = (options) => {
|
|
|
|
|
|
// ==================== H5公众号认证API ====================
|
|
|
|
|
|
+// #ifdef H5
|
|
|
/**
|
|
|
* 获取微信授权URL
|
|
|
* @param {string} redirectUrl - 授权后的回调地址
|
|
|
@@ -197,6 +198,59 @@ export const h5PhoneLogin = (params) => {
|
|
|
data: params
|
|
|
})
|
|
|
}
|
|
|
+// #endif
|
|
|
+
|
|
|
+// ==================== 微信小程序认证API ====================
|
|
|
+
|
|
|
+// #ifdef MP-WEIXIN
|
|
|
+/**
|
|
|
+ * 第一步:微信静默登录接口(老用户)
|
|
|
+ * @param {object} params - { loginCode }
|
|
|
+ * @returns {Promise} 返回 { isSign, token?, code? }
|
|
|
+ */
|
|
|
+export const wxSilentLoginApi = (params) => {
|
|
|
+ return request({
|
|
|
+ url: '/v1/auth/wx/silent-login',
|
|
|
+ method: 'POST',
|
|
|
+ header: {
|
|
|
+ 'content-type': 'application/json'
|
|
|
+ },
|
|
|
+ data: params
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 第二步:手机号授权登录接口(新用户验证手机号)
|
|
|
+ * @param {object} params - { loginCode, phoneCode, encryptedData, iv }
|
|
|
+ * @returns {Promise} 返回 { isSign, token?, openid?, unionid?, phoneNumber? }
|
|
|
+ */
|
|
|
+export const wxPhoneLoginApi = (params) => {
|
|
|
+ return request({
|
|
|
+ url: '/v1/auth/wx/phone-verify',
|
|
|
+ method: 'POST',
|
|
|
+ header: {
|
|
|
+ 'content-type': 'application/json'
|
|
|
+ },
|
|
|
+ data: params
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 第三步:完善用户信息接口(首次登录)
|
|
|
+ * @param {object} params - { openid, unionid, phoneNumber, nickname, avatarUrl }
|
|
|
+ * @returns {Promise} 返回 { token }
|
|
|
+ */
|
|
|
+export const wxCompleteUserInfoApi = (params) => {
|
|
|
+ return request({
|
|
|
+ url: '/v1/auth/wx/register',
|
|
|
+ method: 'POST',
|
|
|
+ header: {
|
|
|
+ 'content-type': 'application/json'
|
|
|
+ },
|
|
|
+ data: params
|
|
|
+ })
|
|
|
+}
|
|
|
+// #endif
|
|
|
|
|
|
/**
|
|
|
* 获取用户完整信息接口
|
|
|
@@ -439,27 +493,8 @@ export const wxPay = (payParams) => {
|
|
|
}
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- // 运行时判断环境
|
|
|
- if (typeof WeixinJSBridge !== 'undefined') {
|
|
|
- // H5环境使用WeixinJSBridge调起支付
|
|
|
- console.log('使用 WeixinJSBridge 调起支付')
|
|
|
- WeixinJSBridge.invoke('getBrandWCPayRequest', {
|
|
|
- appId: payParams.appId || '',
|
|
|
- timeStamp: payParams.timeStamp,
|
|
|
- nonceStr: payParams.nonceStr,
|
|
|
- package: payParams.packageValue,
|
|
|
- signType: payParams.signType,
|
|
|
- paySign: payParams.paySign
|
|
|
- }, (res) => {
|
|
|
- if (res.err_msg === 'get_brand_wcpay_request:ok') {
|
|
|
- resolve(res)
|
|
|
- } else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
|
|
|
- reject(new Error('用户取消支付'))
|
|
|
- } else {
|
|
|
- reject(new Error('支付失败:' + res.err_msg))
|
|
|
- }
|
|
|
- })
|
|
|
- } else if (typeof uni !== 'undefined' && uni.requestPayment) {
|
|
|
+ // 优先判断小程序环境(避免在小程序中误用 WeixinJSBridge)
|
|
|
+ if (typeof uni !== 'undefined' && uni.requestPayment) {
|
|
|
// 小程序环境使用uni.requestPayment
|
|
|
console.log('使用 uni.requestPayment 调起支付')
|
|
|
uni.requestPayment({
|
|
|
@@ -469,7 +504,6 @@ export const wxPay = (payParams) => {
|
|
|
package: payParams.packageValue,
|
|
|
signType: payParams.signType,
|
|
|
paySign: payParams.paySign,
|
|
|
- totalFee: totalFee,
|
|
|
success: (res) => {
|
|
|
resolve(res)
|
|
|
},
|
|
|
@@ -482,6 +516,25 @@ export const wxPay = (payParams) => {
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
+ } else if (typeof WeixinJSBridge !== 'undefined') {
|
|
|
+ // H5环境使用WeixinJSBridge调起支付
|
|
|
+ console.log('使用 WeixinJSBridge 调起支付')
|
|
|
+ WeixinJSBridge.invoke('getBrandWCPayRequest', {
|
|
|
+ appId: payParams.appId || '',
|
|
|
+ timeStamp: payParams.timeStamp,
|
|
|
+ nonceStr: payParams.nonceStr,
|
|
|
+ package: payParams.packageValue,
|
|
|
+ signType: payParams.signType,
|
|
|
+ paySign: payParams.paySign
|
|
|
+ }, (res) => {
|
|
|
+ if (res.err_msg === 'get_brand_wcpay_request:ok') {
|
|
|
+ resolve(res)
|
|
|
+ } else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
|
|
|
+ reject(new Error('用户取消支付'))
|
|
|
+ } else {
|
|
|
+ reject(new Error('支付失败:' + res.err_msg))
|
|
|
+ }
|
|
|
+ })
|
|
|
} else {
|
|
|
reject(new Error('当前环境不支持支付'))
|
|
|
}
|