vue微信支付
Vue微信支付详细描述
前言在实际的开发过程中,需要集成微信支付功能来实现在线支付。下面我们将一步步地讲解如何在Vue项目中实现微信支付。
一、监测用户是否授权首先,我们需要检查用户是否已经授权了微信公众号。可以通过以下方式进行检测:
```javascript// created() {
// 检查用户是否授权 wx.checkJsApi({
jsApiList: ['chooseWXPay'],
success: function(res) {
console.log('已授权');
},
fail: function(err) {
console.log('未授权');
}
});
// }
```
二、根据openId判断如果用户已经授权,我们需要根据openId来判断是否有支付记录。如果没有支付记录,则需要跳转到支付页面。
```javascript// created() {
// 检查用户是否授权 wx.checkJsApi({
jsApiList: ['chooseWXPay'],
success: function(res) {
console.log('已授权');
let oid = this.$route.query.oid;
if (oid) {
// 有支付记录,跳转到支付页面 this.$router.push({ path: '/payment', query: { oid } });
} else {
// 无支付记录,跳转到支付页面 this.$router.push({ path: '/payment' });
}
},
fail: function(err) {
console.log('未授权');
}
});
// }
```
三、获取openId如果用户没有支付记录,我们需要通过后台接口获取openId。
```javascript// created() {
// 检查用户是否授权 wx.checkJsApi({
jsApiList: ['chooseWXPay'],
success: function(res) {
console.log('已授权');
let oid = this.$route.query.oid;
if (!oid) {
// 无支付记录,获取openId this.getOpenId();
} else {
// 有支付记录,跳转到支付页面 this.$router.push({ path: '/payment', query: { oid } });
}
},
fail: function(err) {
console.log('未授权');
}
});
// }
// getOpenId() {
// 获取openId wx.login({
success: function(res) {
if (res.code) {
// 发送请求获取openId this.$axios.post('/api/getOpenId', { code: res.code })
.then((response) => {
let data = response.data;
console.log(data);
// 存储openId localStorage.setItem('openid', data.openid);
// 跳转到支付页面 this.$router.push({ path: '/payment' });
})
.catch((error) => {
console.error(error);
});
} else {
console.log('登录失败!');
}
},
fail: function(err) {
console.log('获取openId失败!');
}
});
// }
```
四、支付页面如果用户有支付记录或者获取了openId,我们需要跳转到支付页面。
```javascript// created() {
// 检查用户是否授权 wx.checkJsApi({
jsApiList: ['chooseWXPay'],
success: function(res) {
console.log('已授权');
let oid = this.$route.query.oid;
if (oid) {
// 有支付记录,跳转到支付页面 this.$router.push({ path: '/payment', query: { oid } });
} else {
// 无支付记录,获取openId this.getOpenId();
}
},
fail: function(err) {
console.log('未授权');
}
});
// }
// payment.vue
export default {
// 支付页面逻辑}
```
五、支付接口最后,我们需要在后台接口中实现支付功能。
```javascript// api.jsimport axios from 'axios';
const api = axios.create({
baseURL: '/api',
});
api.interceptors.push({
request(config) {
// 添加请求头 config.headers['Authorization'] = 'Bearer ' + localStorage.getItem('token');
return config;
},
});
export default api;
```
```javascript// payment.jsimport api from './api';
export function pay(oid, amount) {
return api.post('/payment', { oid, amount });
}
```
通过以上步骤,我们可以在Vue项目中实现微信支付功能。