@owlmeans/server-payment 0.1.18-rc.11 → 0.1.18-rc.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +1 -1
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/server-payment/SKILL.md +67 -7
  4. package/build/config.d.ts +15 -1
  5. package/build/config.d.ts.map +1 -1
  6. package/build/config.js +40 -2
  7. package/build/config.js.map +1 -1
  8. package/build/consts.d.ts +10 -0
  9. package/build/consts.d.ts.map +1 -1
  10. package/build/consts.js +10 -0
  11. package/build/consts.js.map +1 -1
  12. package/build/index.d.ts +2 -0
  13. package/build/index.d.ts.map +1 -1
  14. package/build/index.js +1 -0
  15. package/build/index.js.map +1 -1
  16. package/build/model.d.ts.map +1 -1
  17. package/build/model.js +2 -1
  18. package/build/model.js.map +1 -1
  19. package/build/plugins/estimate.d.ts +43 -0
  20. package/build/plugins/estimate.d.ts.map +1 -0
  21. package/build/plugins/estimate.js +235 -0
  22. package/build/plugins/estimate.js.map +1 -0
  23. package/build/plugins/events.d.ts.map +1 -1
  24. package/build/plugins/events.js +17 -4
  25. package/build/plugins/events.js.map +1 -1
  26. package/build/plugins/fx.d.ts +26 -0
  27. package/build/plugins/fx.d.ts.map +1 -0
  28. package/build/plugins/fx.js +56 -0
  29. package/build/plugins/fx.js.map +1 -0
  30. package/build/plugins/portal.d.ts.map +1 -1
  31. package/build/plugins/portal.js +6 -2
  32. package/build/plugins/portal.js.map +1 -1
  33. package/build/plugins/stripe.d.ts +2 -1
  34. package/build/plugins/stripe.d.ts.map +1 -1
  35. package/build/plugins/stripe.js +51 -19
  36. package/build/plugins/stripe.js.map +1 -1
  37. package/build/service.d.ts.map +1 -1
  38. package/build/service.js +6 -0
  39. package/build/service.js.map +1 -1
  40. package/build/sync.d.ts +5 -0
  41. package/build/sync.d.ts.map +1 -1
  42. package/build/sync.js +80 -14
  43. package/build/sync.js.map +1 -1
  44. package/build/types.d.ts +46 -1
  45. package/build/types.d.ts.map +1 -1
  46. package/build/utils.d.ts +3 -1
  47. package/build/utils.d.ts.map +1 -1
  48. package/build/utils.js +3 -1
  49. package/build/utils.js.map +1 -1
  50. package/package.json +16 -16
  51. package/src/config.ts +47 -5
  52. package/src/consts.ts +11 -0
  53. package/src/index.ts +2 -0
  54. package/src/model.ts +2 -1
  55. package/src/plugins/estimate.ts +299 -0
  56. package/src/plugins/events.ts +17 -4
  57. package/src/plugins/fx.ts +93 -0
  58. package/src/plugins/portal.ts +6 -2
  59. package/src/plugins/stripe.ts +55 -19
  60. package/src/service.ts +6 -0
  61. package/src/sync.ts +101 -13
  62. package/src/types.ts +49 -2
  63. package/src/utils.ts +6 -2
  64. package/tests/checkout.spec.ts +118 -2
  65. package/tests/estimate.spec.ts +240 -0
  66. package/tests/events.spec.ts +13 -0
  67. package/tests/fake-stripe.ts +130 -6
  68. package/tests/portal.spec.ts +19 -2
  69. package/tests/sync.spec.ts +114 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/build/utils.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import Stripe from 'stripe';
2
2
  import type { PaymentService } from '@owlmeans/payment';
3
3
  import type { Context as ApiContext } from '@owlmeans/server-api';
4
- import type { CompletionObserver, EntitlementService, FingerprintResource, GatewayService, PaygateCustomerResource, PaymentFulfillmentResource, PaymentSubscriptionRecord, PaymentSubscriptionResource, PaymentUsageCounterResource, PaymentUsageResource, PaymentWebhookResource, PortalBrandingConfig, StripePluginConfig } from './types.js';
4
+ import type { CompletionObserver, EntitlementService, FingerprintResource, GatewayService, PaygateCustomerResource, PaymentFulfillmentResource, PaymentSubscriptionRecord, PaymentSubscriptionResource, PaymentUsageCounterResource, PaymentUsageResource, PaymentWebhookResource, PortalBrandingConfig, StripePluginConfig, StripePricingPluginConfig } from './types.js';
5
5
  export declare const payment: (ctx: ApiContext) => PaymentService;
6
6
  export declare const gateway: (ctx: ApiContext) => GatewayService;
7
7
  export declare const observer: (ctx: ApiContext) => CompletionObserver;
@@ -16,6 +16,8 @@ export declare const fingerprints: (ctx: ApiContext) => FingerprintResource;
16
16
  export declare const stripeConfig: (ctx: ApiContext) => Promise<StripePluginConfig>;
17
17
  /** The portal branding declared with `portalBranding`, or `null`. */
18
18
  export declare const portalBrandingConfig: (ctx: ApiContext) => Promise<PortalBrandingConfig | null>;
19
+ /** The Stripe-only pricing settings declared with `declarePaymentPricing`, or `null`. */
20
+ export declare const stripePricingConfig: (ctx: ApiContext) => Promise<StripePricingPluginConfig | null>;
19
21
  /**
20
22
  * A Stripe client pinned to the API version the installed SDK is typed for (its default), so every
21
23
  * object shape this package reads is the one the types describe.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAI3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMjE,OAAO,KAAK,EACV,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,uBAAuB,EACpG,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,EAClF,2BAA2B,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAC/F,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,OAAO,QAAS,UAAU,KAAG,cAA8D,CAAA;AACxG,eAAO,MAAM,OAAO,QAAS,UAAU,KAAG,cAA8D,CAAA;AACxG,eAAO,MAAM,QAAQ,QAAS,UAAU,KAAG,kBAAuE,CAAA;AAClH,eAAO,MAAM,YAAY,QAAS,UAAU,KAAG,kBACO,CAAA;AAEtD,eAAO,MAAM,gBAAgB,QAAS,UAAU,KAAG,uBACU,CAAA;AAC7D,eAAO,MAAM,aAAa,QAAS,UAAU,KAAG,2BACqB,CAAA;AACrE,eAAO,MAAM,YAAY,QAAS,UAAU,KAAG,0BACoB,CAAA;AACnE,eAAO,MAAM,eAAe,QAAS,UAAU,KAAG,sBACS,CAAA;AAC3D,eAAO,MAAM,WAAW,QAAS,UAAU,KAAG,oBACS,CAAA;AACvD,eAAO,MAAM,aAAa,QAAS,UAAU,KAAG,2BACsB,CAAA;AACtE,eAAO,MAAM,YAAY,QAAS,UAAU,KAAG,mBACa,CAAA;AAO5D,eAAO,MAAM,YAAY,QAAe,UAAU,KAAG,OAAO,CAAC,kBAAkB,CACkC,CAAA;AAEjH,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,QAAe,UAAU,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CACkC,CAAA;AAElI;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAe,UAAU,KAAG,OAAO,CAAC,MAAM,CAA8C,CAAA;AAEjH;;;GAGG;AACH,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,MAO7C,CAAA;AAED,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,OACoB,CAAA;AAEpE,kFAAkF;AAClF,eAAO,MAAM,eAAe,UAAW,OAAO,KAAG,OAGhD,CAAA;AAED,8DAA8D;AAC9D,eAAO,MAAM,IAAI,UAAW,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,KAAG,MAAM,GAAG,SACT,CAAA;AAE1E,8BAA8B;AAC9B,eAAO,MAAM,MAAM,YAAa,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,IAAI,GAAG,SACX,CAAA;AAExD,qGAAqG;AACrG,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,SAAS,CAAC,KAAG,CACgC,CAAA;AAErF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,QACxB,UAAU,YAAY,MAAM,cAAc,MAAM,KACpD,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAE4C,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAI3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMjE,OAAO,KAAK,EACV,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,uBAAuB,EACpG,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,EAClF,2BAA2B,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAC/F,kBAAkB,EAAE,yBAAyB,EAC9C,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,OAAO,QAAS,UAAU,KAAG,cAA8D,CAAA;AACxG,eAAO,MAAM,OAAO,QAAS,UAAU,KAAG,cAA8D,CAAA;AACxG,eAAO,MAAM,QAAQ,QAAS,UAAU,KAAG,kBAAuE,CAAA;AAClH,eAAO,MAAM,YAAY,QAAS,UAAU,KAAG,kBACO,CAAA;AAEtD,eAAO,MAAM,gBAAgB,QAAS,UAAU,KAAG,uBACU,CAAA;AAC7D,eAAO,MAAM,aAAa,QAAS,UAAU,KAAG,2BACqB,CAAA;AACrE,eAAO,MAAM,YAAY,QAAS,UAAU,KAAG,0BACoB,CAAA;AACnE,eAAO,MAAM,eAAe,QAAS,UAAU,KAAG,sBACS,CAAA;AAC3D,eAAO,MAAM,WAAW,QAAS,UAAU,KAAG,oBACS,CAAA;AACvD,eAAO,MAAM,aAAa,QAAS,UAAU,KAAG,2BACsB,CAAA;AACtE,eAAO,MAAM,YAAY,QAAS,UAAU,KAAG,mBACa,CAAA;AAO5D,eAAO,MAAM,YAAY,QAAe,UAAU,KAAG,OAAO,CAAC,kBAAkB,CACkC,CAAA;AAEjH,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,QAAe,UAAU,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CACkC,CAAA;AAElI,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,QAAe,UAAU,KAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CACoC,CAAA;AAExI;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAe,UAAU,KAAG,OAAO,CAAC,MAAM,CAA8C,CAAA;AAEjH;;;GAGG;AACH,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,MAO7C,CAAA;AAED,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,OACoB,CAAA;AAEpE,kFAAkF;AAClF,eAAO,MAAM,eAAe,UAAW,OAAO,KAAG,OAGhD,CAAA;AAED,8DAA8D;AAC9D,eAAO,MAAM,IAAI,UAAW,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,KAAG,MAAM,GAAG,SACT,CAAA;AAE1E,8BAA8B;AAC9B,eAAO,MAAM,MAAM,YAAa,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,IAAI,GAAG,SACX,CAAA;AAExD,qGAAqG;AACrG,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,SAAS,CAAC,KAAG,CACgC,CAAA;AAErF,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,QACxB,UAAU,YAAY,MAAM,cAAc,MAAM,KACpD,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAE4C,CAAA"}
package/build/utils.js CHANGED
@@ -2,7 +2,7 @@ import Stripe from 'stripe';
2
2
  import { PLUGINS } from '@owlmeans/config';
3
3
  import { MONGO_DUPLICATE_KEY } from '@owlmeans/mongo-resource';
4
4
  import { DEFAULT_ALIAS as PAYMENT_SERVICE, ENTITLING_STATUSES, WebhookSetupError } from '@owlmeans/payment';
5
- import { ENTITLEMENT_SERVICE, GATEWAY_SERVICE, PAYMENT_OBSERVER, RES_PAYGATE_CUSTOMER, RES_PAYMENT_FINGERPRINT, RES_PAYMENT_FULFILLMENT, RES_PAYMENT_SUBSCRIPTION, RES_PAYMENT_USAGE, RES_PAYMENT_USAGE_COUNTER, RES_PAYMENT_WEBHOOK, STRIPE_PLUGIN_CONFIG, STRIPE_PORTAL_PLUGIN_CONFIG, } from './consts.js';
5
+ import { ENTITLEMENT_SERVICE, GATEWAY_SERVICE, PAYMENT_OBSERVER, RES_PAYGATE_CUSTOMER, RES_PAYMENT_FINGERPRINT, RES_PAYMENT_FULFILLMENT, RES_PAYMENT_SUBSCRIPTION, RES_PAYMENT_USAGE, RES_PAYMENT_USAGE_COUNTER, RES_PAYMENT_WEBHOOK, STRIPE_PLUGIN_CONFIG, STRIPE_PORTAL_PLUGIN_CONFIG, STRIPE_PRICING_PLUGIN_CONFIG, } from './consts.js';
6
6
  export const payment = (ctx) => ctx.service(PAYMENT_SERVICE);
7
7
  export const gateway = (ctx) => ctx.service(GATEWAY_SERVICE);
8
8
  export const observer = (ctx) => ctx.service(PAYMENT_OBSERVER);
@@ -17,6 +17,8 @@ export const fingerprints = (ctx) => ctx.resource(RES_PAYMENT_FINGERPRINT);
17
17
  export const stripeConfig = async (ctx) => await ctx.getConfigResource(PLUGINS).get(STRIPE_PLUGIN_CONFIG);
18
18
  /** The portal branding declared with `portalBranding`, or `null`. */
19
19
  export const portalBrandingConfig = async (ctx) => await ctx.getConfigResource(PLUGINS).load(STRIPE_PORTAL_PLUGIN_CONFIG);
20
+ /** The Stripe-only pricing settings declared with `declarePaymentPricing`, or `null`. */
21
+ export const stripePricingConfig = async (ctx) => await ctx.getConfigResource(PLUGINS).load(STRIPE_PRICING_PLUGIN_CONFIG);
20
22
  /**
21
23
  * A Stripe client pinned to the API version the installed SDK is typed for (its default), so every
22
24
  * object shape this package reads is the one the types describe.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/server-payment",
3
- "version": "0.1.18-rc.11",
3
+ "version": "0.1.18-rc.13",
4
4
  "license": "MIT",
5
5
  "description": "Protocol-bound payment resources, entitlement gates, and Stripe checkout for OwlMeans servers.",
6
6
  "type": "module",
@@ -26,26 +26,26 @@
26
26
  "ajv": "*"
27
27
  },
28
28
  "dependencies": {
29
- "@owlmeans/auth": "^0.1.18-rc.27",
30
- "@owlmeans/config": "^0.1.18-rc.29",
31
- "@owlmeans/context": "^0.1.18-rc.25",
32
- "@owlmeans/entrypoint": "^0.1.18-rc.28",
33
- "@owlmeans/iam": "^0.1.18-rc.32",
34
- "@owlmeans/mongo-resource": "^0.1.18-rc.28",
35
- "@owlmeans/payment": "^0.1.18-rc.29",
36
- "@owlmeans/resource": "^0.1.18-rc.27",
37
- "@owlmeans/route": "^0.1.18-rc.26",
38
- "@owlmeans/server-api": "^0.1.18-rc.33",
39
- "@owlmeans/server-app": "^0.1.18-rc.33",
40
- "@owlmeans/server-context": "^0.1.18-rc.28",
41
- "@owlmeans/server-entrypoint": "^0.1.18-rc.27",
29
+ "@owlmeans/auth": "^0.1.18-rc.28",
30
+ "@owlmeans/config": "^0.1.18-rc.30",
31
+ "@owlmeans/context": "^0.1.18-rc.26",
32
+ "@owlmeans/entrypoint": "^0.1.18-rc.29",
33
+ "@owlmeans/iam": "^0.1.18-rc.33",
34
+ "@owlmeans/mongo-resource": "^0.1.18-rc.29",
35
+ "@owlmeans/payment": "^0.1.18-rc.31",
36
+ "@owlmeans/resource": "^0.1.18-rc.28",
37
+ "@owlmeans/route": "^0.1.18-rc.27",
38
+ "@owlmeans/server-api": "^0.1.18-rc.34",
39
+ "@owlmeans/server-app": "^0.1.18-rc.34",
40
+ "@owlmeans/server-context": "^0.1.18-rc.29",
41
+ "@owlmeans/server-entrypoint": "^0.1.18-rc.28",
42
42
  "async-mutex": "^0.5.0",
43
43
  "stripe": "^17.7.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@owlmeans/dep-config": "workspace:*",
47
- "@owlmeans/mongo": "^0.1.18-rc.27",
48
- "@owlmeans/test-integration": "^0.1.18-rc.22",
47
+ "@owlmeans/mongo": "^0.1.18-rc.28",
48
+ "@owlmeans/test-integration": "^0.1.18-rc.23",
49
49
  "@types/bun": "^1.4.0",
50
50
  "@types/node": "^26.1.0",
51
51
  "nodemon": "^3.1.14",
package/src/config.ts CHANGED
@@ -1,15 +1,18 @@
1
1
  import { toConfigRecord } from '@owlmeans/server-app'
2
2
  import { plugin } from '@owlmeans/config'
3
3
  import {
4
- assertAmountCheckoutPolicy, assertQuantityCheckoutPolicy, CAPABILITY_LIMIT_SCOPE, CheckoutPricingMode,
5
- LimitKind, LimitMisdeclared, LimitWindow, PLAN_RECORD_PREFIX, PLAN_RECORD_TYPE, PlanDuration,
6
- PlanRankConflict, PlanStatus, PRODUCT_RECORD_PREFIX, PRODUCT_RECORD_TYPE,
4
+ assertAmountCheckoutPolicy, assertPricingPolicy, assertQuantityCheckoutPolicy, CAPABILITY_LIMIT_SCOPE,
5
+ CheckoutPricingMode, LimitKind, LimitMisdeclared, LimitWindow, PLAN_RECORD_PREFIX, PLAN_RECORD_TYPE,
6
+ PaymentError, PlanDuration, PlanRankConflict, PlanStatus, PRICING_POLICY_RECORD_ID, PRICING_POLICY_RECORD_TYPE,
7
+ PRODUCT_RECORD_PREFIX, PRODUCT_RECORD_TYPE,
7
8
  } from '@owlmeans/payment'
8
9
  import type { LimitDeclaration } from '@owlmeans/payment'
9
- import { STRIPE_PAYGATE_ALIAS, STRIPE_PLUGIN_CONFIG, STRIPE_PORTAL_PLUGIN_CONFIG } from './consts.js'
10
+ import {
11
+ STRIPE_PAYGATE_ALIAS, STRIPE_PLUGIN_CONFIG, STRIPE_PORTAL_PLUGIN_CONFIG, STRIPE_PRICING_PLUGIN_CONFIG,
12
+ } from './consts.js'
10
13
  import type {
11
14
  Config, PaymentPlan, PaymentPlanDef, PaymentProduct, PaymentProductDef, PortalBrandingDef,
12
- StripeSecretsDef,
15
+ PricingDef, StripeSecretsDef,
13
16
  } from './types.js'
14
17
 
15
18
  export const declarePaymentProduct = (cfg: Config, def: PaymentProductDef): void => {
@@ -161,3 +164,42 @@ export const portalBranding = (cfg: Config, def: PortalBrandingDef): void => {
161
164
  ...(def.termsOfServiceUrl != null ? { termsOfServiceUrl: def.termsOfServiceUrl } : {}),
162
165
  }, STRIPE_PORTAL_PLUGIN_CONFIG)
163
166
  }
167
+
168
+ /**
169
+ * Declare the pricing policy: whether checkout collects tax and a VAT/GST id, what `tax_behavior`
170
+ * synced prices are given, Adaptive Pricing, and whether the estimate endpoints are served. A
171
+ * config never carries more than one — a second call replaces the first, so re-declaring (a test, a
172
+ * config module re-run) is safe rather than silently ignored (a config resource resolves an id to
173
+ * its FIRST match).
174
+ *
175
+ * `def.stripe` (the FX Quotes preview version, the unspecified-price migration switch) is
176
+ * Stripe-only and goes to a backend plugin, never the advertised `PricingPolicy` record.
177
+ *
178
+ * @throws PaymentError (`assertPricingPolicy`) when an estimate is declared without the tax or
179
+ * currency capability it requires.
180
+ */
181
+ export const declarePaymentPricing = (cfg: Config, def: PricingDef): void => {
182
+ const { stripe, ...policy } = def
183
+ assertPricingPolicy(policy)
184
+ cfg.records = (cfg.records ?? []).filter(record => record.id !== PRICING_POLICY_RECORD_ID)
185
+ cfg.records.push({
186
+ ...toConfigRecord(policy), recordType: PRICING_POLICY_RECORD_TYPE, id: PRICING_POLICY_RECORD_ID,
187
+ })
188
+ if (stripe != null) {
189
+ const settlementCurrency = stripe.settlementCurrency?.toLowerCase()
190
+ if (settlementCurrency != null && !/^[a-z]{3}$/.test(settlementCurrency)) {
191
+ throw new PaymentError('pricing-policy:settlement-currency')
192
+ }
193
+ const subscriptionPaymentMethodTypes = stripe.subscriptionPaymentMethodTypes?.map(type => type.toLowerCase())
194
+ if (subscriptionPaymentMethodTypes != null && (subscriptionPaymentMethodTypes.length === 0
195
+ || subscriptionPaymentMethodTypes.some(type => !/^[a-z][a-z0-9_]*$/.test(type))
196
+ || new Set(subscriptionPaymentMethodTypes).size !== subscriptionPaymentMethodTypes.length)) {
197
+ throw new PaymentError('pricing-policy:subscription-payment-methods')
198
+ }
199
+ plugin(cfg, {
200
+ ...stripe,
201
+ ...(settlementCurrency != null ? { settlementCurrency } : {}),
202
+ ...(subscriptionPaymentMethodTypes != null ? { subscriptionPaymentMethodTypes } : {}),
203
+ }, STRIPE_PRICING_PLUGIN_CONFIG)
204
+ }
205
+ }
package/src/consts.ts CHANGED
@@ -9,7 +9,18 @@ export { INTERNAL_PAYGATE, LIMIT_GATE }
9
9
  export const STRIPE_PAYGATE_ALIAS = 'stripe'
10
10
  export const STRIPE_PLUGIN_CONFIG = '_external:stripe'
11
11
  export const STRIPE_PORTAL_PLUGIN_CONFIG = '_external:stripe-portal'
12
+ /** Stripe-only pricing settings (FX Quotes API version, the unspecified-price migration switch) — never advertised to the browser, unlike the `PricingPolicy` record itself. */
13
+ export const STRIPE_PRICING_PLUGIN_CONFIG = '_external:stripe-pricing'
12
14
  export const STRIPE_SIGNATURE = 'Stripe-Signature'
15
+
16
+ /**
17
+ * The FX Quotes API is a Stripe PREVIEW endpoint as of this writing: it answers only a
18
+ * `Stripe-Version` header naming a preview version, never the SDK's pinned stable one. Verify this
19
+ * string against https://docs.stripe.com/api/fx_quotes/create before relying on it, and override it
20
+ * with `declarePaymentPricing({ stripe: { fxApiVersion } })` once Stripe moves the API or renames
21
+ * the preview.
22
+ */
23
+ export const STRIPE_FX_QUOTES_API_VERSION = '2025-07-30.preview'
13
24
  export const GATEWAY_SERVICE = 'payment-gateway'
14
25
  export const PAYMENT_OBSERVER = 'payment-observer'
15
26
  export const ENTITLEMENT_SERVICE = 'payment-entitlement'
package/src/index.ts CHANGED
@@ -17,6 +17,8 @@ export {
17
17
  export type { CommitOptions, CommitResult } from './subscription.js'
18
18
  export { planLookupKey, syncPaymentProducts, syncStripeProducts } from './sync.js'
19
19
  export { amountCheckoutLineItem, quantityCheckoutLineItem } from './plugins/stripe.js'
20
+ export { makeEstimateCache, estimateStripePrice } from './plugins/estimate.js'
21
+ export type { EstimateCache } from './plugins/estimate.js'
20
22
  export { applySubscription, createEventHandler, mapStatus } from './plugins/events.js'
21
23
  export type { ApplyOptions } from './plugins/events.js'
22
24
  export {
package/src/model.ts CHANGED
@@ -63,7 +63,8 @@ export const PaymentFulfillmentSchema = {
63
63
  properties: {
64
64
  id, entityId: str, productSku: str, planSku: optStr, service: str, paygate: str, externalId: str,
65
65
  paymentIntentId: optStr, chargeId: optStr, invoiceId: optStr, mode: CheckoutPricingModeSchema,
66
- units: optNum, amountMinor: optNum, chargeAmountMinor: optNum, currency: optStr, createdAt: date,
66
+ units: optNum, amountMinor: optNum, sourceChargeAmountMinor: optNum, amountCurrency: optStr,
67
+ chargeAmountMinor: optNum, currency: optStr, createdAt: date,
67
68
  fulfilledAt: optDate, failedAt: optDate, refundedMinor: optNum, refundedAt: optDate,
68
69
  disputedAt: optDate, disputeStatus: optStr,
69
70
  },
@@ -0,0 +1,299 @@
1
+ import type Stripe from 'stripe'
2
+ import {
3
+ chargeAmountMinor, CheckoutPricingMode, currencyOfCountry, ProductError, ratePpmOf, TaxBehavior,
4
+ TaxEstimateStatus, TaxType, UnknownProduct,
5
+ } from '@owlmeans/payment'
6
+ import type { PriceEstimate, TaxEstimate, TaxRateEstimate } from '@owlmeans/payment'
7
+ import type { Context as ApiContext } from '@owlmeans/server-api'
8
+ import { STRIPE_FX_QUOTES_API_VERSION, STRIPE_PAYGATE_ALIAS } from '../consts.js'
9
+ import { findProduct } from '../plan.js'
10
+ import { isSoldThrough } from '../sync.js'
11
+ import { isMissingObject, paygateCustomers, payment, stripePricingConfig } from '../utils.js'
12
+ import type { PaymentPlan, PaymentProduct, PriceEstimateParams } from '../types.js'
13
+ import { stripeFxRate } from './fx.js'
14
+
15
+ // -------------------------------------------------------------------------------------------
16
+ // Cache — one instance per gateway service, never module-level (a test builds many contexts in
17
+ // one process, and a module-level cache would make "no Stripe call" assertions order-dependent).
18
+ // -------------------------------------------------------------------------------------------
19
+
20
+ interface CacheEntry<T> { value: T; expiresAt: number }
21
+
22
+ export interface EstimateCache {
23
+ taxTtlMs: number
24
+ fxTtlMs: number
25
+ customerTtlMs: number
26
+ tax: Map<string, CacheEntry<TaxOutcome>>
27
+ fx: Map<string, CacheEntry<FxOutcome>>
28
+ customer: Map<string, CacheEntry<Stripe.Customer | null>>
29
+ inflight: Map<string, Promise<unknown>>
30
+ }
31
+
32
+ /** @param taxTtlMs default 24h; @param fxTtlMs default 1h; @param customerTtlMs default 5min. */
33
+ export const makeEstimateCache = (
34
+ taxTtlMs: number = 24 * 60 * 60 * 1_000, fxTtlMs: number = 60 * 60 * 1_000,
35
+ customerTtlMs: number = 5 * 60 * 1_000,
36
+ ): EstimateCache => ({
37
+ taxTtlMs, fxTtlMs, customerTtlMs, tax: new Map(), fx: new Map(), customer: new Map(), inflight: new Map(),
38
+ })
39
+
40
+ /**
41
+ * A keyed value cached for `ttlMs`, with in-flight requests shared across concurrent callers. Only
42
+ * a settled (resolved) outcome is cached — a thrown error (a rate limit, a dropped connection) never
43
+ * is, so the next call simply tries again.
44
+ */
45
+ const cached = async <T>(
46
+ store: Map<string, CacheEntry<T>>, inflight: Map<string, Promise<unknown>>,
47
+ key: string, ttlMs: number, factory: () => Promise<T>,
48
+ ): Promise<T> => {
49
+ const now = Date.now()
50
+ const hit = store.get(key)
51
+ if (hit != null && hit.expiresAt > now) {
52
+ return hit.value
53
+ }
54
+ const pending = inflight.get(key) as Promise<T> | undefined
55
+ if (pending != null) {
56
+ return pending
57
+ }
58
+ const promise = factory().then(value => {
59
+ store.set(key, { value, expiresAt: Date.now() + ttlMs })
60
+ inflight.delete(key)
61
+ return value
62
+ }).catch(error => {
63
+ inflight.delete(key)
64
+ throw error
65
+ })
66
+ inflight.set(key, promise)
67
+ return promise
68
+ }
69
+
70
+ // -------------------------------------------------------------------------------------------
71
+ // Customer lookup — the fallback country and the tax ids a request-given country still checks.
72
+ // -------------------------------------------------------------------------------------------
73
+
74
+ const cachedCustomer = async (
75
+ ctx: ApiContext, stripe: Stripe, entityId: string, cache: EstimateCache,
76
+ ): Promise<Stripe.Customer | null> => cached(cache.customer, cache.inflight, `customer:${entityId}`, cache.customerTtlMs, async () => {
77
+ const record = await paygateCustomers(ctx).byEntity(entityId, STRIPE_PAYGATE_ALIAS)
78
+ if (record == null || record.deletedAt != null) {
79
+ return null
80
+ }
81
+ try {
82
+ const retrieved = await stripe.customers.retrieve(record.externalId, { expand: ['tax_ids'] })
83
+ return (retrieved as Stripe.DeletedCustomer).deleted ? null : retrieved as Stripe.Customer
84
+ } catch (error) {
85
+ if (isMissingObject(error)) return null
86
+ throw error
87
+ }
88
+ })
89
+
90
+ // -------------------------------------------------------------------------------------------
91
+ // Tax
92
+ // -------------------------------------------------------------------------------------------
93
+
94
+ type TaxOutcome = { ok: true; calculation: Stripe.Tax.Calculation } | { ok: false; code?: string }
95
+
96
+ /** A duck-typed check, matching `isMissingObject` above: the installed SDK's own error classes. */
97
+ const isInvalidRequest = (error: unknown): error is { code?: string } =>
98
+ (error as { type?: unknown } | null)?.type === 'StripeInvalidRequestError'
99
+
100
+ const NON_SCALABLE_REASONS = new Set([
101
+ 'portion_product_exempt', 'portion_reduced_rated', 'portion_standard_rated', 'taxable_basis_reduced',
102
+ 'proportionally_rated',
103
+ ])
104
+
105
+ /** A linear percentage rate scales with the amount; a flat fee, a partial exemption, or several inclusive rates do not. */
106
+ const scalableOf = (breakdown: Stripe.Tax.Calculation.TaxBreakdown[], behavior: TaxBehavior): boolean => {
107
+ if (breakdown.some(row => row.tax_rate_details?.rate_type === 'flat_amount')) return false
108
+ if (breakdown.some(row => NON_SCALABLE_REASONS.has(row.taxability_reason))) return false
109
+ if (behavior === TaxBehavior.Inclusive && breakdown.length > 1) return false
110
+ return true
111
+ }
112
+
113
+ const statusOf = (breakdown: Stripe.Tax.Calculation.TaxBreakdown[], taxMinor: number): TaxEstimateStatus => {
114
+ if (breakdown.some(row => row.taxability_reason === 'reverse_charge')) return TaxEstimateStatus.ReverseCharge
115
+ if (taxMinor > 0) return TaxEstimateStatus.Taxed
116
+ if (breakdown.some(row => row.taxability_reason === 'not_supported')) return TaxEstimateStatus.AtCheckout
117
+ return TaxEstimateStatus.None
118
+ }
119
+
120
+ const TAX_TYPE_MAP: Readonly<Record<string, TaxType>> = Object.freeze({
121
+ vat: TaxType.Vat, gst: TaxType.Gst, sales_tax: TaxType.SalesTax,
122
+ })
123
+
124
+ const taxTypeOf = (raw: string | null | undefined): TaxType => raw != null && raw in TAX_TYPE_MAP ? TAX_TYPE_MAP[raw] : TaxType.Tax
125
+
126
+ const ratesOf = (breakdown: Stripe.Tax.Calculation.TaxBreakdown[]): TaxRateEstimate[] => breakdown
127
+ .filter((row): row is Stripe.Tax.Calculation.TaxBreakdown & {
128
+ tax_rate_details: NonNullable<Stripe.Tax.Calculation.TaxBreakdown['tax_rate_details']>
129
+ } => row.tax_rate_details != null)
130
+ .map(row => ({
131
+ type: taxTypeOf(row.tax_rate_details.tax_type),
132
+ percentage: row.tax_rate_details.percentage_decimal,
133
+ ratePpm: ratePpmOf(row.tax_rate_details.percentage_decimal),
134
+ ...(row.tax_rate_details.country != null ? { country: row.tax_rate_details.country } : {}),
135
+ ...(row.tax_rate_details.state != null ? { state: row.tax_rate_details.state } : {}),
136
+ }))
137
+
138
+ const taxEstimateOf = (calculation: Stripe.Tax.Calculation, behavior: TaxBehavior, subtotalMinor: number): TaxEstimate => {
139
+ const breakdown = calculation.tax_breakdown ?? []
140
+ const taxMinor = calculation.tax_amount_exclusive + calculation.tax_amount_inclusive
141
+ const status = statusOf(breakdown, taxMinor)
142
+
143
+ return {
144
+ status, subtotalMinor, taxMinor, totalMinor: calculation.amount_total,
145
+ scalable: scalableOf(breakdown, behavior), rates: ratesOf(breakdown),
146
+ }
147
+ }
148
+
149
+ /** The reference amount and currency of the estimate: an amount plan's default preset, else the plan's own price. */
150
+ const referenceOf = (plan: PaymentPlan): { subtotalMinor: number; currency: string } => {
151
+ if (plan.pricingMode === CheckoutPricingMode.Amount) {
152
+ if (plan.amountPolicy == null) throw new ProductError(`amount-policy:${plan.sku}`)
153
+ return {
154
+ subtotalMinor: chargeAmountMinor(plan.amountPolicy.defaultMinor, plan.amountPolicy),
155
+ currency: plan.amountPolicy.currency.toLowerCase(),
156
+ }
157
+ }
158
+ return { subtotalMinor: Math.round(plan.price * 100), currency: (plan.currency ?? 'usd').toLowerCase() }
159
+ }
160
+
161
+ /** A placeholder estimate — no known tax, shown by its `status`, never by its zeroed numbers. */
162
+ const unresolvedEstimate = (status: TaxEstimateStatus, subtotalMinor: number): TaxEstimate => ({
163
+ status, subtotalMinor, taxMinor: 0, totalMinor: subtotalMinor, scalable: false, rates: [],
164
+ })
165
+
166
+ // -------------------------------------------------------------------------------------------
167
+ // Currency (Stripe FX Quotes, a PREVIEW endpoint — see `STRIPE_FX_QUOTES_API_VERSION`)
168
+ // -------------------------------------------------------------------------------------------
169
+
170
+ type FxOutcome = { currency: string; exchangeRate: number; fxFeeRate?: number } | null
171
+
172
+ const fetchFxRate = async (
173
+ stripe: Stripe, currency: string, localCurrency: string, apiVersion: string,
174
+ settlementCurrency: string = currency,
175
+ ): Promise<FxOutcome> => {
176
+ const settlement = settlementCurrency.toLowerCase()
177
+ const sourceRate = settlement === currency
178
+ ? { referenceRate: 1 }
179
+ : await stripeFxRate(stripe, currency, settlement, apiVersion)
180
+ if (sourceRate == null) return null
181
+ if (localCurrency === settlement) {
182
+ return { currency: localCurrency, exchangeRate: 1 / sourceRate.referenceRate }
183
+ }
184
+ const localRate = await stripeFxRate(stripe, localCurrency, settlement, apiVersion)
185
+ if (localRate == null) return null
186
+ return {
187
+ currency: localCurrency, exchangeRate: localRate.exchangeRate / sourceRate.referenceRate,
188
+ ...(localRate.fxFeeRate != null ? { fxFeeRate: localRate.fxFeeRate } : {}),
189
+ }
190
+ }
191
+
192
+ // -------------------------------------------------------------------------------------------
193
+
194
+ /**
195
+ * A Stripe Tax estimate (and, when the pricing policy asks for it, a local-currency conversion) for
196
+ * one product/plan, at a billing country the request names or the entity's paygate customer does.
197
+ *
198
+ * Costs one Tax Calculation API call ($0.05) per distinct (currency, country, amount, tax code,
199
+ * behavior, matching tax ids) within `cache`'s TTL, and one free FX Quotes call per distinct
200
+ * (currency, local currency) — never more, and never for a rate-limit or connection error, which is
201
+ * never cached.
202
+ */
203
+ export const estimateStripePrice = async (
204
+ ctx: ApiContext, stripe: Stripe, params: PriceEstimateParams, cache: EstimateCache,
205
+ ): Promise<PriceEstimate> => {
206
+ const product = await findProduct(ctx, params.productSku) as PaymentProduct | null
207
+ if (product == null) throw new UnknownProduct(params.productSku)
208
+ const plans = (await payment(ctx).allPlans(product.sku) as PaymentPlan[])
209
+ .filter(plan => isSoldThrough(product, plan, STRIPE_PAYGATE_ALIAS))
210
+ const plan = params.planSku != null
211
+ ? plans.find(item => item.sku === params.planSku)
212
+ : plans.find(item => item.recurring != null) ?? plans[0]
213
+ if (plan == null) throw new ProductError(params.planSku != null ? `plan:${params.planSku}` : 'plan')
214
+
215
+ const pricing = await payment(ctx).pricingPolicy()
216
+ const behavior = pricing.tax.behavior ?? TaxBehavior.Exclusive
217
+ const { subtotalMinor, currency } = referenceOf(plan)
218
+
219
+ let country = params.country?.toUpperCase()
220
+ let source: 'request' | 'customer' | undefined = country != null ? 'request' : undefined
221
+ let matchingTaxIds: Array<{ type: string; value: string }> = []
222
+ let taxabilityOverride: 'customer_exempt' | 'reverse_charge' | undefined
223
+
224
+ const customer = await cachedCustomer(ctx, stripe, params.entityId, cache)
225
+ if (customer != null) {
226
+ if (country == null && customer.address?.country != null) {
227
+ country = customer.address.country
228
+ source = 'customer'
229
+ }
230
+ if (country != null) {
231
+ matchingTaxIds = (customer.tax_ids?.data ?? [])
232
+ .filter(taxId => taxId.country === country)
233
+ .map(taxId => ({ type: taxId.type, value: taxId.value }))
234
+ if (customer.tax_exempt === 'exempt') taxabilityOverride = 'customer_exempt'
235
+ else if (customer.tax_exempt === 'reverse') taxabilityOverride = 'reverse_charge'
236
+ }
237
+ }
238
+
239
+ if (country == null) {
240
+ return { currency, behavior, tax: unresolvedEstimate(TaxEstimateStatus.LocationRequired, subtotalMinor) }
241
+ }
242
+
243
+ const cacheKey = JSON.stringify([
244
+ currency, country, subtotalMinor, product.taxCode ?? null, behavior,
245
+ matchingTaxIds.map(id => `${id.type}:${id.value}`).sort(), taxabilityOverride ?? null,
246
+ ])
247
+ const outcome = await cached(cache.tax, cache.inflight, `tax:${cacheKey}`, cache.taxTtlMs, async (): Promise<TaxOutcome> => {
248
+ try {
249
+ const calculation = await stripe.tax.calculations.create({
250
+ currency,
251
+ line_items: [{
252
+ amount: subtotalMinor, reference: plan.sku, tax_behavior: behavior,
253
+ ...(product.taxCode != null ? { tax_code: product.taxCode } : {}),
254
+ }],
255
+ customer_details: {
256
+ address: { country },
257
+ address_source: 'billing',
258
+ // Cast: `Stripe.TaxId.type` (the customer's saved tax id) and the Tax Calculation
259
+ // parameter's own tax-id-type enum are independently generated from Stripe's OpenAPI
260
+ // spec and can drift apart in this pinned SDK; every value here still came from a real
261
+ // Stripe `TaxId` record, so it is valid at the API even where the two types disagree.
262
+ ...(matchingTaxIds.length > 0
263
+ ? { tax_ids: matchingTaxIds as Stripe.Tax.CalculationCreateParams.CustomerDetails['tax_ids'] }
264
+ : {}),
265
+ ...(taxabilityOverride != null ? { taxability_override: taxabilityOverride } : {}),
266
+ },
267
+ })
268
+ return { ok: true, calculation }
269
+ } catch (error) {
270
+ if (isInvalidRequest(error)) return { ok: false, code: error.code }
271
+ throw error
272
+ }
273
+ })
274
+
275
+ const tax = outcome.ok
276
+ ? taxEstimateOf(outcome.calculation, behavior, subtotalMinor)
277
+ : unresolvedEstimate(TaxEstimateStatus.AtCheckout, subtotalMinor)
278
+
279
+ const result: PriceEstimate = { country, source, currency, behavior, tax }
280
+
281
+ if (pricing.currency.estimate && pricing.currency.adaptive === true) {
282
+ const localCurrency = currencyOfCountry(country)
283
+ if (localCurrency != null && localCurrency !== currency) {
284
+ const stripePricing = await stripePricingConfig(ctx)
285
+ const apiVersion = stripePricing?.fxApiVersion ?? STRIPE_FX_QUOTES_API_VERSION
286
+ const settlementCurrency = stripePricing?.settlementCurrency?.toLowerCase() ?? currency
287
+ // A preview endpoint: unreachable or erroring never fails the estimate, it only drops `local`.
288
+ const fx = await cached(
289
+ cache.fx, cache.inflight, `fx:${currency}:${settlementCurrency}:${localCurrency}:${apiVersion}`, cache.fxTtlMs,
290
+ () => fetchFxRate(stripe, currency, localCurrency, apiVersion, settlementCurrency),
291
+ ).catch(() => null)
292
+ if (fx != null) {
293
+ result.local = { currency: fx.currency, exchangeRate: fx.exchangeRate, ...(fx.fxFeeRate != null ? { fxFeeRate: fx.fxFeeRate } : {}) }
294
+ }
295
+ }
296
+ }
297
+
298
+ return result
299
+ }
@@ -117,7 +117,9 @@ export const applySubscription = async (
117
117
  }
118
118
 
119
119
  const item = subscription.items?.data?.[0]
120
- const planSku = item?.price?.lookup_key ?? metadata.planSku ?? previous?.planSku
120
+ // A price recreated by `sync.ts` (an opposite `tax_behavior`) loses its lookup key; its sku
121
+ // metadata survives, so a subscription switched to it in the portal still resolves its plan.
122
+ const planSku = item?.price?.lookup_key ?? item?.price?.metadata?.sku ?? metadata.planSku ?? previous?.planSku
121
123
  if (planSku == null) {
122
124
  console.warn(`[payment] subscription "${subscription.id}" names no plan; ignored`)
123
125
  return { record: previous, change: null, updated: false }
@@ -323,12 +325,23 @@ export const createEventHandler = (ctx: ApiContext, stripe: Stripe) => {
323
325
  const amountMinor = integerMetadata(metadata, 'amountMinor')
324
326
  const chargedMinor = integerMetadata(metadata, 'chargeAmountMinor')
325
327
  const currency = metadata.currency?.toLowerCase()
328
+ const sourceChargedMinor = metadata.sourceChargeAmountMinor == null
329
+ ? chargedMinor : integerMetadata(metadata, 'sourceChargeAmountMinor')
330
+ const amountCurrency = (metadata.amountCurrency ?? currency)?.toLowerCase()
326
331
  if (currency == null || session.currency?.toLowerCase() !== currency
327
- || session.amount_subtotal !== chargedMinor || amountMinor <= 0 || chargedMinor < amountMinor) {
332
+ || amountCurrency == null || session.amount_subtotal !== chargedMinor
333
+ || amountMinor <= 0 || chargedMinor <= 0 || sourceChargedMinor < amountMinor
334
+ || (amountCurrency === currency && sourceChargedMinor !== chargedMinor)) {
328
335
  throw new PaygateError('amount-mismatch')
329
336
  }
330
- record = { mode: CheckoutPricingMode.Amount, amountMinor, chargeAmountMinor: chargedMinor, currency }
331
- completion = { ...base, mode: 'amount', amountMinor, chargeAmountMinor: chargedMinor, currency }
337
+ record = {
338
+ mode: CheckoutPricingMode.Amount, amountMinor, sourceChargeAmountMinor: sourceChargedMinor,
339
+ amountCurrency, chargeAmountMinor: chargedMinor, currency,
340
+ }
341
+ completion = {
342
+ ...base, mode: 'amount', amountMinor, sourceChargeAmountMinor: sourceChargedMinor,
343
+ amountCurrency, chargeAmountMinor: chargedMinor, currency,
344
+ }
332
345
  } else {
333
346
  if (metadata.currency != null && session.currency?.toLowerCase() !== metadata.currency.toLowerCase()) {
334
347
  throw new PaygateError('currency-mismatch')