// pages/copyright/payment/payment.js import PayService from '../../../net/api/payApi'; const app = getApp() Page({ /** * 页面的初始数据 */ data: { imgAssets: app.globalData.imgAssetsUrl, localAssets: app.globalData.localAssets, paySumOptions: [100, 300, 500, 1000, 2000, 5000], currentTab: 0, //充值金额选项 payMoney: 100, //支付金额 currentBagTab: 'MATERIAL', //当前套餐包tab bagList: [], //套餐包列表 payWay: 1, //支付方式 1微信 2对公 showError: false, errorHint: '', showSuccess: false, successHint: '', listLoading: 'loading', selectBag: {}, //选中的套餐包 }, onLoad(options) { const _self = this wx.setNavigationBarColor({ frontColor: '#000000', // 必写项,字体颜色仅支持#ffffff和#000000 backgroundColor: '#F0F0F0', // 传递的颜色值,仅支持十六进制颜色 animation: { // 可选项 duration: 500, timingFunc: 'easeIn' } }) _self.doGetPackageList(_self.data.currentBagTab) }, doRefreshList() { this.doGetPackageList(this.data.currentBagTab) }, //获取可以购买的套餐包 doGetPackageList(path) { const _self = this _self.setData({ listLoading: 'loading' }) const data = { page: 1, rows: 20 } PayService.doGetBuyPackageList(path, data) .then(res => { wx.hideLoading() console.log(res) _self.setData({ listLoading: res.rows && res.rows.length > 0 ? 'success' : 'empty' }) _self.setData({ bagList: res.rows }) }, err => { wx.hideLoading() console.log(err) _self.setData({ listLoading: 'error' }) _self.setData({ showError: true, errorHint: '不好意思,没能获取到套餐数据。请您再试一次,相信马上就能看到啦。' }) }) }, //监听充值金额选项 doChangePayMoney(e) { this.setData({ payMoney: e.currentTarget.dataset.value, selectBag: {}, currentTab: e.currentTarget.dataset.index }) }, //监听充值金额变化 obMoney(e) { var _self = this const inputValue = e.detail.value const regex = /^[+-]?(\d+(\.\d*)?|\.\d+)$/; if (inputValue != '') { if (regex.test(inputValue)) { //数字 _self.setData({ payMoney: e.detail.value, selectBag: {}, currentTab: -1 }) } else { wx.showToast({ title: '请输入数字', icon: 'error', success: () => { setTimeout(() => { _self.setData({ payMoney: 100, selectBag: {} }) }, 1000); } }) } } }, //切换套餐包 doChangeBagTab(e) { this.setData({ currentBagTab: e.currentTarget.dataset.value }) this.doGetPackageList(this.data.currentBagTab) }, //切换支付方式 doChangePayWay(e) { console.log(e) this.setData({ payWay: e.currentTarget.dataset.value }) }, //选中套餐包 chooseBag(e) { console.log(e) const _self = this const selItem = e.currentTarget.dataset.value _self.setData({ payMoney: selItem.packageMoney / 100, currentTab: -1, selectBag: selItem }) wx.pageScrollTo({ scrollTop: 0, duration: 300 }) }, //调用微信支付 toWeChatPay() { const _self = this wx.showLoading({ title: '支付中...', }) const data = { rechargeMoney: _self.data.payMoney, packageInfoId: _self.data.selectBag.packageInfoId ? _self.data.selectBag.packageInfoId : '' } PayService.doGetWxPayParams(data) .then(res => { wx.hideLoading() console.log(res) if (res && res.paySign && res.paySign != '') { wx.requestPayment({ nonceStr: res.nonceStr, package: `prepay_id=${res.prepayId}`, paySign: res.paySign, timeStamp: res.timeStamp + '', signType: 'RSA', success: res => { if (res.errMsg && res.errMsg == 'requestPayment:ok') { _self.setData({ successHint: '恭喜,您的充值已成功到账!', showSuccess: true }) setTimeout(() => { wx.navigateBack() }, 2000); } else { _self.setData({ errorHint: '很抱歉,本次充值失败,可能是网络不稳定或支付信息有误,请检查后重试。', showError: true }) } }, fail: err => { console.log('失败') console.log(err) var hint = '很抱歉,本次充值失败,可能是网络不稳定或支付信息有误,请检查后重试。' if (err && err.errMsg && err.errMsg == 'requestPayment:fail cancel') { //主动取消 hint = '本次支付已被您主动取消。若您改变主意,重新支付流程很便捷哦。' } _self.setData({ errorHint: hint, showError: true }) }, complete: () => { } }) } else { _self.setData({ errorHint: err.msg ? err.msg : '很抱歉,本次充值失败,可能是网络不稳定或支付信息有误,请检查后重试。', showError: true }) } }) .catch(err => { wx.hideLoading() console.log(err) _self.setData({ errorHint: err.msg ? err.msg : '很抱歉,本次充值失败,可能是网络不稳定或支付信息有误,请检查后重试。', showError: true }) }) }, //去支付 doPay() { const _self = this //判断钱大于0 if (_self.data.payMoney > 0) { if (_self.data.payWay == '1') { //微信 _self.toWeChatPay() } else { //对公 需要传递参数 选中套餐 or 直接冲钱 const id = _self.data.selectBag.packageInfoId const name = _self.data.selectBag.packageName wx.redirectTo({ url: '/pages/copyright/publicPay/publicPay?packageId=' + id + '&name=' + name + '&money=' + _self.data.payMoney, }) } } else { //显示输入金额提示 _self.setData({ errorHint: '请输入要充值的金额', showError: true }) } } })