一 安装二维码生成器
npm install [email protected]
二 配置插件
创建 plugins/vue-qriously-plugin.js
import Vue from 'vue'
import VueQriously from 'vue-qriously'
Vue.use(VueQriously)
nuxt.config.js中配置
plugins: [
{ src: '~/plugins/vue-qriously-plugin.js', ssr: false }
]
三 api
创建 api/pay.js
import request from '~/utils/request'
export default {
createNative(orderNo) {
return request({
baseURL: 'http://localhost:8170',
url: `/api/trade/weixin-pay/create-native/${orderNo}`,
method: 'get'
})
}
}
四 订单页面
html
<el-button :disabled="!agree" type="danger" @click="toPay()">去支付</el-button>
脚本
methods: {
toPay() {
if (this.agree) {
this.$router.push({ path: '/pay/' + this.order.orderNo })
}
}
}
五 支付页面
创建pages/pay/_id.vue
<template>
<div class="cart py-container">
<!--主内容-->
<div class="checkout py-container pay">
<div class="checkout-tit" style="width: 1050px; margin: 0 auto; padding: 10px 0;">
<h4 class="fl tit-txt"><span class="success-info">支付申请提交成功,请您及时付款!订单号:{
{ payObj.out_trade_no }}</span>
</h4>
<span class="fr"><em class="sui-lead">应付金额:</em><em class="orange money">¥{
{ payObj.total_fee/100 }}</em></span>
<div class="clearfix"/>
</div>
<div class="checkout-steps">
<div class="fl weixin">微信支付</div>
<div class="fl sao">
<div class="fl code">
<qriously :value="payObj.code_url" :size="338"/>
<p style="color: red; text-align:center;">请使用微信扫一扫</p>
</div>
</div>
<div class="clearfix"/>
<!-- <p><a href="pay.html" target="_blank">> 其他支付方式</a></p> -->
</div>
</div>
</div>
</template>
<script>
import payApi from '~/api/pay'
import orderApi from '~/api/order'
export default {
// 在服务器端获取二维码url
async asyncData(page) {
const response = await payApi.createNative(page.route.params.id)
return {
payObj: response.data
}
}
}
</script>