@joedeanvapi/pay-service-sdk 0.1.0

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.
@@ -0,0 +1,23 @@
1
+ export declare const PAYMENT_PROVIDERS: readonly ["creem", "paypro", "polar", "square", "nowpayments", "dodopayments"];
2
+ export declare const PAYMENT_PRODUCT_KINDS: readonly ["subscription", "creditPack", "apiCredits"];
3
+ export declare const PAYMENT_SUBSCRIPTION_CYCLES: readonly ["monthly", "yearly"];
4
+ export declare const PAYMENT_ORDER_STATUSES: readonly ["pending", "paid", "failed", "canceled", "refunded", "disputed"];
5
+ export declare const CALLBACK_DELIVERY_STATUSES: readonly ["pending", "delivered", "failed", "retrying"];
6
+ export declare const PAYMENT_EVENT_TYPES: {
7
+ readonly PAYMENT_PAID: "payment.paid";
8
+ readonly SUBSCRIPTION_PAID: "subscription.paid";
9
+ readonly SUBSCRIPTION_CANCELED: "subscription.canceled";
10
+ readonly PAYMENT_REFUNDED: "payment.refunded";
11
+ readonly PAYMENT_DISPUTED: "payment.disputed";
12
+ };
13
+ export declare const PAYMENT_CALLBACK_SCHEMA_VERSION: "2026-05-14";
14
+ export type PayServicePaymentProvider = (typeof PAYMENT_PROVIDERS)[number];
15
+ export type PayServicePaymentProductKind = (typeof PAYMENT_PRODUCT_KINDS)[number];
16
+ export type PayServicePaymentSubscriptionCycle = (typeof PAYMENT_SUBSCRIPTION_CYCLES)[number];
17
+ export type PayServicePaymentOrderStatus = (typeof PAYMENT_ORDER_STATUSES)[number];
18
+ export type PayServiceCallbackDeliveryStatus = (typeof CALLBACK_DELIVERY_STATUSES)[number];
19
+ export type PayServicePaymentEventType = (typeof PAYMENT_EVENT_TYPES)[keyof typeof PAYMENT_EVENT_TYPES];
20
+ export declare function isPayServicePaymentProvider(value: unknown): value is PayServicePaymentProvider;
21
+ export declare function isPayServicePaymentProductKind(value: unknown): value is PayServicePaymentProductKind;
22
+ export declare function isPayServicePaymentSubscriptionCycle(value: unknown): value is PayServicePaymentSubscriptionCycle;
23
+ //# sourceMappingURL=generated-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-contract.d.ts","sourceRoot":"","sources":["../src/generated-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,gFAAiF,CAAC;AAChH,eAAO,MAAM,qBAAqB,uDAAwD,CAAC;AAC3F,eAAO,MAAM,2BAA2B,gCAAiC,CAAC;AAC1E,eAAO,MAAM,sBAAsB,4EAA6E,CAAC;AACjH,eAAO,MAAM,0BAA0B,yDAA0D,CAAC;AAClG,eAAO,MAAM,mBAAmB;;;;;;CAMtB,CAAC;AACX,eAAO,MAAM,+BAA+B,EAAG,YAAqB,CAAC;AAErE,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3E,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClF,MAAM,MAAM,kCAAkC,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9F,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnF,MAAM,MAAM,gCAAgC,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3F,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAGxG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAE9F;AAGD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,4BAA4B,CAEpG;AAGD,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kCAAkC,CAEhH"}
@@ -0,0 +1,26 @@
1
+ export const PAYMENT_PROVIDERS = ["creem", "paypro", "polar", "square", "nowpayments", "dodopayments"];
2
+ export const PAYMENT_PRODUCT_KINDS = ["subscription", "creditPack", "apiCredits"];
3
+ export const PAYMENT_SUBSCRIPTION_CYCLES = ["monthly", "yearly"];
4
+ export const PAYMENT_ORDER_STATUSES = ["pending", "paid", "failed", "canceled", "refunded", "disputed"];
5
+ export const CALLBACK_DELIVERY_STATUSES = ["pending", "delivered", "failed", "retrying"];
6
+ export const PAYMENT_EVENT_TYPES = {
7
+ PAYMENT_PAID: "payment.paid",
8
+ SUBSCRIPTION_PAID: "subscription.paid",
9
+ SUBSCRIPTION_CANCELED: "subscription.canceled",
10
+ PAYMENT_REFUNDED: "payment.refunded",
11
+ PAYMENT_DISPUTED: "payment.disputed",
12
+ };
13
+ export const PAYMENT_CALLBACK_SCHEMA_VERSION = "2026-05-14";
14
+ // 判断传入值是否是 pay-service 当前支持的支付 provider。
15
+ export function isPayServicePaymentProvider(value) {
16
+ return typeof value === "string" && PAYMENT_PROVIDERS.includes(value);
17
+ }
18
+ // 判断传入值是否是 pay-service 当前支持的商品类型。
19
+ export function isPayServicePaymentProductKind(value) {
20
+ return typeof value === "string" && PAYMENT_PRODUCT_KINDS.includes(value);
21
+ }
22
+ // 判断传入值是否是 pay-service 当前支持的订阅周期。
23
+ export function isPayServicePaymentSubscriptionCycle(value) {
24
+ return typeof value === "string" && PAYMENT_SUBSCRIPTION_CYCLES.includes(value);
25
+ }
26
+ //# sourceMappingURL=generated-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-contract.js","sourceRoot":"","sources":["../src/generated-contract.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAU,CAAC;AAChH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAC3F,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC;AACjH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAClG,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,qBAAqB,EAAE,uBAAuB;IAC9C,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AACX,MAAM,CAAC,MAAM,+BAA+B,GAAG,YAAqB,CAAC;AASrE,yCAAyC;AACzC,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,KAAkC,CAAC,CAAC;AACrG,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC3D,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,KAAqC,CAAC,CAAC;AAC5G,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,oCAAoC,CAAC,KAAc;IACjE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,2BAA2B,CAAC,QAAQ,CAAC,KAA2C,CAAC,CAAC;AACxH,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { type PayServicePaymentEventType, type PayServicePaymentProvider, type PayServicePaymentSubscriptionCycle } from "./generated-contract.js";
2
+ export { CALLBACK_DELIVERY_STATUSES, isPayServicePaymentProductKind, isPayServicePaymentProvider, isPayServicePaymentSubscriptionCycle, PAYMENT_CALLBACK_SCHEMA_VERSION, PAYMENT_EVENT_TYPES, PAYMENT_ORDER_STATUSES, PAYMENT_PRODUCT_KINDS, PAYMENT_PROVIDERS, PAYMENT_SUBSCRIPTION_CYCLES, type PayServiceCallbackDeliveryStatus, type PayServicePaymentEventType, type PayServicePaymentOrderStatus, type PayServicePaymentProductKind, type PayServicePaymentProvider, type PayServicePaymentSubscriptionCycle, } from "./generated-contract.js";
3
+ export type PayServiceCheckoutInput = {
4
+ productKey: string;
5
+ provider: string;
6
+ customer?: {
7
+ id?: string;
8
+ email?: string | null;
9
+ };
10
+ returnUrl?: string;
11
+ metadata?: Record<string, string>;
12
+ idempotencyKey?: string;
13
+ };
14
+ export type PayServiceCheckoutResult = {
15
+ orderId: string;
16
+ checkoutUrl: string;
17
+ provider: string;
18
+ };
19
+ export type PayServicePaymentMethodIcon = {
20
+ src?: string;
21
+ alt?: string;
22
+ };
23
+ export type PayServicePaymentMethod = {
24
+ id: string;
25
+ provider: string;
26
+ label: string;
27
+ description?: string;
28
+ icons?: PayServicePaymentMethodIcon[] | null;
29
+ };
30
+ export type PayServicePaymentMethodsResult = {
31
+ productKey: string;
32
+ methods: PayServicePaymentMethod[];
33
+ };
34
+ export type PayServiceSubscriptionManagementInput = {
35
+ provider?: string;
36
+ customerId?: string;
37
+ subscriptionId?: string;
38
+ orderId: string;
39
+ };
40
+ export type PayServiceSubscriptionManagementResult = {
41
+ action: "customer_portal";
42
+ url: string;
43
+ orderId: string;
44
+ } | {
45
+ action: "cancel_subscription";
46
+ confirmationRequired: true;
47
+ orderId: string;
48
+ };
49
+ export type PayServiceCancelSubscriptionInput = {
50
+ provider: string;
51
+ subscriptionId: string;
52
+ orderId: string;
53
+ };
54
+ export type PayServiceCancelSubscriptionResult = {
55
+ canceled: boolean;
56
+ };
57
+ export type PayServiceProduct = {
58
+ key: string;
59
+ kind: "subscription";
60
+ cycle: PayServicePaymentSubscriptionCycle;
61
+ } | {
62
+ key: string;
63
+ kind: "creditPack" | "apiCredits";
64
+ };
65
+ export type PayServiceEvent = {
66
+ schemaVersion: "2026-05-14";
67
+ eventId: string;
68
+ eventType: PayServicePaymentEventType;
69
+ projectKey: string;
70
+ orderId: string;
71
+ product: PayServiceProduct;
72
+ provider: PayServicePaymentProvider | string;
73
+ customer?: {
74
+ id?: string;
75
+ email?: string;
76
+ };
77
+ providerIds: {
78
+ checkoutId?: string;
79
+ orderId?: string;
80
+ paymentId?: string;
81
+ refundId?: string;
82
+ subscriptionId?: string;
83
+ customerId?: string;
84
+ };
85
+ occurredAt: string;
86
+ metadata?: Record<string, string>;
87
+ };
88
+ export type PayServiceFailureNotification = {
89
+ service: "pay-service";
90
+ operation: string;
91
+ method: "GET" | "POST";
92
+ url: string;
93
+ status?: number;
94
+ code: string;
95
+ attempts: number;
96
+ message: string;
97
+ };
98
+ export type PayServiceLogEntry = {
99
+ msg: string;
100
+ data?: Record<string, unknown>;
101
+ error?: unknown;
102
+ };
103
+ export type PayServiceFetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
104
+ export type PayServiceSdkConfig = {
105
+ apiUrl: string;
106
+ apiKey: string;
107
+ projectKey: string;
108
+ fetchImpl?: PayServiceFetch;
109
+ retryAttempts?: number;
110
+ onFailure?: (failure: PayServiceFailureNotification) => Promise<void> | void;
111
+ logInfo?: (entry: PayServiceLogEntry) => void;
112
+ logError?: (entry: PayServiceLogEntry) => void;
113
+ };
114
+ export declare function createPayServiceCallbackSignature(args: {
115
+ secret: string;
116
+ timestamp: string;
117
+ rawBody: string;
118
+ }): string;
119
+ export declare function verifyPayServiceCallbackSignature(args: {
120
+ secret: string;
121
+ timestamp?: string | null;
122
+ rawBody: string;
123
+ signature?: string | null;
124
+ }): boolean;
125
+ export declare function createPayServiceSdk(config: PayServiceSdkConfig): {
126
+ createCheckout: (input: PayServiceCheckoutInput) => Promise<PayServiceCheckoutResult>;
127
+ getPaymentMethods: (productKey: string) => Promise<PayServicePaymentMethodsResult>;
128
+ createSubscriptionManagement: (input: PayServiceSubscriptionManagementInput) => Promise<PayServiceSubscriptionManagementResult>;
129
+ cancelSubscription: (input: PayServiceCancelSubscriptionInput) => Promise<PayServiceCancelSubscriptionResult>;
130
+ };
131
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,261 @@
1
+ import { createHmac, timingSafeEqual } from "node:crypto";
2
+ export { CALLBACK_DELIVERY_STATUSES, isPayServicePaymentProductKind, isPayServicePaymentProvider, isPayServicePaymentSubscriptionCycle, PAYMENT_CALLBACK_SCHEMA_VERSION, PAYMENT_EVENT_TYPES, PAYMENT_ORDER_STATUSES, PAYMENT_PRODUCT_KINDS, PAYMENT_PROVIDERS, PAYMENT_SUBSCRIPTION_CYCLES, } from "./generated-contract.js";
3
+ const PAY_SERVICE_PATHS = {
4
+ checkoutCreate: "/api/v1/checkouts/create",
5
+ paymentMethods: "/api/v1/payment-methods",
6
+ subscriptionManage: "/api/v1/subscriptions/manage",
7
+ subscriptionCancel: "/api/v1/subscriptions/cancel",
8
+ };
9
+ const DEFAULT_RETRY_ATTEMPTS = 3;
10
+ const REDACT_KEY_PATTERN = /api[-_]?key|secret|token|password|authorization|cookie|signature|credential/i;
11
+ // 判断日志字段名是否属于敏感字段,输入对象 key,输出是否需要脱敏。
12
+ function shouldRedactKey(key) {
13
+ return REDACT_KEY_PATTERN.test(key);
14
+ }
15
+ // 递归脱敏日志对象,输入任意值,输出不包含密钥类字段明文的副本。
16
+ function redactForLog(value) {
17
+ if (Array.isArray(value)) {
18
+ return value.map((item) => redactForLog(item));
19
+ }
20
+ if (!value || typeof value !== "object") {
21
+ return value;
22
+ }
23
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [
24
+ key,
25
+ shouldRedactKey(key) ? "[REDACTED]" : redactForLog(item),
26
+ ]));
27
+ }
28
+ // 归一化 SDK API 地址,输入宿主注入的 base URL,输出无尾部斜杠的字符串。
29
+ function normalizeBaseUrl(value) {
30
+ return value.replace(/\/+$/, "");
31
+ }
32
+ // 拼接 pay-service 请求地址,输入 base URL、路径和查询参数,输出最终请求 URL。
33
+ function buildPayServiceUrl(apiUrl, path, params) {
34
+ const baseUrl = normalizeBaseUrl(apiUrl);
35
+ const rawUrl = `${baseUrl}${path}`;
36
+ if (!params) {
37
+ return rawUrl;
38
+ }
39
+ const query = new URLSearchParams();
40
+ for (const [key, value] of Object.entries(params)) {
41
+ if (value === null || value === undefined || value === "")
42
+ continue;
43
+ query.set(key, String(value));
44
+ }
45
+ const queryText = query.toString();
46
+ return queryText ? `${rawUrl}?${queryText}` : rawUrl;
47
+ }
48
+ // 解析 pay-service JSON 响应,输入 fetch response,输出协议 envelope 或 null。
49
+ async function parsePayServiceResponse(response) {
50
+ const rawText = await response.text().catch(() => "");
51
+ if (!rawText) {
52
+ return null;
53
+ }
54
+ try {
55
+ return JSON.parse(rawText);
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ // 从 pay-service envelope 中解析错误文案,输入 envelope 和 fallback,输出稳定错误信息。
62
+ function getPayServiceErrorMessage(envelope, fallback) {
63
+ return envelope?.error || fallback;
64
+ }
65
+ // 调用一次 pay-service 接口,输入请求参数,输出单次尝试的结构化结果。
66
+ async function runPayServiceAttempt(config, args) {
67
+ const url = buildPayServiceUrl(config.apiUrl, args.path, args.query);
68
+ const fetchImpl = config.fetchImpl ?? globalThis.fetch;
69
+ const headers = new Headers({
70
+ "x-pay-service-api-key": config.apiKey,
71
+ });
72
+ let body;
73
+ if (args.body) {
74
+ headers.set("Content-Type", "application/json");
75
+ body = JSON.stringify(args.body);
76
+ }
77
+ config.logInfo?.({
78
+ msg: "pay-service request",
79
+ data: {
80
+ operation: args.operation,
81
+ method: args.method,
82
+ path: args.path,
83
+ ...(args.query ? { searchParams: args.query } : {}),
84
+ ...(args.body ? { body: redactForLog(args.body) } : {}),
85
+ },
86
+ });
87
+ try {
88
+ const response = await fetchImpl(url, {
89
+ method: args.method,
90
+ headers,
91
+ body,
92
+ });
93
+ const envelope = await parsePayServiceResponse(response);
94
+ if (!response.ok) {
95
+ return {
96
+ ok: false,
97
+ status: response.status,
98
+ url,
99
+ code: "HTTP_ERROR",
100
+ message: getPayServiceErrorMessage(envelope, response.statusText || `HTTP ${response.status}`),
101
+ };
102
+ }
103
+ if (!envelope) {
104
+ return {
105
+ ok: false,
106
+ status: response.status,
107
+ url,
108
+ code: "PARSE_ERROR",
109
+ message: `${args.operation} response parse error`,
110
+ };
111
+ }
112
+ if (envelope.ok !== true) {
113
+ return {
114
+ ok: false,
115
+ status: response.status,
116
+ url,
117
+ code: "PAY_SERVICE_PROTOCOL_ERROR",
118
+ message: getPayServiceErrorMessage(envelope, `${args.operation} failed`),
119
+ };
120
+ }
121
+ return {
122
+ ok: true,
123
+ data: envelope.data,
124
+ status: response.status,
125
+ url,
126
+ };
127
+ }
128
+ catch (error) {
129
+ return {
130
+ ok: false,
131
+ url,
132
+ code: "NETWORK_ERROR",
133
+ message: error instanceof Error ? error.message : String(error),
134
+ error,
135
+ };
136
+ }
137
+ }
138
+ // 根据最终失败结果生成通知摘要,输入操作信息和尝试次数,输出宿主项目可转发的通知对象。
139
+ function createFailureNotification(operation, method, result, attempts) {
140
+ return {
141
+ service: "pay-service",
142
+ operation,
143
+ method,
144
+ url: result.url,
145
+ status: result.status,
146
+ code: result.code,
147
+ attempts,
148
+ message: result.message,
149
+ };
150
+ }
151
+ // 记录 pay-service 单次失败摘要,输入失败结果和尝试次数,副作用是调用宿主错误日志钩子。
152
+ function logAttemptFailure(config, operation, method, result, attempt) {
153
+ config.logError?.({
154
+ msg: "pay-service request failed",
155
+ data: {
156
+ service: "pay-service",
157
+ operation,
158
+ method,
159
+ url: result.url,
160
+ status: result.status,
161
+ code: result.code,
162
+ attempts: attempt,
163
+ message: result.message,
164
+ },
165
+ error: result.error,
166
+ });
167
+ }
168
+ // 调用 pay-service JSON 接口并按配置重试,输入请求参数,输出成功数据或最终抛错。
169
+ async function requestPayServiceJson(config, args) {
170
+ const retryAttempts = Math.max(1, config.retryAttempts ?? DEFAULT_RETRY_ATTEMPTS);
171
+ let finalFailure = null;
172
+ for (let attempt = 1; attempt <= retryAttempts; attempt += 1) {
173
+ const result = await runPayServiceAttempt(config, args);
174
+ if (result.ok === true) {
175
+ return result.data;
176
+ }
177
+ finalFailure = result;
178
+ logAttemptFailure(config, args.operation, args.method, result, attempt);
179
+ }
180
+ const failure = createFailureNotification(args.operation, args.method, finalFailure, retryAttempts);
181
+ await config.onFailure?.(failure);
182
+ throw new Error(failure.message || `${args.operation} request failed`);
183
+ }
184
+ // 计算 pay-service callback 签名,输入 webhook secret、时间戳和原始 body,输出 HMAC hex。
185
+ export function createPayServiceCallbackSignature(args) {
186
+ return createHmac("sha256", args.secret)
187
+ .update(`${args.timestamp}.${args.rawBody}`)
188
+ .digest("hex");
189
+ }
190
+ // 校验 pay-service callback 签名,输入原始 body、时间戳、签名和 secret,输出验签是否通过。
191
+ export function verifyPayServiceCallbackSignature(args) {
192
+ if (!args.timestamp || !args.signature || !/^[a-f0-9]+$/i.test(args.signature)) {
193
+ return false;
194
+ }
195
+ const expectedSignature = createPayServiceCallbackSignature({
196
+ secret: args.secret,
197
+ timestamp: args.timestamp,
198
+ rawBody: args.rawBody,
199
+ });
200
+ const expected = Buffer.from(expectedSignature, "hex");
201
+ const actual = Buffer.from(args.signature, "hex");
202
+ return expected.length === actual.length && timingSafeEqual(expected, actual);
203
+ }
204
+ // 创建 pay-service SDK 实例,输入宿主项目注入配置,输出不依赖 process.env 的项目 API 方法。
205
+ export function createPayServiceSdk(config) {
206
+ // 创建 checkout,输入商品、provider、客户和幂等信息,输出 pay-service 订单和支付页地址。
207
+ async function createCheckout(input) {
208
+ return requestPayServiceJson(config, {
209
+ operation: "createCheckout",
210
+ method: "POST",
211
+ path: PAY_SERVICE_PATHS.checkoutCreate,
212
+ body: {
213
+ ...input,
214
+ projectKey: config.projectKey,
215
+ },
216
+ });
217
+ }
218
+ // 查询商品可用支付方式,输入 productKey,输出 pay-service 控制台配置后的支付方式列表。
219
+ async function getPaymentMethods(productKey) {
220
+ return requestPayServiceJson(config, {
221
+ operation: "getPaymentMethods",
222
+ method: "GET",
223
+ path: PAY_SERVICE_PATHS.paymentMethods,
224
+ query: {
225
+ projectKey: config.projectKey,
226
+ productKey,
227
+ },
228
+ });
229
+ }
230
+ // 创建订阅管理动作,输入 provider 和订单标识,输出 customer portal 或取消确认动作。
231
+ async function createSubscriptionManagement(input) {
232
+ return requestPayServiceJson(config, {
233
+ operation: "manageSubscription",
234
+ method: "POST",
235
+ path: PAY_SERVICE_PATHS.subscriptionManage,
236
+ body: {
237
+ ...input,
238
+ projectKey: config.projectKey,
239
+ },
240
+ });
241
+ }
242
+ // 请求取消订阅,输入 provider、subscriptionId 和 orderId,输出 pay-service 的取消结果。
243
+ async function cancelSubscription(input) {
244
+ return requestPayServiceJson(config, {
245
+ operation: "cancelSubscription",
246
+ method: "POST",
247
+ path: PAY_SERVICE_PATHS.subscriptionCancel,
248
+ body: {
249
+ ...input,
250
+ projectKey: config.projectKey,
251
+ },
252
+ });
253
+ }
254
+ return {
255
+ createCheckout,
256
+ getPaymentMethods,
257
+ createSubscriptionManagement,
258
+ cancelSubscription,
259
+ };
260
+ }
261
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@joedeanvapi/pay-service-sdk",
3
+ "version": "0.1.0",
4
+ "description": "Typed pay-service project API SDK generated from the pay-service contract.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "default": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "generate": "tsx scripts/generate-contract.ts",
20
+ "check:publish-safety": "tsx scripts/check-publish-safety.ts",
21
+ "pretest": "npm run build",
22
+ "test": "tsx --test tests/*.test.ts",
23
+ "prebuild": "npm run generate",
24
+ "build": "tsc -p tsconfig.build.json",
25
+ "typecheck": "npm run generate && tsc --noEmit",
26
+ "prepublishOnly": "npm run build && npm run check:publish-safety"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public"
30
+ }
31
+ }