npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pay-connect

v0.4.0

Published

A module for integrating multiple payment gateways including PayPal, Stripe, GooglePay and Momo.

Downloads

14

Readme

Pay Connect Modules

Are you tired of getting lost in the official documentation for multiple payment gateways? This project provides a unified interface for integrating multiple payment gateways, including PayPal, Stripe, Momo, and Google Pay. It is designed to simplify the process of handling payments in your application.

Features

  • PayPal Integration: Easily manage payments with PayPal using the PaypalGateway class.
  • Stripe Integration: Handle payments through Stripe with the StripeGateway class.
  • Momo Integration: Integrate Momo payment services using the MomoGateway class.
  • Google Pay Integration: Integrate Google Pay services using the GooglePayGateway class.

Installation

To install the payment gateway module, run the following command:

npm install pay-connect

Usage

Importing the Module

You can import the payment gateway module in your application as follows:

import { initializeGateways } from "pay-connect"

Initializing Gateways

You can initialize multiple gateways using the initializeGateways function:

const gatewayConfig = {
  paypal: {
    clientId: "your-client-id",
    clientSecret: "your-client-secret",
    environment: "sandbox", // or "production"
  },
  stripe: {
    apiKey: "your-stripe-secret-key",
    publishableKey: "your-stripe-publish-key",
    webhookConfig: {
      secret: "your-stripe-webhook-secret",
      customHandlers: {
        "customer.subscription.created": async (event) => {
          console.log("Subscription created:", event)
        },
        "customer.subscription.deleted": async (event) => {
          console.log("Subscription deleted:", event)
        },
      },
    },
  },
  googlepay: {
    environment: "TEST",
    paymentRequest: {
      apiVersion: 2,
      apiVersionMinor: 0,
      allowedPaymentMethods: [
        {
          type: "CARD",
          parameters: {
            allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"],
            allowedCardNetworks: ["MASTERCARD", "VISA"],
            billingAddressRequired: true,
          },
          tokenizationSpecification: {
            type: "PAYMENT_GATEWAY",
            parameters: {
              gateway: "example",
              gatewayMerchantId: "exampleGatewayMerchantId",
            },
          },
        },
      ],
      merchantInfo: {
        merchantId: "12345678901234567890",
        merchantName: "Demo Merchant",
      },
      transactionInfo: {
        totalPriceStatus: "FINAL",
        totalPriceLabel: "Total",
        totalPrice: "10.00",
        currencyCode: "USD",
        countryCode: "US",
      },
      callbackIntents: ["PAYMENT_AUTHORIZATION"],
    },
  },
  momo: {
    // Momo configuration
  },
}

const gateways = initializeGateways(
  ["paypal", "stripe", "googlepay", "momo"],
  gatewayConfig,
)

PayPal Example

const paypal = gateways.paypal

// Render checkout button
paypal.renderCheckoutButtons("paypal-button-checkout-container", {
  createOrder: createOrderHandler,
  onApprove: onApproveCheckoutHandler,
})
// Render subscription button
paypal.renderSubscriptionButtons("paypal-button-subscription-container", {
  createSubscription: async () => {
    if (createSubscriptionHandlerRef.current) {
      return await createSubscriptionHandlerRef.current()
    }
    throw new Error("createSubscriptionHandlerRef.current is not defined")
  },
  onApprove: async (data: { subscriptionID?: string | null | undefined }) => {
    if (!data.subscriptionID) {
      throw new Error("Subscription ID is undefined or null")
    }
    await onApproveSubscriptionHandler({
      subscriptionID: data.subscriptionID,
    })
  },
})

Stripe Example

const stripe = gateways.stripe

// Create a charge
stripe.charges.create({
  amount: 2000,
  currency: "usd",
  source: "tok_visa",
  description: "Charge for [email protected]",
})

// Create a subscription
const product = await stripe.products.create({
  name: "Product Name",
  description: "Product Description",
})

const customer = await stripe.customers.create({
  email: "[email protected]",
  name: "Customer Name",
})

const price = await stripe.prices.create({
  unit_amount: 1000,
  currency: "usd",
  product: product.id,
  recurring: { interval: "month" },
})

const session = await stripe.checkout.sessions.create({
  mode: "subscription",
  payment_method_types: ["card"],
  line_items: [
    {
      price: price.id,
      quantity: 1,
    },
  ],
  customer: customer.id,
  success_url: `http://example.com/?success=1`,
  cancel_url: `http://example.com/?canceled=1`,
})

const clientStripe = await stripe.loadStripeClient()
await clientStripe!.redirectToCheckout({
  sessionId: session.id,
})

Momo Example

const momo = new MomoGateway()
momo.startPayment(/* payment details */)

Google Pay Example

const googlePay = gateways.googlepay

// Render Google Pay button
googlePay.renderButton("google-pay-button-container")

PayPal Methods

Initialization Options

When initializing the PaypalGateway, you can pass the following options:

| Option | Type | Description | | -------------- | ------- | ---------------------------------------------- | | clientId | string | Your PayPal client ID | | clientSecret | string | Your PayPal client secret | | environment | string | Environment to use (sandbox or production) | | currency | string | Currency code (default: "USD") | | intent | string | Payment intent (default: "CAPTURE") | | vault | boolean | Vault option (default: false) | | buyerCountry | string | Buyer country code (default: "US") | | locale | string | Locale (default: "en_US") |

Orders

  • createOrder(data: OrderData): Creates a new order.
  • captureOrder(orderID: string): Captures an existing order.

Subscriptions

  • createSubscription(data: SubscriptionData): Creates a new subscription.
  • createPlan(data: PlanData): Creates a new subscription plan.
  • getSubscriptionDetails(subscriptionID: string): Retrieves details of an existing subscription.
  • cancelSubscription(subscriptionID: string, reason: string): Cancels an existing subscription.
  • activateSubscription(subscriptionID: string): Activates an existing subscription.
  • captureSubscription(subscriptionID: string): Captures an existing subscription.
  • suspendSubscription(subscriptionID: string, reason: string): Suspends an existing subscription.
  • reviseSubscription(subscriptionID: string, data: any): Revises an existing subscription.
  • listSubscriptionTransactions(subscriptionID: string, startTime: string, endTime: string): Lists transactions of an existing subscription.

Plans

  • createPlan(data: PlanData): Creates a new subscription plan.
  • getPlanList(): Retrieves a list of subscription plans.
  • getPlanDetails(planID: string): Retrieves details of a subscription plan.
  • updatePlan(planID: string, data: any): Updates an existing subscription plan.
  • updatePlanPricing(planID: string, data: PricingData): Updates the pricing of an existing subscription plan.

Products

  • createProduct(data: ProductData): Creates a new product.
  • getProductList(): Retrieves a list of products.
  • getProductDetails(productId: string): Retrieves details of a product.
  • updateProduct(productId: string, data: any): Updates an existing product.

Google Pay Methods

Initialization Options

When initializing the GooglePayGateway, you can pass the following options:

| Option | Type | Description | | ------------------------------- | -------- | --------------------------------------------------------------- | | environment | string | Environment to use (TEST or PRODUCTION) | | buttonType | string | Type of the Google Pay button (default: "buy") | | buttonColor | string | Color of the Google Pay button (default: "default") | | buttonSizeMode | string | Size mode of the Google Pay button (default: "static") | | existingPaymentMethodRequired | boolean | Whether an existing payment method is required (default: false) | | paymentRequest | object | Payment request configuration object | | onLoadPaymentData | function | Callback function when payment data is loaded | | onCancel | function | Callback function when payment is canceled | | onError | function | Callback function when an error occurs | | onClick | function | Callback function when the button is clicked | | paymentDataCallbacks | object | Callbacks for payment data changes and authorization | | onReadyToPayChange | function | Callback function when the ready-to-pay state changes |

Stripe Methods

Initialization Options

When initializing the StripeGateway, you can pass the following options:

| Option | Type | Description | | ---------------- | ------ | ------------------------------------------------- | | apiKey | string | Your Stripe secret key | | publishableKey | string | Your Stripe publishable key | | apiVersion | string | Stripe API version (default: "2025-02-24.acacia") | | webhookConfig | object | Configuration for Stripe webhooks |

Charges

  • create(data: ChargeData): Creates a new charge.
  • retrieve(chargeID: string): Retrieves an existing charge.
  • capture(chargeID: string): Captures an existing charge.
  • refund(chargeID: string, data: RefundData): Refunds an existing charge.

Customers

  • create(data: CustomerData): Creates a new customer.
  • retrieve(customerID: string): Retrieves an existing customer.
  • update(customerID: string, data: CustomerData): Updates an existing customer.
  • delete(customerID: string): Deletes an existing customer.

Subscriptions

  • create(data: SubscriptionData): Creates a new subscription.
  • retrieve(subscriptionID: string): Retrieves an existing subscription.
  • update(subscriptionID: string, data: SubscriptionData): Updates an existing subscription.
  • cancel(subscriptionID: string): Cancels an existing subscription.

Products

  • create(data: ProductData): Creates a new product.
  • retrieve(productID: string): Retrieves an existing product.
  • update(productID: string, data: ProductData): Updates an existing product.
  • delete(productID: string): Deletes an existing product.

Prices

  • create(data: PriceData): Creates a new price.
  • retrieve(priceID: string): Retrieves an existing price.
  • update(priceID: string, data: PriceData): Updates an existing price.

Payment Methods

  • attach(customerID: string, paymentMethodID: string): Attaches a payment method to a customer.
  • detach(paymentMethodID: string): Detaches a payment method from a customer.

Checkout Sessions

  • create(data: SessionData): Creates a new checkout session.
  • retrieve(sessionID: string): Retrieves an existing checkout session.

Billing Portal Sessions

  • create(data: SessionData): Creates a new billing portal session.

Plans

  • create(data: PlanData): Creates a new plan.
  • retrieve(planID: string): Retrieves an existing plan.
  • update(planID: string, data: PlanData): Updates an existing plan.

Webhooks

  • handleWebhook(req: Request, res: Response): Handles incoming Stripe webhooks.

Utility Methods

  • loadStripeClient(constructorOptions?: StripeConstructorOptions): Loads the Stripe client.