import { createStoreBindings } from 'mobx-miniprogram-bindings' import { store } from '~/store/index' import { getProducts, userEvent } from '~/api/global' import { buyVip, } 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, active: products[0].id, product: products[0] }) }, selected({ currentTarget }) { this.setData({ active: currentTarget.dataset.product.id, product: currentTarget.dataset.product }) }, async toBuy() { if (!this.data.active) { return } wx.showLoading({ title: '提交中', mask: true }) 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 }) } }) }, // 设置用户信息及vip状态 async setUserInfo() { let userInfo = await getMyInfo() this.setUser(userInfo.user) }, closeMask() { this.setData({ mask: false, }) // this.getWxCode() }, onUnload() { this.storeBindings.destroyStoreBindings(); } })