121 lines
3.0 KiB
JavaScript
121 lines
3.0 KiB
JavaScript
/**
|
||
* 支付接口模块
|
||
*/
|
||
|
||
import { get, post } from './request'
|
||
|
||
/**
|
||
* 获取会员等级配置
|
||
* @returns {Promise<Object>} 会员等级列表
|
||
*/
|
||
export function getMemberTiers() {
|
||
return get('/pay/memberTiers')
|
||
}
|
||
|
||
/**
|
||
* 创建会员订单
|
||
* @param {number} memberLevel - 会员等级:1永久会员 2诚意会员 3家庭版会员
|
||
* @returns {Promise<Object>} 订单信息和支付参数
|
||
*/
|
||
export function createMemberOrder(memberLevel) {
|
||
return post('/pay/createOrder', { memberLevel })
|
||
}
|
||
|
||
/**
|
||
* 查询订单详情
|
||
* @param {string} orderNo - 订单号
|
||
* @returns {Promise<Object>} 订单详情
|
||
*/
|
||
export function getOrderDetail(orderNo) {
|
||
return get(`/pay/order/${orderNo}`)
|
||
}
|
||
|
||
/**
|
||
* 查询订单支付状态(主动查询微信)
|
||
* @param {string} orderNo - 订单号
|
||
* @returns {Promise<Object>} 订单详情
|
||
*/
|
||
export function queryOrderStatus(orderNo) {
|
||
return get(`/pay/order/${orderNo}/status`)
|
||
}
|
||
|
||
/**
|
||
* 取消订单
|
||
* @param {string} orderNo - 订单号
|
||
* @returns {Promise<Object>} 操作结果
|
||
*/
|
||
export function cancelOrder(orderNo) {
|
||
return post(`/pay/order/${orderNo}/cancel`)
|
||
}
|
||
|
||
/**
|
||
* 调起微信支付
|
||
* @param {Object} paymentParams - 支付参数
|
||
* @returns {Promise<Object>} 支付结果
|
||
*/
|
||
export function requestPayment(paymentParams) {
|
||
return new Promise((resolve, reject) => {
|
||
wx.requestPayment({
|
||
timeStamp: paymentParams.timeStamp,
|
||
nonceStr: paymentParams.nonceStr,
|
||
package: paymentParams.package,
|
||
signType: paymentParams.signType || 'RSA',
|
||
paySign: paymentParams.paySign,
|
||
success: (res) => {
|
||
resolve({ success: true, data: res })
|
||
},
|
||
fail: (err) => {
|
||
if (err.errMsg.includes('cancel')) {
|
||
resolve({ success: false, cancelled: true, message: '用户取消支付' })
|
||
} else {
|
||
reject(err)
|
||
}
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 购买会员完整流程
|
||
* @param {number} memberLevel - 会员等级
|
||
* @returns {Promise<Object>} 支付结果
|
||
*/
|
||
export async function purchaseMember(memberLevel) {
|
||
try {
|
||
// 1. 创建订单
|
||
const orderRes = await createMemberOrder(memberLevel)
|
||
if (orderRes.code !== 0) {
|
||
return { success: false, message: orderRes.message || '创建订单失败' }
|
||
}
|
||
|
||
const { orderNo, paymentParams } = orderRes.data
|
||
|
||
// 2. 调起支付
|
||
const payRes = await requestPayment(paymentParams)
|
||
if (!payRes.success) {
|
||
return payRes
|
||
}
|
||
|
||
// 3. 查询支付结果
|
||
const statusRes = await queryOrderStatus(orderNo)
|
||
if (statusRes.code === 0 && statusRes.data.status === 2) {
|
||
return { success: true, orderNo, message: '支付成功' }
|
||
}
|
||
|
||
return { success: true, orderNo, message: '支付处理中' }
|
||
} catch (error) {
|
||
console.error('购买会员失败:', error)
|
||
return { success: false, message: error.message || '支付失败' }
|
||
}
|
||
}
|
||
|
||
export default {
|
||
getMemberTiers,
|
||
createMemberOrder,
|
||
getOrderDetail,
|
||
queryOrderStatus,
|
||
cancelOrder,
|
||
requestPayment,
|
||
purchaseMember
|
||
}
|