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 🙏

© 2025 – Pkg Stats / Ryan Hefner

firestore-liqpay-node-client

v0.4.0

Published

A Node.js client for the firestore-liqpay-payments Firebase Extension

Readme

firestore-liqpay-node-client

This package helps you integrate your Firebase Cloud Functions app with the firestore-liqpay-payments extension. It simplifies all the usual Firestore queries and other database operations needed to use the extension. Additionally, it offers type definitions for all the common object types used by the extension during payment processing.

Example usage

Initialize the Client

Ensure you have initialized the Firebase Admin SDK as described here.

Then create a new instance of the FirestoreLiqpayClient class and configure the client to use the same Firestore collections you configured the extension to use.

import { FirestoreLiqpayClient } from "firestore-liqpay-node-client";
const client = new FirestoreLiqpayClient({
  // The name of the Firestore collection where invoices are stored, it should 
  // match the value of the `INVOICES_COLLECTION` parameter you set when 
  // configuring the extension.
  invoicesCollection: "invoices", 
  // The name of the Firestore collection where checkout sessions are stored, 
  // it should match the value of the `SESSIONS_COLLECTION` parameter you set
  // when configuring the extension.
  sessionsCollection: "sessions",
});

Place a new invoice to initiate a payment

To place a new invoice and initiate a payment, call the placeInvoice method on the PaymentsClient client instance. The method returns a CheckoutSession object that contains the URL of the payment page where the user can complete the payment.

const client = FirestoreLiqpayClient.createDefault();

// Invoice here is your custom object that you use to track the payment, 
// it could be an order object or any other object that you want to associate
// with the payment.
const invoice = createInvoice();

try {
  const invoiceId: string = 
    await client.payments.placeInvoice(invoice.toDatabaseObject());
  console.log("Invoice placed successfully", invoiceId);
} catch (error) {
  console.error("Failed to place invoice", error);
}

Wait for the Checkout Session to be created

Ensure that the waitForCheckoutSession method is called in a different Node.js event loop iteration after placing the invoice. This is because the firestore-liqpay-payments extension listens to Firestore events that trigger after the invoice is placed and the event loop is freed up.

const client = FirestoreLiqpayClient.createDefault();

try {
  const session: CheckoutSession = 
    await client.payments.waitForCheckoutSession(invoiceId);
  // Redirect the user to the payment page URL to complete the Checkout
  console.log("Payment Page URL:", session.paymentPageURL);
} catch (error) {
  console.error("Failed to find checkout session", error);
}

Dependencies

  • Firebase Admin SDK (firebase-admin)