Files
2026-07-10 16:14:31 +08:00

113 lines
2.7 KiB
TypeScript

import { diamonds, diamondVirtualPayment, updatesessionkey, updateuserinfo, userInfo } from '../../../utils/request';
interface CoinPackage {
id: number
coins: number
price: number
ribbon?: string
ribbonClass?: string
artClass: string
chest?: boolean
selected: boolean
}
Page({
data: {
packages: [],
selectedPackage: null as CoinPackage | null,
userInfo: { diamond: 0 }
},
onLoad() {
this.setData({ userInfo: wx.getStorageSync('userInfo') })
diamonds().then((res: any) => {
if (!res.code) {
this.setData({ packages: res.data });
}
})
},
handleBack() {
wx.navigateBack({
fail: () => wx.switchTab({ url: '/pages/my/my' }),
})
},
handlePackageTap(e: WechatMiniprogram.TouchEvent) {
const id = e.currentTarget.dataset.id
const selectedPackage = this.data.packages.find((item: CoinPackage) => item.id === id) || this.data.selectedPackage
this.setData({
selectedPackage,
})
},
handleBuy() {
const that = this;
if (that.data.selectedPackage == null) {
return;
}
wx.showLoading({ title: '处理中, 请稍后.', mask: true });
wx.checkSession({
success() {
that.payment();
},
fail() {
wx.login({
success(login) {
updatesessionkey(login.code).then((res: any) => {
if (!res.code) {
that.payment();
} else {
wx.showModal({
title: '温馨提示',
content: res.message,
showCancel: false
})
}
})
}
})
wx.hideLoading();
}
})
},
payment() {
let that = this;
diamondVirtualPayment((that.data.selectedPackage || { id: 0 }).id).then((res: any) => {
wx.requestVirtualPayment({
signData: JSON.stringify(res.param.signData),
paySig: res.param.paySig,
signature: res.param.signature,
mode: res.param.mode,
success(result: any) {
wx.hideLoading();
console.log(result)
userInfo().then((res: any) => {
if (!res.code) {
wx.setStorageSync('userInfo', res.data);
that.setData({ userInfo: res.data });
}
})
},
fail(error: any) {
wx.hideLoading();
console.log(error);
wx.showModal({
title: '温馨提示',
content: '支付失败',
showCancel: false
})
}
});
}).catch(() => {
wx.hideLoading();
wx.showModal({
title: '温馨提示',
content: '系统繁忙, 请稍后再试',
showCancel: false
})
})
}
})