LFPay app项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

291 lines
6.8 KiB

<template>
<view style="height:100%">
<!-- <view v-if="!showResult">
<NumBericKeyBoard @getAmount="getAmount"></NumBericKeyBoard>
<payPopup ref="clearPwd" :show.sync="show" @getPassword="getPassword"></payPopup>
</view>
<payResult :show="showResult" :success="success" :number="param.amount"></payResult> -->
<NumBericKeyBoard style="background-color: aliceblue;" @getAmount="getAmount"></NumBericKeyBoard>
<payPopup ref="clearPwd" :show.sync="show" @getPassword="getPassword"></payPopup>
</view>
</template>
<script>
import {
createPay,
createReceive,
createTransfer,
genReceiveCode,
genPayCode
} from '@/api/home/qrcode.js'
import {
getUserAccInfo
} from '@/api/login.js'
import {
checkPwd
} from '@/api/mine/payPwd.js'
import NumBericKeyBoard from '@/components/keyboard/numericKeyboard.vue'
import payPopup from '@/components/keyboard/payPopup.vue'
import payResult from '@/components/payResult/index.vue'
export default {
components: {
NumBericKeyBoard,
payPopup,
payResult
},
data() {
return {
success:true,
show: false,
payee: {
type: null,
userId: null,
phonenumber: null
},
isValidAmount: false,
receiveCodeParam: {
fromId: null,
fromAccount: null
},
payCodeParam: {
toId: null,
toAccount: null
},
param: {
fromId: null,
fromAccount: null,
toId: null, //目标id
toAccount: null, //目标账户
amount: null
},
paramPwd: {
payPasswd: null
},
showResult:false
}
},
onLoad(e) {
this.payee.type = e.type;
if (e.type == "TRANSFER_MONEY") {
//收款人信息 只有在转账时使用
this.payee.userId = e.userId;
this.payee.phonenumber = e.phonenumber;
//付款人信息
this.param.fromId = e.merchantId;
this.param.fromAccount = e.fromAccount;
} else if (e.type == "P") {
//付款人信息
this.param.fromId = e.merchantId;
this.param.fromAccount = e.fromAccount;
} else if (e.type == "R") {
//收款人信息
this.param.toId = e.toId;
this.param.toAccount = e.toAccount;
}
},
created() {
uni.setNavigationBarTitle({
title: this.$languageData.navBar.setAmount
});
},
methods: {
getAmount(data) {
this.param.amount = data;
this.getUserInfo()
},
validateAmount() {
const num = parseFloat(this.amount);
if (isNaN(num) || num <= 0) {
this.errorMessage = '请输入有效的收款金额';
this.isValidAmount = false;
} else {
this.errorMessage = '';
this.isValidAmount = true;
}
},
closeBack(flag) {
// this.showResult = true
let obj = {
number:this.param.amount,
type: flag,
success:true
}
this.param.amount = null
uni.navigateTo({
url: `/components/payResult/indexNew?data=${encodeURIComponent(JSON.stringify(obj))}`
})
// setTimeout(() => {
// uni.switchTab({
// url: '/pages/home/index'
// })
// }, 1000)
},
getUserInfo() {
if (this.payee.type == 'S') {
//设置金额
this.$store.commit('SET_AMOUNT', this.param.amount)
uni.navigateTo({
url: "/pages/account/personalPaymentCode"
})
} else if (this.payee.type == 'TRANSFER_MONEY') {
//转账
//目标id
this.receiveCodeParam.fromId = this.payee.userId;
//目标账号
this.receiveCodeParam.fromAccount = this.payee.accountId;
this.genReceiveCode();
} else {
getUserAccInfo().then(res => {
if (res.code == 200) {
if (this.payee.type == "P") {
//来源id
this.receiveCodeParam.fromId = res.data.userId;
//来源账号
this.receiveCodeParam.fromAccount = res.data.accountId;
this.param.toId = res.data.userId;
this.genReceiveCode();
} else {
//来源
this.payCodeParam.toId = res.data.userId;
//来源账号
this.payCodeParam.toAccount = res.data.accountId;
this.param.fromId = res.data.userId;
//生成付款码
this.genPayCode();
}
} else {
uni.showToast({
title: "获取用户信息异常",
icon: "none",
});
}
})
}
},
genReceiveCode() {
//生成目标账户收款码
console.log("111111111")
genReceiveCode(JSON.stringify(this.receiveCodeParam)).then(res => {
if (res.code == 200) {
this.param.toAccount = res.data;
//调用输入支付密码弹窗
//生成订单
this.submit();
}
})
},
genPayCode() {
//生成来源账户付款码
genPayCode(JSON.stringify(this.payCodeParam)).then(res => {
if (res.code == 200) {
this.param.fromAccount = res.data;
//调用输入支付密码弹窗
this.show = true;
}
})
},
submit() {
if (this.payee.type == 'P') {
//创建扫码付款订单
createPay(JSON.stringify(this.param)).then(res => {
if (res.code == 200) {
uni.showToast({
title: "收款成功",
icon: "none",
});
this.submitOk();
this.closeBack('P');
}else{
this.success = false
this.closeBack('P');
}
})
} else if (this.payee.type == 'TRANSFER_MONEY') {
//创建转账订单
this.param.toId = this.payee.userId;
createTransfer(JSON.stringify(this.param)).then(res => {
if (res.code == 200) {
uni.showToast({
title: "转账成功",
icon: "none",
});
this.submitOk();
this.closeBack('T');
}else{
this.success = false
this.closeBack('T');
}
})
} else {
//创建扫码收款订单
createReceive(JSON.stringify(this.param)).then(res => {
if (res.code == 200) {
uni.showToast({
title: "支付成功",
icon: "none",
});
this.submitOk();
this.closeBack('R');
}else{
this.success = false
this.closeBack('R');
}
})
}
},
//获取用户输入的支付密码
getPassword(data) {
//验证支付密码
this.getChangePwd(data.password);
},
getChangePwd(pwd) {
this.paramPwd.payPasswd = pwd;
//TODO
this.submit()
return;
checkPwd(this.paramPwd).then(res => {
if (res.data != null) {
//支付
this.submit();
} else {
//密码错误
this.$nextTick(() => {
this.$refs.clearPwd.errorPwd();
})
}
})
},
claearPwd() {
//密码重置
this.$nextTick(() => {
this.$refs.clearPwd.clearPwd();
})
},
submitOk(){
//清除密码
this.claearPwd();
//关闭支付密码弹窗
this.show = false;
}
},
}
</script>
<style lang="scss" scoped>
::v-deep .u--input {
font-size: 30px !important;
/* 使用 !important 确保覆盖 */
}
::v-deep .u-form-item__body__left__content__label {
font-size: 30px;
}
</style>