opnform/resources/js/pages/settings/billing.vue

60 lines
1.4 KiB
Vue
Raw Normal View History

2022-09-20 19:59:52 +00:00
<template>
<div>
<h3 class="font-semibold text-2xl text-gray-900">
Billing details
</h3>
<template v-if="user.has_customer_id">
<small class="text-gray-600">Manage your billing. Download invoices, update your plan, or cancel it at any
time.</small>
<div class="mt-4">
<v-button color="gray" shade="light" :loading="billingLoading" @click.prevent="openBillingDashboard">
Manage Subscription
</v-button>
</div>
</template>
<app-sumo-billing class="mt-4" />
</div>
2022-09-20 19:59:52 +00:00
</template>
<script>
import axios from 'axios'
import VButton from '../../components/common/Button.vue'
import SeoMeta from '../../mixins/seo-meta.js'
import { mapGetters } from 'vuex'
import AppSumoBilling from '../../components/vendor/appsumo/AppSumoBilling.vue'
2022-09-20 19:59:52 +00:00
export default {
components: { AppSumoBilling, VButton },
mixins: [SeoMeta],
scrollToTop: false,
2022-09-20 19:59:52 +00:00
data: () => ({
metaTitle: 'Billing',
2022-09-20 19:59:52 +00:00
billingLoading: false
}),
methods: {
openBillingDashboard () {
2022-09-20 19:59:52 +00:00
this.billingLoading = true
axios.get('/api/subscription/billing-portal').then((response) => {
const url = response.data.portal_url
window.location = url
2023-10-12 10:06:03 +00:00
}).catch((error) => {
this.alertError(error.response.data.message)
2022-09-20 19:59:52 +00:00
}).finally(() => {
this.billingLoading = false
})
}
},
computed: {
...mapGetters({
user: 'auth/user'
})
2022-09-20 19:59:52 +00:00
}
}
</script>