在mian.js 中统一引入接口
//统一引入
import * as API from '@/api';
new Vue({
render: (h) => h(App),
//全局事件总线$bus配置
beforeCreate() {
Vue.prototype.$bus = this;
Vue.prototype.$API =API
= },
接口
//提交订单的接口
//URL:/api/order/auth/submitOrder?tradeNo={tradeNo} method:post
export const reqSubmitOrder = (tradeNo, data) =>
requests({
url: `/order/auth/submitOrder?tradeNo=${tradeNo}`,
data,
method: "post",
});
vue 文件中
<div class="sub clearFix">
<a class="subBtn" @click="submitOrder">提交订单</a>
</div>
<script>
export default {
data() {
return {
//订单号
orderId: "",
};
},
methods: {
//提交订单
async submitOrder() {
//交易编码
let { tradeNo } = this.orderInfo;
//其余的六个参数
let data = {
consignee: this.userDefaultAddress.consignee, //最终收件人的名字
consigneeTel: this.userDefaultAddress.phoneNum, //最终收件人的手机号
deliveryAddress: this.userDefaultAddress.fullAddress, //收件人的地址
paymentWay: "ONLINE", //支付方式
orderComment: this.msg, //买家的留言信息
orderDetailList: this.orderInfo.detailArrayList, //商品清单
};
//需要带参数的:tradeNo
let result = await this.$API.reqSubmitOrder(tradeNo, data);
//提交订单成功
if (result.code == 200) {
this.orderId = result.data;
//路由跳转 + 路由传递参数
this.$router.push('/pay?orderId='+this.orderId);
//提交的订单失败
} else {
alert(result.data);
}
},
}
}
</script>
支付组件里
<span class="fl">请您在提交订单<em class="orange time">4小时</em
>之内完成支付,超时订单会自动取消。订单号:<em>{{orderId}}</em></span
<span class="fr"><em class="lead">应付金额:</em>
<em class="orange money">¥{{ payInfo.totalFee }}</em></span>
<div class="submit">
<a class="btn" @click="open">立即支付</a>
</div>
data() {
return {
payInfo: {},
};}
computed: {
orderId() {
//计算订单号
return this.$route.query.orderId;
},
//工作的时候:尽量别再生命周期函数中async|await
mounted() {
this.getPayInfo();
},
methods: {
//获取支付信息
async getPayInfo() {
let result = await this.$API.reqPayInfo(this.orderId);
//如果成功:组件当中存储支付信息
if (result.code == 200) {
this.payInfo = result.data;
}
}
获取支付信息接口
//获取支付信息
//URL:/api/payment/weixin/createNative/{orderId} GET
export const reqPayInfo = (orderId) =>
requests({ url: `/payment/weixin/createNative/${orderId}`, method: "get" });