123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- // pages/payment/payment.js
- const app = getApp();
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- paymentInfo: [{
- id: ''
- }],
- amount: '',
- amountTags: [50, 100, 150, 200],
- debtInfo: {},
- activeAmount: '',
- amountTip: '请输入金额',
- numberFormat: app.$util.numberFormat
- },
- setAmount(e) {
- const {
- value
- } = e.target.dataset;
- this.setData({
- amount: value || e.detail.value,
- activeAmount: value || ''
- })
- },
- toOtherPage(e) {
- const {
- url
- } = e.target.dataset;
- wx.navigateTo({
- url: `/pages/payment/${url}/${url}`,
- })
- },
- submit() {
- const {amount} = this.data;
- if(!amount) {
- wx.showToast({
- title: '请输入金额',
- icon:'none',
- duration: 2000
- })
- return;
- }
- if(!(/^\d{1,8}$|^\d{1,6}[.]\d{1,2}$/.test(amount))) {
- wx.showToast({
- title: '输入金额格式有误',
- icon:'none',
- duration: 2000
- })
- return;
- }
- if(amount < this.data.debtInfo.totalDebt) {
- wx.showToast({
- title: '缴费金额不能低于累计欠费金额,请重新输入',
- icon:'none',
- duration: 2000
- })
- return;
- }
- const self = this;
- app.$http.get('/user/getOrderInfo', {
- payfee: amount
- }).then(({status, data = {}}) => {
- if(status == 0) {
- const {nonceStr, outTradeNo, packages, paySign, signType, timeStamp} = data
- wx.requestPayment({
- timeStamp, // 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间
- nonceStr, // 随机字符串,长度为32个字符以下。
- package: packages, // 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*
- signType, // 签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致
- paySign, // 签名,具体签名方案参见微信公众号支付帮助文档;
- success: function (res) {
- app.$http.get('/user/payFee', {
- fee: amount,
- customerCode: self.data.debtInfo.accountNumber,
- outTradeNo
- }).then(({status, data = {}, msg}) => {
- if(status == 0) {
- wx.showToast({
- title: msg,
- icon: 'success',
- duration: 2000
- })
- } else {
- wx.showToast({
- title: msg,
- icon:'none',
- duration: 2000
- })
- }
- self.getDebtInfo();
- }).catch(() => {
- wx.showToast({
- title: '缴费失败',
- icon:'none',
- duration: 2000
- })
- })
- },
- fail: function (res) {
- if(res.errMsg == "requestPayment:fail cancel") return;
- wx.showToast({
- title: '缴费失败',
- icon:'none',
- duration: 2000
- })
- }
- })
- }
- })
- },
- getLastPayRecord() {
- app.$http.get('/user/getLastPayRecord').then(({status, data = {}}) => {
- if(status == 0) {
- data.fee = app.$util.numberFormat(data.fee, 2);
- this.setData({
- amountTip: `上次缴费金额${data.fee || 0}元`
- })
- }
- })
- },
- // GET /user/getDebtInfo
- getDebtInfo() {
- app.showLoading();
- app.$http.get('/user/getDebtInfo').then(({status, data = {}}) => {
- if(status == 0) {
- const totalDebt = JSON.parse(JSON.stringify(data.totalDebt));
- data.receFee = app.$util.numberFormat(data.receFee, 2);
- data.totalDebt = app.$util.numberFormat(data.totalDebt, 2);
- this.setData({
- debtInfo: data,
- amount: totalDebt || ''
- })
- if(totalDebt == 0) {
- this.getLastPayRecord();
- }
- }
- app.hideLoading();
- }).catch(() => {
- app.hideLoading();
- })
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- this.getDebtInfo();
- },
- })
|