Skip to content

Feat/one off charge#12

Merged
BenKalsky merged 2 commits into
mainfrom
feat/one-off-charge
May 1, 2026
Merged

Feat/one off charge#12
BenKalsky merged 2 commits into
mainfrom
feat/one-off-charge

Conversation

@BenKalsky
Copy link
Copy Markdown
Member

No description provided.

BenKalsky and others added 2 commits May 2, 2026 01:09
`createSumitChargeRoute` previously hardcoded the recurring endpoint and
required `item.durationMonths`. It now accepts `mode: "recurring" |
"oneOff"` (default `"recurring"` for back-compat). One-off mode:

- Targets `POST /billing/payments/charge/` instead of `/billing/recurring/charge/`.
- Calls `buildOneOffChargePayload` from sumit-api — Items omit
  `Duration_Months` / `Recurrence`.
- Drops the `durationMonths` validation requirement.

Same `<SumitCheckout />`, same `SingleUseToken` — only the route's
`mode` changes.

Switches the response normalizer to the new `normalizeChargeResponse`
alias (was `normalizeRecurringChargeResponse`); behaviour is identical
since the underlying logic always handled both shapes.

3 new tests cover the oneOff happy path, the relaxed durationMonths
requirement, and the still-enforced recurring requirement.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Additive release: createSumitChargeRoute now accepts
mode: "recurring" | "oneOff" (default recurring). Bumps the sumit-api
peer dep to >=0.2.0 because one-off mode imports
buildOneOffChargePayload.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@BenKalsky BenKalsky merged commit 3ff11d5 into main May 1, 2026
1 check passed
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 55a9ef071b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

oneOff: "/billing/payments/charge/",
} as const;

export type SumitChargeMode = "recurring" | "oneOff";
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Export SumitChargeMode from the public next API

SumitChargeMode is declared as an exported type here, but the package’s public ./next entrypoint only exposes types re-exported from src/next/index.ts. Because that barrel was not updated in this change, consumers cannot actually import SumitChargeMode from sumit-react/next, so the new API advertised in this release is not reachable through the supported import path.

Useful? React with 👍 / 👎.

Comment on lines +61 to +63
const mode: SumitChargeMode = config.mode ?? "recurring";
const baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, "");
const path = config.path ?? DEFAULT_PATH;
const path = config.path ?? DEFAULT_PATHS[mode];
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Validate mode before using it to select default endpoint

mode is taken directly from runtime config and used to index DEFAULT_PATHS without a runtime guard. In JavaScript consumers (or TS callers using as any), a typo like "oneoff" makes DEFAULT_PATHS[mode] undefined, so requests are sent to https://api.sumit.co.ilundefined and fail later as opaque upstream errors. Adding an explicit mode check would fail fast with a clear configuration error.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant