@shopify/shopify-app-remix
Version:
Shopify Remix - to simplify the building of Shopify Apps with Remix
49 lines (45 loc) • 1.68 kB
JavaScript
;
var shopifyApi = require('@shopify/shopify-api');
require('@remix-run/server-runtime');
var redirectToAuthPage = require('../helpers/redirect-to-auth-page.js');
var invalidateAccessToken = require('../../helpers/invalidate-access-token.js');
require('isbot');
require('../../../types.js');
var helpers = require('./helpers.js');
function requestBillingFactory(params, request, session) {
return async function requestBilling({ plan, isTest, returnUrl, ...overrides }) {
const { api, logger } = params;
logger.info('Requesting billing', {
shop: session.shop,
plan,
isTest,
returnUrl,
});
let result;
try {
result = await api.billing.request({
plan: plan,
session,
isTest,
returnUrl,
returnObject: true,
...overrides,
});
}
catch (error) {
if (error instanceof shopifyApi.HttpResponseError && error.response.code === 401) {
logger.debug('API token was invalid, redirecting to OAuth', {
shop: session.shop,
});
await invalidateAccessToken.invalidateAccessToken(params, session);
throw await redirectToAuthPage.redirectToAuthPage(params, request, session.shop);
}
else {
throw error;
}
}
throw helpers.redirectOutOfApp(params, request, result.confirmationUrl, session.shop);
};
}
exports.requestBillingFactory = requestBillingFactory;
//# sourceMappingURL=request.js.map