purchases_dart_stripe 1.0.4 copy "purchases_dart_stripe: ^1.0.4" to clipboard
purchases_dart_stripe: ^1.0.4 copied to clipboard

A Stripe store implementation meant to be used with purchases_dart

Purchases Dart Stripe #

This is a Stripe implementation as a payment gateway for purchases_dart, enabling seamless integration of Stripe's payment processing capabilities with your Dart applications while using RevenueCat as the source of truth for unlocked purchases.

Getting Started #

To use this with the purchases_dart package, start by creating a StripeStoreProduct interface.

Use Stripe's Secret API Key for testing only. In production, use [apiClient] to proxy requests without exposing your Stripe secret key or implement [StripeBackendInterface] for custom integration.

// 
StoreProductInterface storeProduct = StripeStoreProduct(
  stripeApiKey: 'STRIPE_API_KEY',
  // Build a checkout session for Stripe. This is called when using the [PurchasesDart.purchasePackage] API to build the checkout URL for a Stripe product.
  // Returns a map or [StripeCheckoutUrlBuilder.build()], with available params detailed at: https://docs.stripe.com/api/checkout/sessions/object
  checkoutSessionsBuilder: (Package package, String stripePriceId) async {
    return StripeCheckoutUrlBuilder(
      successUrl: 'https://example.com/success',
      cancelUrl: 'https://example.com/cancel',
      mode: StripePaymentMode.subscription,
      lineItems: [
        StripeCheckoutLineItem(
          priceId: stripePriceId,
          quantity: 1,
        ),
      ],
    ).build();
  },
  // Launch the Stripe checkout URL in a browser or webView. This is called after generating the URL using params from `checkoutSessionsBuilder`.
  onCheckoutUrlGenerated: (Package package, String sessionId, String url) {
     launchUrlString(url),
  },
  // Optionally, set a customer builder. This is called whenever a new appUserID from RevenueCat is used on Stripe.
  // Stripe will create a new customer for that appUserID. Use this callback to add more parameters to the new customer.
  // Returns a map, with available params at: https://docs.stripe.com/api/customers/create
  stripeNewCustomerBuilder: (userId) async {
    return StripeCustomerBuilder(
        email: 'user@gmail.com',
    ).build();
   },
);

Configure PurchasesDart with this interface:

await PurchasesDart.configure(
  PurchasesDartConfiguration(
    apiKey: env.revenueCatApiKey,
    appUserId: userId,
    storeProduct: storeProduct,
  ),
);

Note #

You have to setup Stripe webhook listener for payment confirmation to update RevenueCat, check out RevenueCat's docs.

Alternatively, you can utilize our firebase_function_stripe example. This provides a demonstration of how to configure Stripe and RevenueCat using Firebase Cloud Functions, with minor modifications, this can also be used as a standalone Node.js server.

Create a Stripe Restricted key with these permissions: Customers: Write, Customer session: Write, Checkout Sessions: Write ,Products: Read, Prices: Read

PurchasesDartStripe uses Stripe APIs to create new customers and identifies them using metadata to store the appUserId from RevenueCat in Stripe. This allows querying these users on Stripe with "query": 'metadata["uid"]:"APP_USER_ID"'. The appUserId serves as the source of truth between RevenueCat and Stripe, ensuring consistent user identification across mobile and other platforms.

0
likes
140
pub points
19%
popularity

Publisher

verified publishernavideck.com

A Stripe store implementation meant to be used with purchases_dart

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

Funding

Consider supporting this project:

github.com

License

MIT (license)

Dependencies

dio, flutter, purchases_dart, purchases_flutter

More

Packages that depend on purchases_dart_stripe