ts_aimz/pages/copyright/payment/payment.js

232 lines
8.1 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)
},
//切换支付方式
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
})
}
}
})