import { createStoreBindings } from 'mobx-miniprogram-bindings' import { store } from '~/store/index' import { getProducts, userEvent } from '~/api/global' import { buyVip, androidbuyVip, } from '~/api/user' import event from '~/mixins/event' Page({ behaviors: [event], data: { products: [], product: {}, mask: false }, onLoad() { // 手工绑定 this.storeBindings = createStoreBindings(this, { store, actions: { setUser: 'setUser' } }) }, onShow() { this.getProducts() }, async getProducts() { let { productList: products, } = await getProducts() this.setData({ products, product: products[0] }) }, selected({ currentTarget }) { this.setData({ product: currentTarget.dataset.product }) }, async toBuy() { if (!this.data.active) { return } wx.showLoading({ title: '提交中', mask: true }) // #if MP let res = await buyVip({ productId: this.data.active }).finally(() => { wx.hideLoading() }) userEvent({ action: 'ANDROID_PAY_ACTIVITY', }) let { timeStamp, nonceStr, signType, paySign } = res // package保留字 wx.requestPayment({ timeStamp, nonceStr, package: res.package, signType, paySign, success: async (res) => { setTimeout(() => { this.setUserInfo() this.setData({ mask: true }) }, 1500) userEvent({ action: 'ANDROID_PAY_SUCCESS', }) }, fail(res) { wx.showToast({ title: "支付失败", icon: "none", duration: 3000 }) } }) // #elif ANDROID let res = await androidbuyVip({ productId: this.data.active }).finally(() => { wx.hideLoading() }) wx.miniapp.requestPayment({ timeStamp: res.timestamp, mchId: res.partnerid, prepayId: res.prepayid, package: res.package, nonceStr: res.noncestr, sign: res.sign, success: async (res) => { setTimeout(() => { this.setUserInfo() this.setData({ mask: true }) }, 1500) userEvent({ action: 'ANDROID_PAY_SUCCESS', }) }, fail(res) { wx.showToast({ title: "支付失败", icon: "none", duration: 3000 }) }, complete: (res) => { console.error('wx.miniapp.requestPayment complete:', res) } }) // #endif }, paySuccess() { this.setUserInfo() this.setData({ mask: true }) }, openDonutBuy() { let product = this.data.product console.log(product); this.selectComponent('#donutBuy').open(product) }, // 设置用户信息及vip状态 async setUserInfo() { let userInfo = await getMyInfo() this.setUser(userInfo.user) }, closeMask() { this.setData({ mask: false, }) // this.getWxCode() }, onUnload() { this.storeBindings.destroyStoreBindings(); } })