xiangyixiangqin/miniapp/api/pay.js
2026-01-22 19:12:22 +08:00

121 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 支付接口模块
*/
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
}