Servicio CustomerStripe en Strapi
El servicio customerStripe permite interactuar con la API de Stripe para gestionar clientes de manera eficiente. Este servicio proporciona dos funciones clave: buscar clientes por correo electrónico y crear nuevos clientes en Stripe.
const CustomerStripe = require("stripe");const customerStripeu = new CustomerStripe.Stripe( process.env.STRAPI_ADMIN_STRIPE_SECRET_KEY, { apiVersion: "2024-04-10" });export interface CustomerService { searchEmail(customer_email: string): Promise<any>; createCustomer( country: string, name: string, phone: number, customer_email: string ): Promise<any>;}const CustomerService: CustomerService = { async searchEmail(customer_email: string): Promise<any> { const customer_id: any = await customerStripeu.customers.search({ query: `email:'${customer_email}'`, }); return customer_id; }, async createCustomer( country: string, name: string, phone: number, customer_email: string ): Promise<any> { const customer: any = await customerStripeu.customer.create({ address: { country, }, name, phone, email: customer_email, }); return customer; },};export default CustomerService;Primero, el código importa el paquete stripe para interactuar con la API, permitiendo crear clientes y gestionar pagos. Se configura el cliente de Stripe con una clave secreta obtenida de las variables de entorno y se especifica una versión fija de la API (2024-04-10) para garantizar estabilidad y evitar problemas con futuras actualizaciones.
const CustomerStripe = require("stripe");const customerStripeu = new CustomerStripe.Stripe( process.env.STRAPI_ADMIN_STRIPE_SECRET_KEY, { apiVersion: "2024-04-10" });Aquí se define una interfaz CustomerService para TypeScript. Es un contrato que especifica qué métodos debe implementar el servicio CustomerService.
export interface CustomerService { searchEmail(customer_email: string): Promise<any>; createCustomer( country: string, name: string, phone: number, customer_email: string ): Promise<any>;}Método searchEmail
Este método busca un cliente en Stripe basándose en el correo electrónico proporcionado. Se utiliza el parámetro customer_email (de tipo string) para realizar la búsqueda mediante la función await customerStripeu.customers.search({ query: email:'${customer_email}' }), la cual emplea la API de Stripe para encontrar clientes que coincidan con el correo dado. El resultado de esta búsqueda incluye detalles del cliente, como su ID en Stripe, y se devuelve a través de return customer_id.
async searchEmail(customer_email: string): Promise<any> { const customer_id: any = await customerStripeu.customers.search({ query: `email:'${customer_email}'`, }); return customer_id;}Método createCustomer
Este método crea un nuevo cliente en Stripe utilizando la información proporcionada, recibiendo los parámetros: país (country), nombre (name), teléfono (phone) y correo electrónico (customer_email). A través de la línea await customerStripeu.customer.create(), se llama al método de creación de clientes de la API de Stripe, enviando un objeto que incluye la dirección (especificando solo el país), el nombre, el teléfono y el correo electrónico del cliente. Finalmente, se devuelve el cliente recién creado, que incluirá un ID generado por Stripe y otros detalles adicionales del cliente.
async createCustomer(country: string, name: string, phone: number, customer_email: string): Promise<any> { const customer: any = await customerStripeu.customer.create({ address: { country }, name, phone, email: customer_email }); return customer;}