smartmeter-app/page_user/wxpay.vue
2024-04-27 17:20:50 +08:00

178 lines
3.6 KiB
Vue

<template>
<view class="paycont">
<u-navbar title="支付订单" :border-bottom="false" :background="bgc" title-color='#2E4975' title-size='36'
height='36'></u-navbar>
<view class="pay_info">
<view class="info">
订单编号:{{orderid}}
</view>
<view class="price">
{{realprice}}
</view>
</view>
<view class="pat_type">
<view class="type_li">
<view class="left">
<image src="https://api.ccttiot.com/smartmeter/img/static/uLRBM81zYsXyVbk9ImT1" mode="" class="payimg"></image>
<view class="txt">
微信支付
</view>
</view>
<view class="right">
<image src="https://api.ccttiot.com/smartmeter/img/static/uaUP6IjcGUln23kZJJK3" mode=""></image>
</view>
</view>
</view>
<view class="patBtn" @click="payBtn()">
确认支付
</view>
</view>
</template>
<script>
export default{
data(){
return{
bgc: {
backgroundColor: "#F7FAFE",
},
orderid:'',
realprice:0,
payinfo:{}
}
},
onLoad(options) {
console.log(options);
this.orderid=options.orderid
this.realprice=options.price
this.getpayinfo()
},
methods:{
getpayinfo(){
let id =this.orderid
this.$u.get("/app/pay/wx/"+id).then((res) => {
if (res.code == 200) {
console.log(res,'resres');
this.payinfo=res.data
}
});
},
payBtn() {
let payinfo=this.payinfo
uni.requestPayment({
provider: 'wxpay',
timeStamp: payinfo.timeStamp,
nonceStr: payinfo.nonceStr,
package: payinfo.packageVal,
signType: payinfo.signType,
paySign: payinfo.paySign,
success(res) {
// 支付成功逻辑
uni.navigateBack({
delta: 1 // 返回上级页面
});
},
fail(err) {
// 支付失败逻辑
uni.showToast({
title: '支付失败',
icon: 'none',
duration: 2000
});
}
});
},
}
}
</script>
<style lang="scss" >
page{
background: #F7FAFE;
}
.paycont{
// display: flex;
// justify-content: center;
// flex-wrap: wrap;
.pay_info{
margin-top: 100rpx;
display: flex;
flex-wrap: wrap;
justify-content: center;
.price{
font-weight: 600;
font-size: 72rpx;
color: #3D3D3D;
line-height: 72rpx;
}
.info{
width: 100%;
text-align: center;
margin-bottom: 10rpx;
font-weight: 400;
font-size: 24rpx;
color: #808080;
line-height: 24rpx;
}
}
.pat_type{
display: flex;
flex-wrap: wrap;
margin: 80rpx auto;
// margin-left: ;
width: 654rpx;
background: #FFFFFF;
border-radius:20rpx;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42,130,228,0.1);
.type_li{
width: 100%;
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
padding-left: 72rpx;
padding-right: 46rpx;
height: 110rpx;
.left{
display: flex;
flex-wrap: nowrap;
align-items: center;
image{
width: 40rpx;
height: 34rpx;
}
}
.right{
margin-left: auto;
image{
width: 32rpx;
height: 32rpx;
}
}
}
}
.patBtn{
margin: 0 auto;
display: flex;
margin-top: 600rpx;
align-items: center;
justify-content: center;
width: 590rpx;
height: 84rpx;
background: #2A82E4;
border-radius: 50rpx;
font-weight: 400;
font-size: 36rpx;
color: #FFFFFF
}
}
</style>