236 lines
8.2 KiB
JavaScript
236 lines
8.2 KiB
JavaScript
// 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)
|
|
wx.pageScrollTo({
|
|
scrollTop: 0,
|
|
duration: 300
|
|
})
|
|
},
|
|
//切换支付方式
|
|
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
|
|
})
|
|
}
|
|
}
|
|
}) |