Pagos de suscripción a Stripe y eventos de WebHook

(Donde hay un genio, paso todo el tiempo que otros pasan tomando café en el trabajo. - Lu Xun)

inserte la descripción de la imagen aquí

raya

Stripe fue fundada por dos hermanos, Patrick Collison y John Collison, cuando tenían 20 años. Stripe brinda a las empresas soluciones de pago en línea. Stripe cobra a las empresas que atiende el 2,9% de cada transacción más una tarifa de 30 centavos

Código de ejemplo para suscribirse a eventos de pago y WebHook

  • El pago de la suscripción adopta el SDK oficial proporcionado por Stripe, lo que ahorra el trabajo de desarrollo de la página de pago del front-end
  • Para el envío de eventos, solo agregue la ruta debajo de la cuenta de franja, pero debe seleccionar el tipo de evento correspondiente

Para métodos como el uso del número de tarjeta bancaria de prueba, consulte el número de tarjeta de prueba oficial proporcionado por stripe

import Stripe from 'stripe';

class StripeSubscribeService {
    
    
  // eslint-disable-next-line @typescript-eslint/no-empty-function
  constructor() {
    
    }

  // 获取stripe订阅支付链接
  async getStripeSubscribeUrl() {
    
    
    // stripe账户秘钥
    const STRIPE_ACCOUNT_SK = 'sk_test_xxxxx';
    // stripe支付成功后的重定向页面
    const STRIPE_REDIRECT_DOMAIN = 'http://localhost:8000';
    // 实例化stripe对象
    const stripe = new Stripe(STRIPE_ACCOUNT_SK, {
    
     apiVersion: '2022-11-15' });
    // 获取stripe订阅支付链接
    // 这里直接使用stripe提供的sdk链接
    const result = await stripe.checkout.sessions.create({
    
    
      // 类型固定为支付卡片
      payment_method_types: ['card'],
      // price为stripe账户下产品的价格id
      // quantity为支付的数量
      line_items: [
        {
    
    
          price: 'price_xxxx',
          quantity: 1,
        },
      ],
      // 支付的类型 subscription为订阅支付
      mode: 'subscription',
      // 支付成功后跳转链接 可以是自己前端服务的链接
      success_url: `${
      
      STRIPE_REDIRECT_DOMAIN}/dashboard/setting/subscribe`,
      // 取消支付后跳转链接
      cancel_url: `${
      
      STRIPE_REDIRECT_DOMAIN}/dashboard/setting/subscribe`,
      // 订阅支付的自定义参数,用于后端服务做额外处理,比如记录日志,更改系统内部状态呢个
      subscription_data: {
    
    
        metadata: {
    
    
          name: 'test',
          id: 'testId',
          env: 'local',
        },
      },
    });
    // stripe订阅支付链接
    console.log(result.url);
  }

  async brandSubscribeWebHook(metadata: any) {
    
    
    const env = metadata.env;
    // 在stripe添加webhook事件,每次支付成功后都会发起调用
    // stripe的事件无法做环境区分,所以我们需要在subscription_data中加入环境参数,这样每次收到后可以根据环境进行区分处理
    if (env !== 'local') {
    
    
      console.log('brandSubscribeWebHook env different', {
    
    
        env,
      });
      return;
    }
  }
}

Supongo que te gusta

Origin blog.csdn.net/qq_42427109/article/details/132133495
Recomendado
Clasificación