@paykit-sdk/xendit 1.0.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.
- package/README.md +177 -0
- package/dist/index.d.mts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +4824 -0
- package/dist/index.mjs +4820 -0
- package/dist/schema.d.mts +192 -0
- package/dist/schema.d.ts +192 -0
- package/dist/schema.js +8 -0
- package/dist/schema.mjs +6 -0
- package/dist/utils/mapper.d.mts +34 -0
- package/dist/utils/mapper.d.ts +34 -0
- package/dist/utils/mapper.js +169 -0
- package/dist/utils/mapper.mjs +162 -0
- package/dist/xendit-provider.d.mts +50 -0
- package/dist/xendit-provider.d.ts +50 -0
- package/dist/xendit-provider.js +4806 -0
- package/dist/xendit-provider.mjs +4804 -0
- package/package.json +46 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { omitInternalMetadata, parseJSON, PAYKIT_METADATA_KEY, Schema, billingModeSchema } from '@paykit-sdk/core';
|
|
2
|
+
|
|
3
|
+
// src/utils/mapper.ts
|
|
4
|
+
var paymentStatusMap = {
|
|
5
|
+
PENDING: "pending",
|
|
6
|
+
PAID: "succeeded",
|
|
7
|
+
SETTLED: "succeeded",
|
|
8
|
+
EXPIRED: "canceled"
|
|
9
|
+
};
|
|
10
|
+
var subscriptionStatusMap = {
|
|
11
|
+
ACTIVE: "active",
|
|
12
|
+
INACTIVE: "canceled",
|
|
13
|
+
PENDING: "pending",
|
|
14
|
+
REQUIRES_ACTION: "pending"
|
|
15
|
+
};
|
|
16
|
+
var resolveCustomerFromEmail = (email) => email ? { email } : null;
|
|
17
|
+
var Payment$inboundSchema = (data, overridePaymentUrl) => {
|
|
18
|
+
const rawMeta = data.metadata ?? {};
|
|
19
|
+
const metadata = omitInternalMetadata(rawMeta);
|
|
20
|
+
let itemId = null;
|
|
21
|
+
const paykitMeta = parseJSON(
|
|
22
|
+
rawMeta[PAYKIT_METADATA_KEY],
|
|
23
|
+
Schema.object({ item_id: Schema.string().optional() })
|
|
24
|
+
);
|
|
25
|
+
if (paykitMeta) itemId = paykitMeta.item_id ?? null;
|
|
26
|
+
const status = paymentStatusMap[data.status] ?? "pending";
|
|
27
|
+
return {
|
|
28
|
+
id: data.id,
|
|
29
|
+
amount: data.amount,
|
|
30
|
+
currency: data.currency,
|
|
31
|
+
customer: resolveCustomerFromEmail(
|
|
32
|
+
data.payer_email ?? data.customer?.email
|
|
33
|
+
),
|
|
34
|
+
status,
|
|
35
|
+
metadata,
|
|
36
|
+
item_id: itemId,
|
|
37
|
+
requires_action: status === "pending",
|
|
38
|
+
payment_url: overridePaymentUrl ?? null
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
var Checkout$inboundSchema = (data) => {
|
|
42
|
+
const rawMeta = data.metadata ?? {};
|
|
43
|
+
const metadata = omitInternalMetadata(rawMeta);
|
|
44
|
+
let itemId = "";
|
|
45
|
+
let quantity = 1;
|
|
46
|
+
let type = null;
|
|
47
|
+
const paykitMeta = parseJSON(
|
|
48
|
+
rawMeta[PAYKIT_METADATA_KEY],
|
|
49
|
+
Schema.object({
|
|
50
|
+
item_id: Schema.string().optional(),
|
|
51
|
+
quantity: Schema.number().optional(),
|
|
52
|
+
type: billingModeSchema.optional()
|
|
53
|
+
})
|
|
54
|
+
);
|
|
55
|
+
if (paykitMeta) {
|
|
56
|
+
itemId = paykitMeta.item_id ?? "";
|
|
57
|
+
quantity = paykitMeta.quantity ?? 1;
|
|
58
|
+
type = paykitMeta.type ?? null;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
id: data.id,
|
|
62
|
+
customer: resolveCustomerFromEmail(
|
|
63
|
+
data.payer_email ?? data.customer?.email
|
|
64
|
+
),
|
|
65
|
+
payment_url: data.invoice_url,
|
|
66
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : null,
|
|
67
|
+
session_type: type ?? "one_time",
|
|
68
|
+
products: [{ id: itemId, quantity }],
|
|
69
|
+
currency: data.currency,
|
|
70
|
+
amount: data.amount
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
var Customer$inboundSchema = (data) => {
|
|
74
|
+
const rawMeta = data.metadata ?? {};
|
|
75
|
+
const metadata = omitInternalMetadata(rawMeta);
|
|
76
|
+
const name = [
|
|
77
|
+
data.individual_detail?.given_names,
|
|
78
|
+
data.individual_detail?.surname
|
|
79
|
+
].filter(Boolean).join(" ");
|
|
80
|
+
return {
|
|
81
|
+
id: data.id,
|
|
82
|
+
email: data.email ?? "",
|
|
83
|
+
name,
|
|
84
|
+
phone: data.mobile_number ?? data.phone_number ?? null,
|
|
85
|
+
metadata,
|
|
86
|
+
created_at: new Date(data.created),
|
|
87
|
+
updated_at: new Date(data.updated),
|
|
88
|
+
// Xendit-native fields with no PayKit core equivalent.
|
|
89
|
+
custom_fields: { type: data.type ?? null }
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
var recurringIntervalUnitMap = {
|
|
93
|
+
DAY: "day",
|
|
94
|
+
WEEK: "week",
|
|
95
|
+
MONTH: "month"
|
|
96
|
+
};
|
|
97
|
+
var Subscription$inboundSchema = (data) => {
|
|
98
|
+
const rawMeta = data.metadata ?? {};
|
|
99
|
+
const metadata = omitInternalMetadata(rawMeta);
|
|
100
|
+
const status = subscriptionStatusMap[data.status] ?? "pending";
|
|
101
|
+
const periodAnchor = data.schedule.anchor_date ? new Date(data.schedule.anchor_date) : /* @__PURE__ */ new Date(0);
|
|
102
|
+
const authAction = data.actions?.find(
|
|
103
|
+
(action) => action.action === "AUTH"
|
|
104
|
+
);
|
|
105
|
+
return {
|
|
106
|
+
id: data.id,
|
|
107
|
+
customer: { id: data.customer_id },
|
|
108
|
+
amount: data.amount,
|
|
109
|
+
currency: data.currency,
|
|
110
|
+
status,
|
|
111
|
+
current_period_start: periodAnchor,
|
|
112
|
+
current_period_end: periodAnchor,
|
|
113
|
+
item_id: data.description ?? data.reference_id,
|
|
114
|
+
billing_interval: recurringIntervalUnitMap[data.schedule.interval] ?? "month",
|
|
115
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : null,
|
|
116
|
+
custom_fields: {
|
|
117
|
+
payment_tokens: data.payment_tokens,
|
|
118
|
+
recurring_cycle_count: data.recurring_cycle_count ?? null,
|
|
119
|
+
failed_cycle_action: data.failed_cycle_action ?? null
|
|
120
|
+
},
|
|
121
|
+
requires_action: status === "pending" || data.status === "REQUIRES_ACTION",
|
|
122
|
+
payment_url: authAction?.url ?? null
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
var Refund$inboundSchema = (data) => {
|
|
126
|
+
const rawMeta = data.metadata ?? {};
|
|
127
|
+
const metadata = omitInternalMetadata(rawMeta);
|
|
128
|
+
return {
|
|
129
|
+
id: data.id,
|
|
130
|
+
amount: data.amount,
|
|
131
|
+
currency: data.currency,
|
|
132
|
+
reason: data.reason ?? null,
|
|
133
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : null
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
var Invoice$inboundSchema = (data) => {
|
|
137
|
+
const rawMeta = data.metadata ?? {};
|
|
138
|
+
const metadata = omitInternalMetadata(rawMeta);
|
|
139
|
+
return {
|
|
140
|
+
id: data.id,
|
|
141
|
+
customer: resolveCustomerFromEmail(
|
|
142
|
+
data.payer_email ?? data.customer?.email
|
|
143
|
+
),
|
|
144
|
+
subscription_id: data.recurring_payment_id ?? null,
|
|
145
|
+
billing_mode: data.recurring_payment_id ? "recurring" : "one_time",
|
|
146
|
+
amount_paid: data.paid_amount ?? data.amount,
|
|
147
|
+
currency: data.currency,
|
|
148
|
+
status: "paid",
|
|
149
|
+
paid_at: data.paid_at ?? data.updated,
|
|
150
|
+
line_items: data.items?.map((item) => ({
|
|
151
|
+
id: item.name,
|
|
152
|
+
quantity: item.quantity
|
|
153
|
+
})) ?? null,
|
|
154
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : null,
|
|
155
|
+
custom_fields: {
|
|
156
|
+
payment_method: data.payment_method ?? null,
|
|
157
|
+
payment_channel: data.payment_channel ?? null
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export { Checkout$inboundSchema, Customer$inboundSchema, Invoice$inboundSchema, Payment$inboundSchema, Refund$inboundSchema, Subscription$inboundSchema };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AbstractPayKitProvider, PayKitProvider, ProviderMetadataRegistry, PaykitProviderOptions, CreateCheckoutSchema, Checkout, UpdateCheckoutSchema, CreateCustomerParams, Customer, UpdateCustomerParams, CreateSubscriptionSchema, Subscription, UpdateSubscriptionSchema, CreatePaymentSchema, Payment, UpdatePaymentSchema, CapturePaymentSchema, CreateRefundSchema, Refund, WebhookHandlerConfig, WebhookEventPayload } from '@paykit-sdk/core';
|
|
2
|
+
import { XenditPaymentToken, XenditRawEvents } from './schema.mjs';
|
|
3
|
+
|
|
4
|
+
interface XenditMetadata extends ProviderMetadataRegistry {
|
|
5
|
+
subscription: {
|
|
6
|
+
payment_tokens?: XenditPaymentToken[];
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
interface XenditOptions extends PaykitProviderOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Xendit secret key, e.g. `xnd_development_...` or `xnd_production_...`
|
|
12
|
+
*/
|
|
13
|
+
secretKey: string;
|
|
14
|
+
}
|
|
15
|
+
declare class XenditProvider extends AbstractPayKitProvider implements PayKitProvider<XenditMetadata, null, XenditRawEvents> {
|
|
16
|
+
readonly providerName = "xendit";
|
|
17
|
+
private readonly _client;
|
|
18
|
+
private readonly opts;
|
|
19
|
+
readonly isSandbox: boolean;
|
|
20
|
+
constructor(opts: XenditOptions);
|
|
21
|
+
get _native(): null;
|
|
22
|
+
private unwrap;
|
|
23
|
+
private createInvoice;
|
|
24
|
+
createCheckout: (params: CreateCheckoutSchema<XenditMetadata["checkout"]>) => Promise<Checkout>;
|
|
25
|
+
retrieveCheckout: (id: string) => Promise<Checkout | null>;
|
|
26
|
+
updateCheckout: (_id: string, _params: UpdateCheckoutSchema<XenditMetadata["checkout"]>) => Promise<Checkout>;
|
|
27
|
+
deleteCheckout: (id: string) => Promise<null>;
|
|
28
|
+
createCustomer: (params: CreateCustomerParams<XenditMetadata["customer"]>) => Promise<Customer>;
|
|
29
|
+
retrieveCustomer: (id: string) => Promise<Customer | null>;
|
|
30
|
+
updateCustomer: (id: string, params: UpdateCustomerParams<XenditMetadata["customer"]>) => Promise<Customer>;
|
|
31
|
+
deleteCustomer: (_id: string) => Promise<null>;
|
|
32
|
+
private recurringHeaders;
|
|
33
|
+
createSubscription: (params: CreateSubscriptionSchema<XenditMetadata["subscription"]>) => Promise<Subscription>;
|
|
34
|
+
retrieveSubscription: (id: string) => Promise<Subscription | null>;
|
|
35
|
+
updateSubscription: (id: string, params: UpdateSubscriptionSchema<XenditMetadata["subscription"]>) => Promise<Subscription>;
|
|
36
|
+
cancelSubscription: (id: string) => Promise<Subscription>;
|
|
37
|
+
deleteSubscription: (id: string) => Promise<null>;
|
|
38
|
+
createPayment: (params: CreatePaymentSchema<XenditMetadata["payment"]>) => Promise<Payment>;
|
|
39
|
+
retrievePayment: (id: string) => Promise<Payment | null>;
|
|
40
|
+
updatePayment: (_id: string, _params: UpdatePaymentSchema<XenditMetadata["payment"]>) => Promise<Payment>;
|
|
41
|
+
deletePayment: (_id: string) => Promise<null>;
|
|
42
|
+
capturePayment: (_id: string, _params: CapturePaymentSchema) => Promise<Payment>;
|
|
43
|
+
cancelPayment: (id: string) => Promise<Payment>;
|
|
44
|
+
createRefund: (params: CreateRefundSchema<XenditMetadata["refund"]>) => Promise<Refund>;
|
|
45
|
+
handleWebhook: (payload: WebhookHandlerConfig, webhookSecret: string | null) => Promise<Array<WebhookEventPayload<XenditRawEvents>>>;
|
|
46
|
+
private safeStringEqual;
|
|
47
|
+
private mapToStandardEvents;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { type XenditOptions, XenditProvider };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { AbstractPayKitProvider, PayKitProvider, ProviderMetadataRegistry, PaykitProviderOptions, CreateCheckoutSchema, Checkout, UpdateCheckoutSchema, CreateCustomerParams, Customer, UpdateCustomerParams, CreateSubscriptionSchema, Subscription, UpdateSubscriptionSchema, CreatePaymentSchema, Payment, UpdatePaymentSchema, CapturePaymentSchema, CreateRefundSchema, Refund, WebhookHandlerConfig, WebhookEventPayload } from '@paykit-sdk/core';
|
|
2
|
+
import { XenditPaymentToken, XenditRawEvents } from './schema.js';
|
|
3
|
+
|
|
4
|
+
interface XenditMetadata extends ProviderMetadataRegistry {
|
|
5
|
+
subscription: {
|
|
6
|
+
payment_tokens?: XenditPaymentToken[];
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
interface XenditOptions extends PaykitProviderOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Xendit secret key, e.g. `xnd_development_...` or `xnd_production_...`
|
|
12
|
+
*/
|
|
13
|
+
secretKey: string;
|
|
14
|
+
}
|
|
15
|
+
declare class XenditProvider extends AbstractPayKitProvider implements PayKitProvider<XenditMetadata, null, XenditRawEvents> {
|
|
16
|
+
readonly providerName = "xendit";
|
|
17
|
+
private readonly _client;
|
|
18
|
+
private readonly opts;
|
|
19
|
+
readonly isSandbox: boolean;
|
|
20
|
+
constructor(opts: XenditOptions);
|
|
21
|
+
get _native(): null;
|
|
22
|
+
private unwrap;
|
|
23
|
+
private createInvoice;
|
|
24
|
+
createCheckout: (params: CreateCheckoutSchema<XenditMetadata["checkout"]>) => Promise<Checkout>;
|
|
25
|
+
retrieveCheckout: (id: string) => Promise<Checkout | null>;
|
|
26
|
+
updateCheckout: (_id: string, _params: UpdateCheckoutSchema<XenditMetadata["checkout"]>) => Promise<Checkout>;
|
|
27
|
+
deleteCheckout: (id: string) => Promise<null>;
|
|
28
|
+
createCustomer: (params: CreateCustomerParams<XenditMetadata["customer"]>) => Promise<Customer>;
|
|
29
|
+
retrieveCustomer: (id: string) => Promise<Customer | null>;
|
|
30
|
+
updateCustomer: (id: string, params: UpdateCustomerParams<XenditMetadata["customer"]>) => Promise<Customer>;
|
|
31
|
+
deleteCustomer: (_id: string) => Promise<null>;
|
|
32
|
+
private recurringHeaders;
|
|
33
|
+
createSubscription: (params: CreateSubscriptionSchema<XenditMetadata["subscription"]>) => Promise<Subscription>;
|
|
34
|
+
retrieveSubscription: (id: string) => Promise<Subscription | null>;
|
|
35
|
+
updateSubscription: (id: string, params: UpdateSubscriptionSchema<XenditMetadata["subscription"]>) => Promise<Subscription>;
|
|
36
|
+
cancelSubscription: (id: string) => Promise<Subscription>;
|
|
37
|
+
deleteSubscription: (id: string) => Promise<null>;
|
|
38
|
+
createPayment: (params: CreatePaymentSchema<XenditMetadata["payment"]>) => Promise<Payment>;
|
|
39
|
+
retrievePayment: (id: string) => Promise<Payment | null>;
|
|
40
|
+
updatePayment: (_id: string, _params: UpdatePaymentSchema<XenditMetadata["payment"]>) => Promise<Payment>;
|
|
41
|
+
deletePayment: (_id: string) => Promise<null>;
|
|
42
|
+
capturePayment: (_id: string, _params: CapturePaymentSchema) => Promise<Payment>;
|
|
43
|
+
cancelPayment: (id: string) => Promise<Payment>;
|
|
44
|
+
createRefund: (params: CreateRefundSchema<XenditMetadata["refund"]>) => Promise<Refund>;
|
|
45
|
+
handleWebhook: (payload: WebhookHandlerConfig, webhookSecret: string | null) => Promise<Array<WebhookEventPayload<XenditRawEvents>>>;
|
|
46
|
+
private safeStringEqual;
|
|
47
|
+
private mapToStandardEvents;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { type XenditOptions, XenditProvider };
|