Skip to main content

Create, update and delete stripe webhooks with your app deployment

Project description

cloudcomponents Logo

@cloudcomponents/cdk-stripe-webhook

Build Status cdkdx typescript python

Create, update and delete stripe webhooks with your app deployment

Install

TypeScript/JavaScript:

npm i @cloudcomponents/cdk-stripe-webhook

Python:

pip install cloudcomponents.cdk-stripe-webhook

How to use

EventBus Producer

import { SecretKey, SecretKeyStore } from '@cloudcomponents/cdk-secret-key';
import { StripeWebhook, StripeEventBusProducer } from '@cloudcomponents/cdk-stripe-webhook';
import { Stack, StackProps, aws_ssm } from 'aws-cdk-lib';
import { Construct } from 'constructs';

export class StripeWebhookEventBusStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    if (typeof process.env.SECRET_KEY === 'undefined') {
      throw new Error('environment variable SECRET_KEY undefined');
    }
    const secretKey = SecretKey.fromPlainText(process.env.SECRET_KEY);

    const endpointSecretParameter = aws_ssm.StringParameter.fromSecureStringParameterAttributes(this, 'Param', {
      parameterName: 'stripe',
      version: 1,
    });

    const producer = new StripeEventBusProducer(this, 'Producer', {
      secretKey,
      endpointSecret: SecretKey.fromSSMParameter(endpointSecretParameter),
    });

    const events = ['charge.failed', 'charge.succeeded'];

    const endpointSecretStore = SecretKeyStore.fromSSMParameter(endpointSecretParameter);

    new StripeWebhook(this, 'StripeWebhook', {
      secretKey,
      url: producer.url,
      events,
      logLevel: 'debug',
      endpointSecretStore,
    });
  }
}

Custom Handler

import { SecretKey } from '@cloudcomponents/cdk-secret-key';
import { StripeWebhook } from '@cloudcomponents/cdk-stripe-webhook';
import { Stack, StackProps, aws_apigateway } from 'aws-cdk-lib';
import { Construct } from 'constructs';
export class StripeWebhookStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const api = new aws_apigateway.RestApi(this, 'Endpoint');
    api.root.addMethod('POST');

    if (typeof process.env.SECRET_KEY === 'undefined') {
      throw new Error('environment variable SECRET_KEY undefined');
    }
    const secretKey = SecretKey.fromPlainText(process.env.SECRET_KEY);

    const events = ['charge.failed', 'charge.succeeded'];

    new StripeWebhook(this, 'StripeWebhook', {
      secretKey,
      url: api.url,
      events,
      logLevel: 'debug',
    });
  }
}

API Reference

See API.md.

Example

See more complete examples.

License

MIT

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudcomponents.cdk-stripe-webhook-2.4.0.tar.gz (703.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file cloudcomponents.cdk-stripe-webhook-2.4.0.tar.gz.

File metadata

File hashes

Hashes for cloudcomponents.cdk-stripe-webhook-2.4.0.tar.gz
Algorithm Hash digest
SHA256 04f84d805eda0083d764ae899862050bd95206b44f77e97da5e65e35382649c4
MD5 0d6f78711b64a0f9296f53f124aff630
BLAKE2b-256 47423ac2aa75dfba42dcb254c709733459c55e0ba0d23854dfc209b919c23b19

See more details on using hashes here.

File details

Details for the file cloudcomponents.cdk_stripe_webhook-2.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for cloudcomponents.cdk_stripe_webhook-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9f7b3da8e62c80c662fd684e29e311f6f333815346759128c1ca593133853efb
MD5 c9e03a98721d3988b69ffaa4b05a7cde
BLAKE2b-256 3da2f9eb46a12ca13405ff714f2a55511b0332de9f7ff88e8c80fa337589641a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page