@dbbs/strapi-stripe-payment
Version:
Strapi integration plugin for Stripe payment system
81 lines (80 loc) • 2.93 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const strapi_1 = require("@strapi/strapi");
const http_errors_1 = __importDefault(require("http-errors"));
exports.default = strapi_1.factories.createCoreService('plugin::stripe-payment.product', ({ strapi }) => ({
async create(params) {
const { name } = params;
const product = await strapi.plugin('stripe-payment').service('stripe').products.create({
name
});
const savedProduct = await strapi.query('plugin::stripe-payment.product').create({
data: {
name,
stripe_id: product.id
}
});
return savedProduct;
},
async getProductById(params) {
const { id } = params;
const product = await strapi.query('plugin::stripe-payment.product').findOne({
where: { id },
populate: ['plans']
});
return product;
},
async getProducts() {
const stripeProducts = await strapi.plugin('stripe-payment').service('stripe').products.list();
const stripeProductIds = stripeProducts.data.map((product) => product.id);
const products = await strapi.query('plugin::stripe-payment.product').findMany({
where: {
stripe_id: {
$in: stripeProductIds
}
},
populate: ['plans']
});
return products;
},
async update(params) {
const { name, id } = params;
const product = await strapi.query('plugin::stripe-payment.product').findOne({ where: { id } });
if (!product) {
return null;
}
await strapi.plugin('stripe-payment').service('stripe').products.update(product.stripe_id, {
name
});
const updatedProduct = await strapi.query('plugin::stripe-payment.product').update({
where: { id },
data: {
name
}
});
return updatedProduct;
},
async delete(params) {
const { id } = params;
const product = await strapi.query('plugin::stripe-payment.product').findOne({
where: { id },
populate: {
plans: true
}
});
if (!product) {
return null;
}
if (product.plans && product.plans.length > 0) {
throw new http_errors_1.default.BadRequest('You cannot delete a product with plans');
}
await strapi.plugin('stripe-payment').service('stripe').products.update(product.stripe_id, {
active: false
});
await strapi.query('plugin::stripe-payment.product').delete({ where: { id } });
return { id };
}
}));