UNPKG

commerce-vuex

Version:
107 lines (93 loc) 4.16 kB
import { auth, nav } from 'oak-vuex' const { getHubAuthHeader } = auth const { wrapRequest, wrapRequestWithRange } = nav const hubName = process.env.VUE_APP_RETAINHUB_NAME const oakTradeApiUrl = process.env.VUE_APP_RETAINHUB_COMMERCE_API_URL const stripeAPIUrl = process.env.VUE_APP_STRIPE_API_URL const stripeSecretKey = process.env.VUE_APP_STRIPE_SECRET_KEY import { JSONToURLEncoded } from './common.service' const doFetchList = wrapRequestWithRange(({ appId, nameLike, limit, offset }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', 'Prefer': 'count=exact', ...getHubAuthHeader(hubName) }, }; const params = { app_id:`eq.${appId}`, limit: limit || 50, offset: offset || 0 } if (nameLike) params['name'] = `ilike.*${nameLike}*` const qs = Object.keys(params).map(key => key + '=' + params[key]).join('&'); return fetch(`${oakTradeApiUrl}/subscription?${qs}`, requestOptions) }) const doPostOne = wrapRequest((subscription) => { const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(subscription) }; return fetch(`${oakTradeApiUrl}/subscription`, requestOptions) }) const doPatchOne = wrapRequest((subscription) => { const requestOptions = { method: 'PATCH', headers: { 'Content-Type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', 'Prefer': 'return=representation', ...getHubAuthHeader(hubName) }, body: JSON.stringify(subscription) }; return fetch(`${oakTradeApiUrl}/subscription?id=eq.${subscription.id}`, requestOptions) }) const doFetchOne = wrapRequest(({subscriptionId,appId}) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', 'Accept': 'application/vnd.pgrst.object+json', ...getHubAuthHeader(hubName) }, }; return fetch(`${oakTradeApiUrl}/subscription?id=eq.${subscriptionId}&app_id=eq.${appId}`, requestOptions); }) const doDeleteSelected = wrapRequest((subscriptionId) => { const requestOptions = { method: 'DELETE', headers: { 'Content-Type': 'application/json' }, }; return fetch(`${oakTradeApiUrl}/subscription?id=in.(${subscriptionId})`, requestOptions) }) const doFetchSubscribeList = wrapRequest(({ customerId }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', 'Authorization' : 'Bearer '+ stripeSecretKey }, }; return fetch(`${stripeAPIUrl}/v1/subscriptions?customer=${customerId}`, requestOptions); }) // stripe invoices based on subscripion const doFetchLatestInvoice = wrapRequest(({ latestInvoiceId }) => { const requestOptions = { method: 'GET', headers: { 'Content-type': 'application/json', 'Authorization' : 'Bearer '+ stripeSecretKey }, }; return fetch(`${stripeAPIUrl}/v1/invoices/${latestInvoiceId}`, requestOptions); }) // stripe pay invoices based on subscripion latest invoice const doPayInvoice = wrapRequest(({ invoiceId }) => { const requestOptions = { method: 'POST', headers: { 'Content-type': 'application/json', 'Authorization' : 'Bearer '+ stripeSecretKey }, }; return fetch(`${stripeAPIUrl}/v1/invoices/${invoiceId}/pay`, requestOptions); }) const doPostStripeSubscriptionOne = wrapRequest(({ subscription }) => { let formBody = JSONToURLEncoded(subscription); const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'Authorization' : 'Bearer '+ stripeSecretKey }, body: formBody }; return fetch(`${stripeAPIUrl}/v1/subscriptions`, requestOptions); }) export default { doFetchOne, doFetchList, doPostOne, doPatchOne, doDeleteSelected, doFetchSubscribeList, doFetchLatestInvoice, doPayInvoice, doPostStripeSubscriptionOne }