| # Developing against a stripe test account |
|
|
| ## Prerequisites |
|
|
| This guide assumes that you have the secret key available (starts with `sk_test`). |
|
|
| You have the stripe cli installed on your computer. |
|
|
| Before executing the following commands, please make sure that you are specifying the `--stripe-disable-webhook-registration` command line argument to the `Server` component (see (.vscode/launch.json)[../.vscode/launch.json]). This is required as OpenMeter would create a new webhook for your service on the stripe side. We are going to rely on the stripe cli instead, so that we don't clutter the test account's webhook list. |
|
|
| ## Setting up stripe |
|
|
| Please start the server using the `--stripe-disable-webhook-registration` arguments. |
|
|
| Register the stripe app (replace the `sk_test_***` with your API key): |
|
|
| ```sh |
| # curl -H "Content-Type: application/json" -X POST -d '{"apiKey": "sk_test_***", "name": "stripe"}' http://127.0.0.1:8000/api/v1/marketplace/listings/stripe/install/apikey |
| {"app":{"createdAt":"2025-02-03T14:13:23.276159Z","default":true,"description":"Stripe account ***","id":"01JK62H967WX20W9E6RNS05E80","listing":{"capabilities":[{"description":"Process payments","key":"stripe_collect_payment","name":"Payment","type":"collectPayments"},{"description":"Calculate tax for a payment","key":"stripe_calculate_tax","name":"Calculate Tax","type":"calculateTax"},{"description":"Invoice a customer","key":"stripe_invoice_customer","name":"Invoice Customer","type":"invoiceCustomers"}],"description":"Send invoices, calculate tax and collect payments.","name":"Stripe","type":"stripe"},"livemode":false,"maskedAPIKey":"sk_test_***QpT","metadata":null,"name":"stripe","status":"ready","stripeAccountId":"acct_1OSLCsE98Y117at0","type":"stripe","updatedAt":"2025-02-03T14:13:23.276165Z"},"defaultForCapabilityTypes":["calculateTax","invoiceCustomers","collectPayments"]} |
| ``` |
|
|
| ## Receiving webhooks |
|
|
| > You might need to log in to your stripe test account using `stripe login -i --api-key sk_test_***` before using this command |
| |
| To start receiving stripe webhooks you will need the stripe cli. Start it in event listening more: |
| |
| ```sh |
| stripe listen -l --forward-to http://127.0.0.1:8000/api/v1/apps/01JK62H967WX20W9E6RNS05E80/stripe/webhook |
| ``` |
| |
| The output should look something like this: |
| ``` |
| > Ready! You are using Stripe API Version [2025-01-27.acacia]. Your webhook signing secret is whsec_c67e0e4f97227eb66ca026a4fcd9124923035ff778a1945601d109756ca707f4 (^C to quit) |
| ``` |
| |
| The last thing needs to be done is to update the signing secret for the stripe app: |
| ```sh |
| psql -h 127.0.0.1 -U postgres postgres |
| UPDATE app_stripes set webhook_secret = 'whsec_c67e0e4f97227eb66ca026a4fcd9124923035ff778a1945601d109756ca707f4' |
| ``` |
| |
| ## Creating a stripe enabled customer |
| |
| First let's create the customer: |
| |
| ```sh |
| curl -X POST http://127.0.0.1:8000/api/v1/customers \ |
| -H 'Content-Type: application/json' \ |
| --data-raw ' |
| { |
| "name": "test", |
| "usageAttribution": { |
| "subjectKeys": [ |
| "test" |
| ] |
| }, |
| "currency": "USD", |
| "billingAddress": { |
| "country": "US" |
| } |
| }' |
| ``` |
| |
| Response: |
| ```json |
| {"billingAddress":{"country":"US"},"createdAt":"2025-02-03T14:25:03.154256Z","currency":"USD","id":"01JK636MNJ1R9NKFA2VS62HVTF","metadata":null,"name":"test","updatedAt":"2025-02-03T14:25:03.154257Z","usageAttribution":{"subjectKeys":["test"]}} |
| ``` |
| |
| Then let's bind it to a stripe customer: |
| ```sh |
| curl -X PUT http://127.0.0.1:8000/api/v1/customers/01JK636MNJ1R9NKFA2VS62HVTF/apps \ |
| -H 'Content-Type: application/json' \ |
| --data-raw '[ |
| { |
| "type": "stripe", |
| "stripeCustomerId": "cus_****" |
| } |
| ] |
| ' |
| ``` |
| |