2026-03-17 11:44:36 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* Soul创业派对 - 代付详情页
|
|
|
|
|
|
* 好友打开后看到订单信息,点击「帮他付款」完成代付
|
|
|
|
|
|
*/
|
|
|
|
|
|
const app = getApp()
|
|
|
|
|
|
|
|
|
|
|
|
Page({
|
|
|
|
|
|
data: {
|
|
|
|
|
|
statusBarHeight: 44,
|
|
|
|
|
|
requestSn: '',
|
|
|
|
|
|
detail: null,
|
|
|
|
|
|
loading: true,
|
2026-03-17 12:15:08 +08:00
|
|
|
|
paying: false,
|
|
|
|
|
|
isInitiator: false // 是否发起人,发起人看到「分享给好友」UI,好友看到「帮他付款」
|
2026-03-17 11:44:36 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
onLoad(options) {
|
|
|
|
|
|
this.setData({ statusBarHeight: app.globalData.statusBarHeight || 44 })
|
|
|
|
|
|
const requestSn = (options.requestSn || '').trim()
|
|
|
|
|
|
if (!requestSn) {
|
|
|
|
|
|
wx.showToast({ title: '代付链接无效', icon: 'none' })
|
|
|
|
|
|
setTimeout(() => wx.switchTab({ url: '/pages/index/index' }), 1500)
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
this.setData({ requestSn })
|
|
|
|
|
|
this.loadDetail()
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
async loadDetail() {
|
|
|
|
|
|
const { requestSn } = this.data
|
|
|
|
|
|
if (!requestSn) return
|
|
|
|
|
|
this.setData({ loading: true })
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await app.request(`/api/miniprogram/gift-pay/detail?requestSn=${encodeURIComponent(requestSn)}`)
|
|
|
|
|
|
if (res && res.success) {
|
2026-03-17 12:15:08 +08:00
|
|
|
|
const myId = app.globalData.userInfo?.id || ''
|
|
|
|
|
|
const isInitiator = !!myId && res.initiatorUserId === myId
|
|
|
|
|
|
this.setData({ detail: res, loading: false, isInitiator })
|
2026-03-17 11:44:36 +08:00
|
|
|
|
} else {
|
|
|
|
|
|
this.setData({ loading: false })
|
|
|
|
|
|
wx.showToast({ title: res?.error || '加载失败', icon: 'none' })
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
this.setData({ loading: false })
|
|
|
|
|
|
wx.showToast({ title: '加载失败', icon: 'none' })
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
async doPay() {
|
|
|
|
|
|
if (!app.globalData.isLoggedIn || !app.globalData.userInfo) {
|
|
|
|
|
|
wx.showToast({ title: '请先登录', icon: 'none' })
|
|
|
|
|
|
setTimeout(() => wx.switchTab({ url: '/pages/my/my' }), 1500)
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
const openId = app.globalData.openId || ''
|
|
|
|
|
|
if (!openId) {
|
|
|
|
|
|
wx.showToast({ title: '请先完成微信授权', icon: 'none' })
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
const { requestSn, detail } = this.data
|
|
|
|
|
|
if (!requestSn || !detail) return
|
|
|
|
|
|
|
|
|
|
|
|
this.setData({ paying: true })
|
|
|
|
|
|
wx.showLoading({ title: '创建订单中...', mask: true })
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await app.request({
|
|
|
|
|
|
url: '/api/miniprogram/gift-pay/pay',
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: {
|
|
|
|
|
|
requestSn,
|
|
|
|
|
|
openId,
|
|
|
|
|
|
userId: app.globalData.userInfo?.id || ''
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
wx.hideLoading()
|
|
|
|
|
|
if (!res || !res.success || !res.data?.payParams) {
|
|
|
|
|
|
throw new Error(res?.error || '创建订单失败')
|
|
|
|
|
|
}
|
|
|
|
|
|
const payParams = res.data.payParams
|
|
|
|
|
|
payParams._orderSn = res.data.orderSn
|
|
|
|
|
|
|
|
|
|
|
|
await new Promise((resolve, reject) => {
|
|
|
|
|
|
wx.requestPayment({
|
|
|
|
|
|
...payParams,
|
|
|
|
|
|
signType: payParams.signType || 'MD5',
|
|
|
|
|
|
success: resolve,
|
|
|
|
|
|
fail: reject
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
wx.showToast({ title: '代付成功', icon: 'success' })
|
|
|
|
|
|
this.setData({ paying: false })
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
|
wx.navigateBack({ fail: () => wx.switchTab({ url: '/pages/index/index' }) })
|
|
|
|
|
|
}, 1500)
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
this.setData({ paying: false })
|
|
|
|
|
|
if (e.errMsg && e.errMsg.includes('cancel')) {
|
|
|
|
|
|
wx.showToast({ title: '已取消支付', icon: 'none' })
|
|
|
|
|
|
} else {
|
|
|
|
|
|
wx.showToast({ title: e.message || e.error || '支付失败', icon: 'none' })
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
goBack() {
|
|
|
|
|
|
app.goBackOrToHome()
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
onShareAppMessage() {
|
|
|
|
|
|
const { requestSn } = this.data
|
|
|
|
|
|
return {
|
|
|
|
|
|
title: '好友请你帮忙代付 - Soul创业派对',
|
|
|
|
|
|
path: requestSn ? `/pages/gift-pay/detail?requestSn=${requestSn}` : '/pages/gift-pay/detail'
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|