[内网]文化云交易前端H5
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.
 
 
 
 
 
 

263 lines
8.1 KiB

<template>
<view class="container">
<view class="item-pay">
<view class="item-pay-con">
<view class="item-pay-con-ti">选择支付方式</view>
<button class="item-pay-con-bu" :class="{'item-pay-con-bu-show': payType === items.value}" v-for="items in payTypeArr" @click="changePayType(items.value)">{{items.title}}</button>
</view>
<view class="item-pay-con">
<view class="item-pay-con-ti">
认证缴费订单
</view>
<view class="item-pay-con-tab">
<uni-table ref="table" :loading="loading" border stripe emptyText="暂无更多数据">
<uni-tr>
<uni-th width="140" align="center">订单号</uni-th>
<uni-th width="120" align="center">姓名</uni-th>
<uni-th align="center">订单金额</uni-th>
</uni-tr>
<uni-tr v-for="(item, index) in tableList" :key="index">
<uni-td>{{ item.pay_no }}</uni-td>
<uni-td>
<view class="name">认证缴费订单</view>
</uni-td>
<uni-td align="center">{{ item.address }}</uni-td>
</uni-tr>
</uni-table>
<view class="uni-pagination-box"><uni-pagination show-icon :page-size="pageSize" :current="pageCurrent" :total="total" @change="change" /></view>
</view>
</view>
</view>
<view class="item-pay">
<image class="item-pay-img" v-if="is_show_img" :src="pay_image"></image>
<text class="item-pay-prompt" v-if="is_show_img">请扫码支付</text>
<button class="item-pay-sub" :disabled="isDisabled" @click="handlerPay">确认支付</button>
</view>
</view>
</template>
<script>
import * as GoodsApi from '@/api/goods'
import uniTable from "@/uni_modules/uni-table/components/uni-table/uni-table"
import uniTr from "@/uni_modules/uni-table/components/uni-tr/uni-tr"
import uniTh from "@/uni_modules/uni-table/components/uni-th/uni-th"
import uniTd from "@/uni_modules/uni-table/components/uni-td/uni-td"
import uniPagination from "@/uni_modules/uni-pagination/components/uni-pagination/uni-pagination"
export default {
name: "payment",
components: {
'uni-table': uniTable,
'uni-tr': uniTr,
'uni-th': uniTh,
'uni-td': uniTd,
'uni-pagination': uniPagination,
},
data () {
return {
tableList: [],
payTypeArr: [
{
title: '网银支付',
value: 15
},{
title: '支付宝',
value: 12
},
],
payType: 15,
loading: false,
selectedIndexs: [],
pageSize: 10, // 每页数据量
pageCurrent: 1, // 当前页
total: 0, // 数据总量
good_money: 0, // 交易金额
isDisabled: false, // 按钮禁用
is_show_img: false, // 显示图片
pay_image: '', // 显示图片
}
},
onLoad() {
this.selectedIndexs = []
this.getTableList()
},
methods: {
// 切换支付类型
changePayType(val) {
this.payType = val
},
// 分页触发
change(e) {
this.$refs.table.clearSelection()
this.selectedIndexs.length = 0
this.getData(e.current)
},
// 获取订单列表
getTableList(pageNo = 1) {
const app = this
let param = {
userid : uni.getStorageSync("accountId"),
isok : 2,
}
return new Promise((resolve, reject) => {
GoodsApi.paymentList(param).then(res => {
if (res.resultCode === "00000000") {
app.tableList = res.data
//app.good_money = res.data[0].paysum
} else {
app.$error(res.errMsg);
}
resolve()
}).catch(reject)
})
},
// 确认支付
handlerPay () {
const app = this
let shopnameArr = []
let shop_price_arr = []
app.tableList.forEach((item) => {
shopnameArr.push = item.pay_no
shop_price_arr.push = item.paysum
})
let shopname = shopnameArr.join(',')
let shop_price = shop_price_arr.join(',')
let new_shop_Name = ''
let Merchant_id = uni.getStorageSync("Merchant_id") // 商户id
let accountId = uni.getStorageSync("accountId") // 用户isli
//计算交易金额
let manyMony = 0;
manyMony = (Number(app.good_money * 100)).toFixed(0);
let payment = {
amount: manyMony, //交易金额
app_id: Merchant_id, //发送请求的公司id
body: "认证缴费订单", //订单描述
businesstype: 1001, //交易类型1001-销售收款,2001-消费付款
ordernumber: shopname, //订单号
paymenttypeid: app.payType, //12支付宝,13微信 15 网银支付
subpaymenttypeid: app.payType, //12支付宝,13微信 15 网银支付
businesstime: app.getDayTimer(new Date()),
buyer: accountId, //客户(买方) 用户isli
chargeuptype: 2, //收支类型1-收入2-支出,
goodsname: "认证缴费订单", //商品名称
orderamount: manyMony, //订单金额(单位分)
payorderid: shopname, //交易流水号
price: shop_price, //商品单价(单位分)
seller: accountId, //商户(卖方)
settlementamount: manyMony, //结算金额(分)
settlementtype: 2, //结算方式:1-转账充值;2-内部转账
totalqty: 1 //商品数量
}
if (new_shop_Name == "") {
app.isDisabled = true
payment.body = encodeURIComponent(payment.body, "ut-8")
payment.goodsname = encodeURIComponent(payment.goodsname, "ut-8")
//确认支付接口
let paramArr = '';
for (let key in payment) {
paramArr.push(key + '=' + payment[key])
}
let paramStr = '?' + paramArr.join('&')
GoodsApi.certificationPay(paramStr).then(res => {
if (res.resultCode == '00000000') {
if (app.payType != 15) {
app.is_show_img = true
app.pay_image = res.data.qrcodeurl
} else {
app.$success('支付成功')
this.getTableList()
}
}
})
} else {
app.$error(new_shop_Name + "无法购买")
}
},
//转换时间
getDayTimer (data) {
let date = new Date(data)
let y = date.getFullYear()
let m = date.getMonth() + 1
m = m < 10 ? ('0' + m) : m
let d = date.getDate()
d = d < 10 ? ('0' + d) : d
let currentdate = y + '-' + m + '-' + d;
let hh = date.getHours()
hh = hh < 10 ? ('0' + hh) : hh
let mm = date.getMinutes()
mm = mm < 10 ? ('0' + mm) : mm
let ss = date.getSeconds()
ss = ss < 10 ? ('0' + ss) : ss
let time = hh + ':' + mm + ':' + ss;
return currentdate + " " + time
},
}
}
</script>
<style lang="scss" scoped>
.container {
width: 100%;
.item-pay {
.item-pay-con {
margin-top: 30rpx;
padding-top: 30rpx;
.item-pay-con-ti {
height: 50rpx;
margin-left: 20rpx;
padding-left: 10px;
border-left: #407ac4 10rpx solid;
display: flex;
align-items: center;
text-align: center;
}
.item-pay-con-bu {
width: 200rpx;
margin-top: 30rpx;
margin-left: 50rpx;
border-radius: 15rpx;
display: inline-block;
border: #e5e5e5 1rpx solid;
background-color: #e5e5e5;
}
.item-pay-con-bu-show {
background-color: #defedc;
}
}
.item-pay-sub {
color: #ffffff;
margin-top: 200rpx;
background-color: #407ac4;
}
.item-pay-img {
width: 200px;
height: 200px;
margin-top: 15%;
margin-left: 25%;
background-color: #eeeeee;
}
.item-pay-prompt {
display: block;
text-align: center;
color: red;
}
}
}
</style>