Skip to main content

Stripe

Fancified

Stripe for fancy-flow — as four imported, versioned packages, one per runtime. Not vendored source: a copy cannot be upgraded, and third-party APIs change.

Runtime Package Install
Authoring surface (every host) @particle-academy/stripe-ui npm install @particle-academy/stripe-ui
Node @particle-academy/stripe-js npm install @particle-academy/stripe-js
PHP 8.4+ particle-academy/stripe-php composer require particle-academy/stripe-php
Python 3.11+ fancy-stripe pip install fancy-stripe

The ui package is the editor surface and is React on every host — a PHP or Python project installs it and its own runtime package, and never the js one.

What it costs you

One dependency: @particle-academy/fancy-connector-core (or particle-academy/fancy-connector-core on Composer), which the js and php packages pull in themselves. The Python package has zero runtime dependencies.

No Stripe SDK. Plain HTTP, deliberately: a vendor SDK is third-party code subject to the kit's full approval bar, and one per provider is hundreds of dependencies nobody is tracking.

Setting it up

Everything below is generated from provider/manifest.json, so it cannot disagree with what the packages do.

Credentials

A Stripe connection holds 2 values.

Every value here is account scope: one per connected account, not one per installation.

Field Scope Secret Where it comes from
Secret key per connected account secret sk_test_... for the test estate, sk_live_... for the real ledger. The key -- not the URL -- decides which one you reach.
Webhook signing secret (optional) per connected account secret whsec_... from the endpoint you added in the Stripe dashboard. Required only by the webhook trigger.

The estate

Stripe decides live-or-test by the KEY, not by the endpoint. The same host serves both, and a live key pointed at a node marked “sandbox” reaches the real estate and SUCCEEDS. Nothing in the request distinguishes them, which is why credentials sit on the connection rather than on each node.

Stripe's test estate is selected by the KEY, not the URL -- api.stripe.com serves both. A live key sent to a node whose mode says "sandbox" reaches the real ledger and succeeds. Nothing in the request distinguishes them, which is exactly why credentials sit on the connection rather than on twelve separate nodes.

What it can do

Actions

customer_create — Stripe customer

Create a Stripe customer.

POST /v1/customers · unsafe to replay — a retried durable run does it TWICE

Input Required What it is
email yes Email
name no Name
phone no Phone
metadata no Metadata

payment_intent_create — Stripe payment

Create a Stripe PaymentIntent — take a payment.

POST /v1/payment_intents · unsafe to replay — a retried durable run does it TWICE

Input Required What it is
amount yes In the currency's smallest unit — 1000 is $10.00. Stripe has no decimal amounts.
currency no Currency
customer no Customer
description no Description
receiptEmail no Receipt email
metadata no Sent to Stripe as metadata[key]=value. The usual way to find this payment again later.

refund_create — Stripe refund

Refund a Stripe payment, in full or in part.

POST /v1/refunds · unsafe to replay — a retried durable run does it TWICE

Input Required What it is
paymentIntent yes The pi_… to refund. Usually carried forward from a Stripe payment node.
amount no In the currency's smallest unit. Leave empty to refund the whole payment.
reason no Stripe accepts only these three values. Anything else is rejected at the API.
metadata no Metadata

Triggers

webhook — Stripe event

Start when Stripe reports an event.

Delivered by webhook, and the signature is verified before anything runs.

You have to set this up with the provider first:

Add an endpoint in the Stripe dashboard (or via POST /v1/webhook_endpoints) pointing at the route your host mounts for this trigger, then put the endpoint's signing secret on the connection as webhookSecret.

Run it before you have credentials

Every operation ships a faker, whether or not Stripe has a sandbox. Set a node's mode to fake and it returns the shape Stripe actually publishes — the same field names, deterministically — so you can wire the downstream nodes before touching an account, a key, or a network.

This repository is generated

provider/ is the source. Everything under packages/ is emitted from it and must not be hand-edited — CI regenerates and diffs on every push, and the next protocol sync destroys anything it finds. See AGENTS.md.

Two namespaces, which do not match on purpose

The repo is github.com/Fancy-Friends/stripe; the packages publish under particle-academy. Nothing derives one from the other — the names come from weaver's friends.json and nowhere else.

Licence

MIT.

Metadata

Release files for fancy-stripe 0.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fancy-stripe 0.3.5
File Size Uploaded
fancy_stripe-0.3.5.tar.gz 24.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fancy-stripe 0.3.5
File Interpreter ABI Platform
fancy_stripe-0.3.5-py3-none-any.whl Python 3 none any Details

Total release size: 51.3 kB

Release files / fancy_stripe-0.3.5.tar.gz

Download URL fancy_stripe-0.3.5.tar.gz
Size 24.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b4920d801946be56484daeab966a120f463c093a99c8133664ebed9adf9643f9
BLAKE2b-256 checksum
How to use checksums
ce77b01416ef46e64d5bb0130deb04794e6d6f7f375eb56f55e3a0a9e64f0300
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / fancy_stripe-0.3.5-py3-none-any.whl

Download URL fancy_stripe-0.3.5-py3-none-any.whl
Size 26.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7fbf835dbf27df88f5a825ec12dcbe858ee621d4d8321ec780254e41458e658a
BLAKE2b-256 checksum
How to use checksums
a28b14a7d2306f58db91542138e7e768526f5236edcabed5dbc64d24c8cc99a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

This release

0.3.5 This release

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page