diff --git a/packages/backend/src/apps/stripe/auth/index.ts b/packages/backend/src/apps/stripe/auth/index.ts index d2d74554..f25205f1 100644 --- a/packages/backend/src/apps/stripe/auth/index.ts +++ b/packages/backend/src/apps/stripe/auth/index.ts @@ -2,30 +2,30 @@ import verifyCredentials from "./verify-credentials"; import isStillVerified from "./is-still-verified"; export default { - fields: [ - { - key: 'secretKey', - label: 'Secret Key', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: null, - clickToCopy: false, - }, - { - key: 'displayName', - label: 'Account Name', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: 'The display name that identifies this stripe connection - most likely the associated account name', - clickToCopy: false, - }, - ], - verifyCredentials, - isStillVerified + fields: [ + { + key: 'secretKey', + label: 'Secret Key', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + description: null, + clickToCopy: false, + }, + { + key: 'displayName', + label: 'Account Name', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + description: 'The display name that identifies this stripe connection - most likely the associated account name', + clickToCopy: false, + }, + ], + verifyCredentials, + isStillVerified }; \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/auth/verify-credentials.ts b/packages/backend/src/apps/stripe/auth/verify-credentials.ts index 21320635..1297d9df 100644 --- a/packages/backend/src/apps/stripe/auth/verify-credentials.ts +++ b/packages/backend/src/apps/stripe/auth/verify-credentials.ts @@ -1,13 +1,9 @@ import { IGlobalVariable } from '@automatisch/types'; const verifyCredentials = async ($: IGlobalVariable) => { - try { - await $.http.get( - `/v1/events`, - ); - } catch (e) { - throw new Error('Invalid secret key') - } + await $.http.get( + `/v1/events`, + ); await $.auth.set({ screenName: $.auth.data?.displayName, }); diff --git a/packages/backend/src/apps/stripe/common/add-auth-header.ts b/packages/backend/src/apps/stripe/common/add-auth-header.ts index ba6b13cc..2e393e9c 100644 --- a/packages/backend/src/apps/stripe/common/add-auth-header.ts +++ b/packages/backend/src/apps/stripe/common/add-auth-header.ts @@ -1,8 +1,8 @@ import {TBeforeRequest} from "@automatisch/types"; const addAuthHeader: TBeforeRequest = ($, requestConfig) => { - requestConfig.headers['Authorization'] = `Bearer ${$.auth.data?.secretKey}` - return requestConfig + requestConfig.headers['Authorization'] = `Bearer ${$.auth.data?.secretKey}` + return requestConfig } export default addAuthHeader; \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/common/get-balance-transactions.ts b/packages/backend/src/apps/stripe/common/get-balance-transactions.ts deleted file mode 100644 index 16777cb3..00000000 --- a/packages/backend/src/apps/stripe/common/get-balance-transactions.ts +++ /dev/null @@ -1,34 +0,0 @@ -import {IGlobalVariable, IJSONObject} from "@automatisch/types"; -import {URLSearchParams} from "url"; -import {isEmpty, omitBy} from "lodash"; - -const getBalanceTransactions = async ($: IGlobalVariable) => { - let response; - let lastId = undefined; - - do { - const params: IJSONObject = { - starting_after: lastId, - ending_before: $.flow.lastInternalId - } - const queryParams = new URLSearchParams(omitBy(params, isEmpty)) - const requestPath = `/v1/balance_transactions${ - queryParams.toString() ? `?${queryParams.toString()}` : '' - }`; - - response = (await $.http.get(requestPath)).data - for (const entry of response.data) { - $.pushTriggerItem({ - raw: entry, - meta: { - internalId: entry.id as string - } - }) - lastId = entry.id - } - } while (response.has_more) - - return $.triggerOutput; -}; - -export default getBalanceTransactions; \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/common/get-payouts.ts b/packages/backend/src/apps/stripe/common/get-payouts.ts deleted file mode 100644 index c699b7e6..00000000 --- a/packages/backend/src/apps/stripe/common/get-payouts.ts +++ /dev/null @@ -1,34 +0,0 @@ -import {IGlobalVariable, IJSONObject} from "@automatisch/types"; -import {URLSearchParams} from "url"; -import {isEmpty, omitBy} from "lodash"; - -const getPayouts = async ($: IGlobalVariable) => { - let response; - let lastId = undefined; - - do { - const params: IJSONObject = { - starting_after: lastId, - ending_before: $.flow.lastInternalId - } - const queryParams = new URLSearchParams(omitBy(params, isEmpty)) - const requestPath = `/v1/payouts${ - queryParams.toString() ? `?${queryParams.toString()}` : '' - }`; - - response = (await $.http.get(requestPath)).data - for (const entry of response.data) { - $.pushTriggerItem({ - raw: entry, - meta: { - internalId: entry.id as string - } - }) - lastId = entry.id - } - } while (response.has_more) - - return $.triggerOutput; -}; - -export default getPayouts; \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/index.ts b/packages/backend/src/apps/stripe/index.ts index 3bc30057..505f13bf 100644 --- a/packages/backend/src/apps/stripe/index.ts +++ b/packages/backend/src/apps/stripe/index.ts @@ -4,16 +4,16 @@ import auth from "./auth" import triggers from "./triggers" export default defineApp({ - name: 'Stripe', - key: 'stripe', - iconUrl: '{BASE_URL}/apps/stripe/assets/favicon.svg', - authDocUrl: 'https://automatisch.io/docs/apps/stripe/connection', - supportsConnections: true, - baseUrl: 'https://stripe.com', - apiBaseUrl: 'https://api.stripe.com', - primaryColor: '635bff', - beforeRequest: [addAuthHeader], - auth, - triggers, - actions: [], + name: 'Stripe', + key: 'stripe', + iconUrl: '{BASE_URL}/apps/stripe/assets/favicon.svg', + authDocUrl: 'https://automatisch.io/docs/apps/stripe/connection', + supportsConnections: true, + baseUrl: 'https://stripe.com', + apiBaseUrl: 'https://api.stripe.com', + primaryColor: '635bff', + beforeRequest: [addAuthHeader], + auth, + triggers, + actions: [], }) \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/triggers/balance-transaction/get-balance-transactions.ts b/packages/backend/src/apps/stripe/triggers/balance-transaction/get-balance-transactions.ts new file mode 100644 index 00000000..d70f1bfe --- /dev/null +++ b/packages/backend/src/apps/stripe/triggers/balance-transaction/get-balance-transactions.ts @@ -0,0 +1,32 @@ +import {IGlobalVariable, IJSONObject} from "@automatisch/types"; +import {URLSearchParams} from "url"; +import {isEmpty, omitBy} from "lodash"; + +const getBalanceTransactions = async ($: IGlobalVariable) => { + let response; + let lastId = undefined; + + do { + const params: IJSONObject = { + starting_after: lastId, + ending_before: $.flow.lastInternalId + } + const queryParams = new URLSearchParams(omitBy(params, isEmpty)) + const requestPath = `/v1/balance_transactions${ + queryParams.toString() ? `?${queryParams.toString()}` : '' + }`; + + response = (await $.http.get(requestPath)).data + for (const entry of response.data) { + $.pushTriggerItem({ + raw: entry, + meta: { + internalId: entry.id as string + } + }) + lastId = entry.id + } + } while (response.has_more) +}; + +export default getBalanceTransactions; \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/triggers/balance-transaction/index.ts b/packages/backend/src/apps/stripe/triggers/balance-transaction/index.ts index 8afa282c..3043eecc 100644 --- a/packages/backend/src/apps/stripe/triggers/balance-transaction/index.ts +++ b/packages/backend/src/apps/stripe/triggers/balance-transaction/index.ts @@ -1,12 +1,12 @@ import defineTrigger from "../../../../helpers/define-trigger"; -import getBalanceTransactions from "../../common/get-balance-transactions"; +import getBalanceTransactions from "./get-balance-transactions"; export default defineTrigger({ - name: 'Balance Transaction', - key: 'balanceTransaction', - description: 'Triggers when a new transaction is processed (refund, payout, adjustment, ...)', - pollInterval: 15, - async run($) { - await getBalanceTransactions($) - } + name: 'New Balance Transactions', + key: 'balanceTransaction', + description: 'Triggers when a new transaction is processed (refund, payout, adjustment, ...)', + pollInterval: 15, + async run($) { + await getBalanceTransactions($) + } }) \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/triggers/payouts/get-payouts.ts b/packages/backend/src/apps/stripe/triggers/payouts/get-payouts.ts new file mode 100644 index 00000000..8791f89a --- /dev/null +++ b/packages/backend/src/apps/stripe/triggers/payouts/get-payouts.ts @@ -0,0 +1,32 @@ +import {IGlobalVariable, IJSONObject} from "@automatisch/types"; +import {URLSearchParams} from "url"; +import {isEmpty, omitBy} from "lodash"; + +const getPayouts = async ($: IGlobalVariable) => { + let response; + let lastId = undefined; + + do { + const params: IJSONObject = { + starting_after: lastId, + ending_before: $.flow.lastInternalId + } + const queryParams = new URLSearchParams(omitBy(params, isEmpty)) + const requestPath = `/v1/payouts${ + queryParams.toString() ? `?${queryParams.toString()}` : '' + }`; + + response = (await $.http.get(requestPath)).data + for (const entry of response.data) { + $.pushTriggerItem({ + raw: entry, + meta: { + internalId: entry.id as string + } + }) + lastId = entry.id + } + } while (response.has_more) +}; + +export default getPayouts; \ No newline at end of file diff --git a/packages/backend/src/apps/stripe/triggers/payouts/index.ts b/packages/backend/src/apps/stripe/triggers/payouts/index.ts index a982559e..2226a591 100644 --- a/packages/backend/src/apps/stripe/triggers/payouts/index.ts +++ b/packages/backend/src/apps/stripe/triggers/payouts/index.ts @@ -1,12 +1,12 @@ import defineTrigger from "../../../../helpers/define-trigger"; -import getPayouts from "../../common/get-payouts"; +import getPayouts from "./get-payouts"; export default defineTrigger({ - name: 'Payout', - key: 'payout', - description: 'Triggers when a payout (Stripe <-> Bank account) has been updated', - pollInterval: 15, - async run($) { - await getPayouts($) - } + name: 'New Payouts', + key: 'payout', + description: 'Triggers when a payout (Stripe <-> Bank account) has been updated', + pollInterval: 15, + async run($) { + await getPayouts($) + } }) \ No newline at end of file diff --git a/packages/docs/pages/apps/stripe/connection.md b/packages/docs/pages/apps/stripe/connection.md index 738520ce..0cd174eb 100644 --- a/packages/docs/pages/apps/stripe/connection.md +++ b/packages/docs/pages/apps/stripe/connection.md @@ -9,6 +9,6 @@ You are free to use the **Testing secret key** instead of the productive secret ::: 1. Go to the [Stripe Dashboard > Developer > API keys](https://dashboard.stripe.com/apikeys) -2. Click on **Reveal live key** in the table row **Secret key** and copy the now shown secret key 3 +2. Click on **Reveal live key** in the table row **Secret key** and copy the now shown secret key 3. Paste the **Secret key** in the named field in Automatisch and assign a display name for the connection. 4. Congrats! You can start using the new Stripe connection! diff --git a/packages/docs/pages/apps/stripe/triggers.md b/packages/docs/pages/apps/stripe/triggers.md index 92466ef9..dea401bf 100644 --- a/packages/docs/pages/apps/stripe/triggers.md +++ b/packages/docs/pages/apps/stripe/triggers.md @@ -1,11 +1,11 @@ --- favicon: /favicons/stripe.svg items: - - name: Payout + - name: New Payouts desc: Triggers when stripe sent a payout to a third-party bank account or vice versa. org: Stripe Documentation orgLink: https://stripe.com/docs/api/payouts/object - - name: Balance Transaction + - name: New Balance Transactions desc: Triggers when a fund has been moved through your stripe account. org: Stripe Documentation orgLink: https://stripe.com/docs/api/balance_transactions/object