@pulgueta/epayco-convex 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.
- package/LICENSE +201 -0
- package/README.md +945 -0
- package/dist/client/_generated/_ignore.d.ts +1 -0
- package/dist/client/_generated/_ignore.d.ts.map +1 -0
- package/dist/client/_generated/_ignore.js +3 -0
- package/dist/client/_generated/_ignore.js.map +1 -0
- package/dist/client/index.d.ts +222 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +355 -0
- package/dist/client/index.js.map +1 -0
- package/dist/component/_generated/api.d.ts +78 -0
- package/dist/component/_generated/api.d.ts.map +1 -0
- package/dist/component/_generated/api.js +31 -0
- package/dist/component/_generated/api.js.map +1 -0
- package/dist/component/_generated/component.d.ts +580 -0
- package/dist/component/_generated/component.d.ts.map +1 -0
- package/dist/component/_generated/component.js +11 -0
- package/dist/component/_generated/component.js.map +1 -0
- package/dist/component/_generated/dataModel.d.ts +46 -0
- package/dist/component/_generated/dataModel.d.ts.map +1 -0
- package/dist/component/_generated/dataModel.js +11 -0
- package/dist/component/_generated/dataModel.js.map +1 -0
- package/dist/component/_generated/server.d.ts +121 -0
- package/dist/component/_generated/server.d.ts.map +1 -0
- package/dist/component/_generated/server.js +78 -0
- package/dist/component/_generated/server.js.map +1 -0
- package/dist/component/banks.d.ts +14 -0
- package/dist/component/banks.d.ts.map +1 -0
- package/dist/component/banks.js +37 -0
- package/dist/component/banks.js.map +1 -0
- package/dist/component/cashApi.d.ts +59 -0
- package/dist/component/cashApi.d.ts.map +1 -0
- package/dist/component/cashApi.js +88 -0
- package/dist/component/cashApi.js.map +1 -0
- package/dist/component/chargesApi.d.ts +64 -0
- package/dist/component/chargesApi.d.ts.map +1 -0
- package/dist/component/chargesApi.js +106 -0
- package/dist/component/chargesApi.js.map +1 -0
- package/dist/component/convex.config.d.ts +3 -0
- package/dist/component/convex.config.d.ts.map +1 -0
- package/dist/component/convex.config.js +6 -0
- package/dist/component/convex.config.js.map +1 -0
- package/dist/component/customers.d.ts +67 -0
- package/dist/component/customers.d.ts.map +1 -0
- package/dist/component/customers.js +103 -0
- package/dist/component/customers.js.map +1 -0
- package/dist/component/customersApi.d.ts +99 -0
- package/dist/component/customersApi.d.ts.map +1 -0
- package/dist/component/customersApi.js +176 -0
- package/dist/component/customersApi.js.map +1 -0
- package/dist/component/daviplataApi.d.ts +43 -0
- package/dist/component/daviplataApi.d.ts.map +1 -0
- package/dist/component/daviplataApi.js +103 -0
- package/dist/component/daviplataApi.js.map +1 -0
- package/dist/component/epaycoClient.d.ts +84 -0
- package/dist/component/epaycoClient.d.ts.map +1 -0
- package/dist/component/epaycoClient.js +422 -0
- package/dist/component/epaycoClient.js.map +1 -0
- package/dist/component/payloads.d.ts +34 -0
- package/dist/component/payloads.d.ts.map +1 -0
- package/dist/component/payloads.js +45 -0
- package/dist/component/payloads.js.map +1 -0
- package/dist/component/plans.d.ts +47 -0
- package/dist/component/plans.d.ts.map +1 -0
- package/dist/component/plans.js +83 -0
- package/dist/component/plans.js.map +1 -0
- package/dist/component/plansApi.d.ts +64 -0
- package/dist/component/plansApi.d.ts.map +1 -0
- package/dist/component/plansApi.js +121 -0
- package/dist/component/plansApi.js.map +1 -0
- package/dist/component/pseApi.d.ts +68 -0
- package/dist/component/pseApi.d.ts.map +1 -0
- package/dist/component/pseApi.js +113 -0
- package/dist/component/pseApi.js.map +1 -0
- package/dist/component/rateLimits.d.ts +69 -0
- package/dist/component/rateLimits.d.ts.map +1 -0
- package/dist/component/rateLimits.js +67 -0
- package/dist/component/rateLimits.js.map +1 -0
- package/dist/component/safetypayApi.d.ts +35 -0
- package/dist/component/safetypayApi.d.ts.map +1 -0
- package/dist/component/safetypayApi.js +68 -0
- package/dist/component/safetypayApi.js.map +1 -0
- package/dist/component/schema.d.ts +200 -0
- package/dist/component/schema.d.ts.map +1 -0
- package/dist/component/schema.js +104 -0
- package/dist/component/schema.js.map +1 -0
- package/dist/component/signature.d.ts +11 -0
- package/dist/component/signature.d.ts.map +1 -0
- package/dist/component/signature.js +28 -0
- package/dist/component/signature.js.map +1 -0
- package/dist/component/status.d.ts +12 -0
- package/dist/component/status.d.ts.map +1 -0
- package/dist/component/status.js +55 -0
- package/dist/component/status.js.map +1 -0
- package/dist/component/subscriptions.d.ts +69 -0
- package/dist/component/subscriptions.d.ts.map +1 -0
- package/dist/component/subscriptions.js +114 -0
- package/dist/component/subscriptions.js.map +1 -0
- package/dist/component/subscriptionsApi.d.ts +62 -0
- package/dist/component/subscriptionsApi.d.ts.map +1 -0
- package/dist/component/subscriptionsApi.js +147 -0
- package/dist/component/subscriptionsApi.js.map +1 -0
- package/dist/component/tokens.d.ts +31 -0
- package/dist/component/tokens.d.ts.map +1 -0
- package/dist/component/tokens.js +79 -0
- package/dist/component/tokens.js.map +1 -0
- package/dist/component/tokensApi.d.ts +18 -0
- package/dist/component/tokensApi.d.ts.map +1 -0
- package/dist/component/tokensApi.js +53 -0
- package/dist/component/tokensApi.js.map +1 -0
- package/dist/component/transactions.d.ts +103 -0
- package/dist/component/transactions.d.ts.map +1 -0
- package/dist/component/transactions.js +177 -0
- package/dist/component/transactions.js.map +1 -0
- package/dist/component/validators.d.ts +571 -0
- package/dist/component/validators.d.ts.map +1 -0
- package/dist/component/validators.js +203 -0
- package/dist/component/validators.js.map +1 -0
- package/dist/component/webhooks.d.ts +55 -0
- package/dist/component/webhooks.d.ts.map +1 -0
- package/dist/component/webhooks.js +172 -0
- package/dist/component/webhooks.js.map +1 -0
- package/dist/react/index.d.ts +16 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +43 -0
- package/dist/react/index.js.map +1 -0
- package/package.json +106 -0
- package/src/client/_generated/_ignore.ts +1 -0
- package/src/client/index.test.ts +66 -0
- package/src/client/index.ts +633 -0
- package/src/client/setup.test.ts +26 -0
- package/src/component/_generated/api.ts +94 -0
- package/src/component/_generated/component.ts +809 -0
- package/src/component/_generated/dataModel.ts +60 -0
- package/src/component/_generated/server.ts +156 -0
- package/src/component/banks.ts +41 -0
- package/src/component/cashApi.ts +100 -0
- package/src/component/chargesApi.ts +119 -0
- package/src/component/convex.config.ts +7 -0
- package/src/component/customers.test.ts +122 -0
- package/src/component/customers.ts +116 -0
- package/src/component/customersApi.ts +206 -0
- package/src/component/daviplataApi.ts +119 -0
- package/src/component/epaycoApi.test.ts +110 -0
- package/src/component/epaycoClient.ts +578 -0
- package/src/component/payloads.ts +67 -0
- package/src/component/plans.test.ts +129 -0
- package/src/component/plans.ts +86 -0
- package/src/component/plansApi.ts +135 -0
- package/src/component/pseApi.ts +125 -0
- package/src/component/rateLimits.ts +67 -0
- package/src/component/safetypayApi.ts +78 -0
- package/src/component/schema.ts +124 -0
- package/src/component/setup.test.helper.ts +10 -0
- package/src/component/setup.test.ts +22 -0
- package/src/component/signature.ts +38 -0
- package/src/component/status.ts +71 -0
- package/src/component/subscriptions.test.ts +117 -0
- package/src/component/subscriptions.ts +128 -0
- package/src/component/subscriptionsApi.ts +172 -0
- package/src/component/tokens.ts +89 -0
- package/src/component/tokensApi.ts +63 -0
- package/src/component/transactions.test.ts +227 -0
- package/src/component/transactions.ts +200 -0
- package/src/component/validators.ts +245 -0
- package/src/component/webhooks.test.ts +137 -0
- package/src/component/webhooks.ts +229 -0
- package/src/react/index.ts +71 -0
- package/src/test.ts +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=_ignore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_ignore.d.ts","sourceRoot":"","sources":["../../../src/client/_generated/_ignore.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_ignore.js","sourceRoot":"","sources":["../../../src/client/_generated/_ignore.ts"],"names":[],"mappings":";AAAA,kEAAkE"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import type { Auth, GenericActionCtx, GenericDataModel, GenericQueryCtx, HttpRouter } from "convex/server";
|
|
2
|
+
import type { Infer } from "convex/values";
|
|
3
|
+
import type { ComponentApi } from "../component/_generated/component.js";
|
|
4
|
+
import { chargeInfoValidator, customerInfoValidator, cashInfoValidator, cashProviderValidator, daviplataInfoValidator, planInfoValidator, pseInfoValidator, safetypayInfoValidator, subscriptionInfoValidator, tokenInfoValidator } from "../component/validators.js";
|
|
5
|
+
type QueryCtx = Pick<GenericQueryCtx<GenericDataModel>, "runQuery">;
|
|
6
|
+
type ActionCtx = Pick<GenericActionCtx<GenericDataModel>, "runQuery" | "runMutation" | "runAction">;
|
|
7
|
+
type CustomerInfo = Infer<typeof customerInfoValidator>;
|
|
8
|
+
type TokenInfo = Infer<typeof tokenInfoValidator>;
|
|
9
|
+
type ChargeInfo = Infer<typeof chargeInfoValidator>;
|
|
10
|
+
type PseInfo = Infer<typeof pseInfoValidator>;
|
|
11
|
+
type CashInfo = Infer<typeof cashInfoValidator>;
|
|
12
|
+
type CashProvider = Infer<typeof cashProviderValidator>;
|
|
13
|
+
type DaviplataInfo = Infer<typeof daviplataInfoValidator>;
|
|
14
|
+
type SafetyPayInfo = Infer<typeof safetypayInfoValidator>;
|
|
15
|
+
type PlanInfo = Infer<typeof planInfoValidator>;
|
|
16
|
+
type SubscriptionInfo = Infer<typeof subscriptionInfoValidator>;
|
|
17
|
+
export interface EPaycoOptions {
|
|
18
|
+
/** ePayco PUBLIC_KEY. Falls back to `EPAYCO_PUBLIC_KEY`. */
|
|
19
|
+
publicKey?: string;
|
|
20
|
+
/** ePayco PRIVATE_KEY. Falls back to `EPAYCO_PRIVATE_KEY`. */
|
|
21
|
+
privateKey?: string;
|
|
22
|
+
/** Run against the ePayco sandbox. Falls back to `EPAYCO_TEST_MODE === "true"`. */
|
|
23
|
+
testMode?: boolean;
|
|
24
|
+
/** API language ("ES" | "EN"). Falls back to `EPAYCO_LANG` or "ES". */
|
|
25
|
+
lang?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Host-side client for the ePayco component. Construct it once with the
|
|
29
|
+
* component reference and (optionally) credentials, then call its methods from
|
|
30
|
+
* your own actions/queries. Credentials are read from the environment by
|
|
31
|
+
* default so secrets never need to be hard-coded.
|
|
32
|
+
*/
|
|
33
|
+
export declare class EPayco {
|
|
34
|
+
component: ComponentApi;
|
|
35
|
+
private options;
|
|
36
|
+
constructor(component: ComponentApi, options?: EPaycoOptions);
|
|
37
|
+
private creds;
|
|
38
|
+
createToken(ctx: ActionCtx, args: {
|
|
39
|
+
userId: string;
|
|
40
|
+
tokenInfo: TokenInfo;
|
|
41
|
+
}): Promise<any>;
|
|
42
|
+
getLocalTokens(ctx: QueryCtx, args: {
|
|
43
|
+
userId: string;
|
|
44
|
+
}): Promise<any>;
|
|
45
|
+
createCustomer(ctx: ActionCtx, args: {
|
|
46
|
+
userId: string;
|
|
47
|
+
customerInfo: CustomerInfo;
|
|
48
|
+
}): Promise<any>;
|
|
49
|
+
getCustomer(ctx: ActionCtx, args: {
|
|
50
|
+
epaycoCustomerId: string;
|
|
51
|
+
userId: string;
|
|
52
|
+
}): Promise<any>;
|
|
53
|
+
listCustomers(ctx: ActionCtx, args?: {
|
|
54
|
+
page?: number;
|
|
55
|
+
perPage?: number;
|
|
56
|
+
}): Promise<any>;
|
|
57
|
+
updateCustomer(ctx: ActionCtx, args: {
|
|
58
|
+
userId: string;
|
|
59
|
+
epaycoCustomerId: string;
|
|
60
|
+
name?: string;
|
|
61
|
+
lastName?: string;
|
|
62
|
+
email?: string;
|
|
63
|
+
phone?: string;
|
|
64
|
+
cellPhone?: string;
|
|
65
|
+
city?: string;
|
|
66
|
+
address?: string;
|
|
67
|
+
}): Promise<any>;
|
|
68
|
+
deleteCustomerCard(ctx: ActionCtx, args: {
|
|
69
|
+
franchise: string;
|
|
70
|
+
mask: string;
|
|
71
|
+
customerId: string;
|
|
72
|
+
}): Promise<any>;
|
|
73
|
+
addDefaultCard(ctx: ActionCtx, args: {
|
|
74
|
+
customerId: string;
|
|
75
|
+
token: string;
|
|
76
|
+
franchise: string;
|
|
77
|
+
mask: string;
|
|
78
|
+
}): Promise<any>;
|
|
79
|
+
addNewToken(ctx: ActionCtx, args: {
|
|
80
|
+
customerId: string;
|
|
81
|
+
tokenCard: string;
|
|
82
|
+
}): Promise<any>;
|
|
83
|
+
getLocalCustomer(ctx: QueryCtx, args: {
|
|
84
|
+
userId: string;
|
|
85
|
+
}): Promise<any>;
|
|
86
|
+
createPlan(ctx: ActionCtx, args: {
|
|
87
|
+
planInfo: PlanInfo;
|
|
88
|
+
}): Promise<any>;
|
|
89
|
+
getPlan(ctx: ActionCtx, args: {
|
|
90
|
+
epaycoPlanId: string;
|
|
91
|
+
}): Promise<any>;
|
|
92
|
+
listPlans(ctx: ActionCtx): Promise<any>;
|
|
93
|
+
updatePlan(ctx: ActionCtx, args: {
|
|
94
|
+
epaycoPlanId: string;
|
|
95
|
+
name?: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
amount?: number;
|
|
98
|
+
currency?: string;
|
|
99
|
+
interval?: string;
|
|
100
|
+
intervalCount?: number;
|
|
101
|
+
trialDays?: number;
|
|
102
|
+
}): Promise<any>;
|
|
103
|
+
deletePlan(ctx: ActionCtx, args: {
|
|
104
|
+
epaycoPlanId: string;
|
|
105
|
+
}): Promise<any>;
|
|
106
|
+
getLocalPlan(ctx: QueryCtx, args: {
|
|
107
|
+
epaycoPlanId: string;
|
|
108
|
+
}): Promise<any>;
|
|
109
|
+
listLocalPlans(ctx: QueryCtx, args?: {
|
|
110
|
+
status?: string;
|
|
111
|
+
}): Promise<any>;
|
|
112
|
+
createSubscription(ctx: ActionCtx, args: {
|
|
113
|
+
userId: string;
|
|
114
|
+
subscriptionInfo: SubscriptionInfo;
|
|
115
|
+
}): Promise<any>;
|
|
116
|
+
getSubscription(ctx: ActionCtx, args: {
|
|
117
|
+
epaycoSubscriptionId: string;
|
|
118
|
+
}): Promise<any>;
|
|
119
|
+
listSubscriptionsFromEpayco(ctx: ActionCtx): Promise<any>;
|
|
120
|
+
cancelSubscription(ctx: ActionCtx, args: {
|
|
121
|
+
epaycoSubscriptionId: string;
|
|
122
|
+
}): Promise<any>;
|
|
123
|
+
chargeSubscription(ctx: ActionCtx, args: {
|
|
124
|
+
userId: string;
|
|
125
|
+
idPlan: string;
|
|
126
|
+
customer: string;
|
|
127
|
+
tokenCard: string;
|
|
128
|
+
docType: string;
|
|
129
|
+
docNumber: string;
|
|
130
|
+
ip?: string;
|
|
131
|
+
}): Promise<any>;
|
|
132
|
+
getActiveSubscription(ctx: QueryCtx, args: {
|
|
133
|
+
userId: string;
|
|
134
|
+
}): Promise<any>;
|
|
135
|
+
listSubscriptions(ctx: QueryCtx, args: {
|
|
136
|
+
userId: string;
|
|
137
|
+
}): Promise<any>;
|
|
138
|
+
chargeCreditCard(ctx: ActionCtx, args: {
|
|
139
|
+
userId: string;
|
|
140
|
+
chargeInfo: ChargeInfo;
|
|
141
|
+
}): Promise<any>;
|
|
142
|
+
getCharge(ctx: ActionCtx, args: {
|
|
143
|
+
epaycoRef: string;
|
|
144
|
+
}): Promise<any>;
|
|
145
|
+
createPseTransaction(ctx: ActionCtx, args: {
|
|
146
|
+
userId: string;
|
|
147
|
+
pseInfo: PseInfo;
|
|
148
|
+
}): Promise<any>;
|
|
149
|
+
getPseTransaction(ctx: ActionCtx, args: {
|
|
150
|
+
ticketId: string;
|
|
151
|
+
}): Promise<any>;
|
|
152
|
+
getBanks(ctx: ActionCtx): Promise<any>;
|
|
153
|
+
listLocalBanks(ctx: QueryCtx): Promise<any>;
|
|
154
|
+
createCashPayment(ctx: ActionCtx, args: {
|
|
155
|
+
userId: string;
|
|
156
|
+
provider: CashProvider;
|
|
157
|
+
cashInfo: CashInfo;
|
|
158
|
+
}): Promise<any>;
|
|
159
|
+
getCashPayment(ctx: ActionCtx, args: {
|
|
160
|
+
epaycoRef: string;
|
|
161
|
+
}): Promise<any>;
|
|
162
|
+
createDaviplataPayment(ctx: ActionCtx, args: {
|
|
163
|
+
userId: string;
|
|
164
|
+
daviplataInfo: DaviplataInfo;
|
|
165
|
+
}): Promise<any>;
|
|
166
|
+
confirmDaviplataPayment(ctx: ActionCtx, args: {
|
|
167
|
+
refPayco: string;
|
|
168
|
+
idSessionToken: string;
|
|
169
|
+
otp: string;
|
|
170
|
+
}): Promise<any>;
|
|
171
|
+
createSafetyPayPayment(ctx: ActionCtx, args: {
|
|
172
|
+
userId: string;
|
|
173
|
+
safetypayInfo: SafetyPayInfo;
|
|
174
|
+
}): Promise<any>;
|
|
175
|
+
getTransaction(ctx: QueryCtx, args: {
|
|
176
|
+
epaycoRef: string;
|
|
177
|
+
}): Promise<any>;
|
|
178
|
+
listTransactions(ctx: QueryCtx, args: {
|
|
179
|
+
userId: string;
|
|
180
|
+
status?: string;
|
|
181
|
+
paymentMethod?: "credit_card" | "pse" | "cash" | "daviplata" | "safetypay";
|
|
182
|
+
limit?: number;
|
|
183
|
+
}): Promise<any>;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Build a set of public, auth-gated queries the host app can re-export directly
|
|
187
|
+
* to its clients, so reactive reads don't need a bespoke wrapper per app.
|
|
188
|
+
*/
|
|
189
|
+
export declare function exposeApi(component: ComponentApi, options: {
|
|
190
|
+
auth: (ctx: {
|
|
191
|
+
auth: Auth;
|
|
192
|
+
}, operation: {
|
|
193
|
+
type: "read";
|
|
194
|
+
} | {
|
|
195
|
+
type: "create";
|
|
196
|
+
} | {
|
|
197
|
+
type: "manage";
|
|
198
|
+
}) => Promise<string>;
|
|
199
|
+
}): {
|
|
200
|
+
listTransactions: import("convex/server").RegisteredQuery<"public", {
|
|
201
|
+
limit?: number | undefined;
|
|
202
|
+
status?: string | undefined;
|
|
203
|
+
}, Promise<any>>;
|
|
204
|
+
getTransaction: import("convex/server").RegisteredQuery<"public", {
|
|
205
|
+
epaycoRef: string;
|
|
206
|
+
}, Promise<any>>;
|
|
207
|
+
getCustomer: import("convex/server").RegisteredQuery<"public", {}, Promise<any>>;
|
|
208
|
+
listSubscriptions: import("convex/server").RegisteredQuery<"public", {}, Promise<any>>;
|
|
209
|
+
getActiveSubscription: import("convex/server").RegisteredQuery<"public", {}, Promise<any>>;
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Register ePayco webhook (confirmation) and response HTTP routes on the host's
|
|
213
|
+
* router. `custIdCliente` / `pKey` are used to verify the confirmation
|
|
214
|
+
* signature and default to `EPAYCO_P_CUST_ID_CLIENTE` / `EPAYCO_P_KEY`.
|
|
215
|
+
*/
|
|
216
|
+
export declare function registerRoutes(http: HttpRouter, component: ComponentApi, options?: {
|
|
217
|
+
pathPrefix?: string;
|
|
218
|
+
custIdCliente?: string;
|
|
219
|
+
pKey?: string;
|
|
220
|
+
}): void;
|
|
221
|
+
export {};
|
|
222
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { httpActionGeneric, queryGeneric } from "convex/server";
|
|
2
|
+
import { v } from "convex/values";
|
|
3
|
+
import { chargeInfoValidator, customerInfoValidator, cashInfoValidator, cashProviderValidator, daviplataInfoValidator, planInfoValidator, pseInfoValidator, safetypayInfoValidator, subscriptionInfoValidator, tokenInfoValidator, } from "../component/validators.js";
|
|
4
|
+
/**
|
|
5
|
+
* Host-side client for the ePayco component. Construct it once with the
|
|
6
|
+
* component reference and (optionally) credentials, then call its methods from
|
|
7
|
+
* your own actions/queries. Credentials are read from the environment by
|
|
8
|
+
* default so secrets never need to be hard-coded.
|
|
9
|
+
*/
|
|
10
|
+
export class EPayco {
|
|
11
|
+
component;
|
|
12
|
+
options;
|
|
13
|
+
constructor(component, options) {
|
|
14
|
+
this.component = component;
|
|
15
|
+
this.options = options ?? {};
|
|
16
|
+
}
|
|
17
|
+
creds() {
|
|
18
|
+
const apiKey = this.options.publicKey ?? process.env.EPAYCO_PUBLIC_KEY;
|
|
19
|
+
const privateKey = this.options.privateKey ?? process.env.EPAYCO_PRIVATE_KEY;
|
|
20
|
+
if (!apiKey || !privateKey) {
|
|
21
|
+
throw new Error("ePayco credentials are required: set EPAYCO_PUBLIC_KEY and EPAYCO_PRIVATE_KEY (or pass publicKey/privateKey to the EPayco constructor).");
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
apiKey,
|
|
25
|
+
privateKey,
|
|
26
|
+
testMode: this.options.testMode ?? process.env.EPAYCO_TEST_MODE === "true",
|
|
27
|
+
lang: this.options.lang ?? process.env.EPAYCO_LANG ?? "ES",
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// --- Tokens ---
|
|
31
|
+
async createToken(ctx, args) {
|
|
32
|
+
return await ctx.runAction(this.component.tokensApi.createToken, {
|
|
33
|
+
credentials: this.creds(),
|
|
34
|
+
...args,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async getLocalTokens(ctx, args) {
|
|
38
|
+
return await ctx.runQuery(this.component.tokens.getLocalTokens, args);
|
|
39
|
+
}
|
|
40
|
+
// --- Customers ---
|
|
41
|
+
async createCustomer(ctx, args) {
|
|
42
|
+
return await ctx.runAction(this.component.customersApi.createCustomer, {
|
|
43
|
+
credentials: this.creds(),
|
|
44
|
+
...args,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async getCustomer(ctx, args) {
|
|
48
|
+
return await ctx.runAction(this.component.customersApi.getCustomer, {
|
|
49
|
+
credentials: this.creds(),
|
|
50
|
+
...args,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async listCustomers(ctx, args = {}) {
|
|
54
|
+
return await ctx.runAction(this.component.customersApi.listCustomers, {
|
|
55
|
+
credentials: this.creds(),
|
|
56
|
+
...args,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
async updateCustomer(ctx, args) {
|
|
60
|
+
return await ctx.runAction(this.component.customersApi.updateCustomer, {
|
|
61
|
+
credentials: this.creds(),
|
|
62
|
+
...args,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async deleteCustomerCard(ctx, args) {
|
|
66
|
+
return await ctx.runAction(this.component.customersApi.deleteCustomerCard, {
|
|
67
|
+
credentials: this.creds(),
|
|
68
|
+
...args,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async addDefaultCard(ctx, args) {
|
|
72
|
+
return await ctx.runAction(this.component.customersApi.addDefaultCard, {
|
|
73
|
+
credentials: this.creds(),
|
|
74
|
+
...args,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
async addNewToken(ctx, args) {
|
|
78
|
+
return await ctx.runAction(this.component.customersApi.addNewToken, {
|
|
79
|
+
credentials: this.creds(),
|
|
80
|
+
...args,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async getLocalCustomer(ctx, args) {
|
|
84
|
+
return await ctx.runQuery(this.component.customers.getLocalCustomer, args);
|
|
85
|
+
}
|
|
86
|
+
// --- Plans ---
|
|
87
|
+
async createPlan(ctx, args) {
|
|
88
|
+
return await ctx.runAction(this.component.plansApi.createPlan, {
|
|
89
|
+
credentials: this.creds(),
|
|
90
|
+
...args,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
async getPlan(ctx, args) {
|
|
94
|
+
return await ctx.runAction(this.component.plansApi.getPlan, {
|
|
95
|
+
credentials: this.creds(),
|
|
96
|
+
...args,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async listPlans(ctx) {
|
|
100
|
+
return await ctx.runAction(this.component.plansApi.listPlans, {
|
|
101
|
+
credentials: this.creds(),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async updatePlan(ctx, args) {
|
|
105
|
+
return await ctx.runAction(this.component.plansApi.updatePlan, {
|
|
106
|
+
credentials: this.creds(),
|
|
107
|
+
...args,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async deletePlan(ctx, args) {
|
|
111
|
+
return await ctx.runAction(this.component.plansApi.deletePlan, {
|
|
112
|
+
credentials: this.creds(),
|
|
113
|
+
...args,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async getLocalPlan(ctx, args) {
|
|
117
|
+
return await ctx.runQuery(this.component.plans.getLocalPlan, args);
|
|
118
|
+
}
|
|
119
|
+
async listLocalPlans(ctx, args = {}) {
|
|
120
|
+
return await ctx.runQuery(this.component.plans.listLocalPlans, args);
|
|
121
|
+
}
|
|
122
|
+
// --- Subscriptions ---
|
|
123
|
+
async createSubscription(ctx, args) {
|
|
124
|
+
return await ctx.runAction(this.component.subscriptionsApi.createSubscription, { credentials: this.creds(), ...args });
|
|
125
|
+
}
|
|
126
|
+
async getSubscription(ctx, args) {
|
|
127
|
+
return await ctx.runAction(this.component.subscriptionsApi.getSubscription, { credentials: this.creds(), ...args });
|
|
128
|
+
}
|
|
129
|
+
async listSubscriptionsFromEpayco(ctx) {
|
|
130
|
+
return await ctx.runAction(this.component.subscriptionsApi.listSubscriptions, {
|
|
131
|
+
credentials: this.creds(),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async cancelSubscription(ctx, args) {
|
|
135
|
+
return await ctx.runAction(this.component.subscriptionsApi.cancelSubscription, { credentials: this.creds(), ...args });
|
|
136
|
+
}
|
|
137
|
+
async chargeSubscription(ctx, args) {
|
|
138
|
+
return await ctx.runAction(this.component.subscriptionsApi.chargeSubscription, { credentials: this.creds(), ...args });
|
|
139
|
+
}
|
|
140
|
+
async getActiveSubscription(ctx, args) {
|
|
141
|
+
return await ctx.runQuery(this.component.subscriptions.getActiveSubscription, args);
|
|
142
|
+
}
|
|
143
|
+
async listSubscriptions(ctx, args) {
|
|
144
|
+
return await ctx.runQuery(this.component.subscriptions.listLocalSubscriptionsByUser, args);
|
|
145
|
+
}
|
|
146
|
+
// --- Credit-card charges ---
|
|
147
|
+
async chargeCreditCard(ctx, args) {
|
|
148
|
+
return await ctx.runAction(this.component.chargesApi.createCharge, {
|
|
149
|
+
credentials: this.creds(),
|
|
150
|
+
...args,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
async getCharge(ctx, args) {
|
|
154
|
+
return await ctx.runAction(this.component.chargesApi.getCharge, {
|
|
155
|
+
credentials: this.creds(),
|
|
156
|
+
...args,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// --- PSE ---
|
|
160
|
+
async createPseTransaction(ctx, args) {
|
|
161
|
+
return await ctx.runAction(this.component.pseApi.createPseTransaction, {
|
|
162
|
+
credentials: this.creds(),
|
|
163
|
+
...args,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
async getPseTransaction(ctx, args) {
|
|
167
|
+
return await ctx.runAction(this.component.pseApi.getPseTransaction, {
|
|
168
|
+
credentials: this.creds(),
|
|
169
|
+
...args,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
async getBanks(ctx) {
|
|
173
|
+
return await ctx.runAction(this.component.pseApi.getBanks, {
|
|
174
|
+
credentials: this.creds(),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
async listLocalBanks(ctx) {
|
|
178
|
+
return await ctx.runQuery(this.component.banks.listLocalBanks, {});
|
|
179
|
+
}
|
|
180
|
+
// --- Cash ---
|
|
181
|
+
async createCashPayment(ctx, args) {
|
|
182
|
+
return await ctx.runAction(this.component.cashApi.createCashPayment, {
|
|
183
|
+
credentials: this.creds(),
|
|
184
|
+
...args,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
async getCashPayment(ctx, args) {
|
|
188
|
+
return await ctx.runAction(this.component.cashApi.getCashPayment, {
|
|
189
|
+
credentials: this.creds(),
|
|
190
|
+
...args,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
// --- Daviplata ---
|
|
194
|
+
async createDaviplataPayment(ctx, args) {
|
|
195
|
+
return await ctx.runAction(this.component.daviplataApi.createDaviplataPayment, { credentials: this.creds(), ...args });
|
|
196
|
+
}
|
|
197
|
+
async confirmDaviplataPayment(ctx, args) {
|
|
198
|
+
return await ctx.runAction(this.component.daviplataApi.confirmDaviplataPayment, { credentials: this.creds(), ...args });
|
|
199
|
+
}
|
|
200
|
+
// --- SafetyPay ---
|
|
201
|
+
async createSafetyPayPayment(ctx, args) {
|
|
202
|
+
return await ctx.runAction(this.component.safetypayApi.createSafetyPayPayment, { credentials: this.creds(), ...args });
|
|
203
|
+
}
|
|
204
|
+
// --- Transactions (local reactive reads) ---
|
|
205
|
+
async getTransaction(ctx, args) {
|
|
206
|
+
return await ctx.runQuery(this.component.transactions.getLocalTransaction, args);
|
|
207
|
+
}
|
|
208
|
+
async listTransactions(ctx, args) {
|
|
209
|
+
return await ctx.runQuery(this.component.transactions.listLocalTransactions, args);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Build a set of public, auth-gated queries the host app can re-export directly
|
|
214
|
+
* to its clients, so reactive reads don't need a bespoke wrapper per app.
|
|
215
|
+
*/
|
|
216
|
+
export function exposeApi(component, options) {
|
|
217
|
+
return {
|
|
218
|
+
// NOTE: none of these queries accept a client-supplied `userId`. The scope
|
|
219
|
+
// is always the identity resolved by `options.auth`, so an authenticated
|
|
220
|
+
// caller can never widen access to another user's records.
|
|
221
|
+
listTransactions: queryGeneric({
|
|
222
|
+
args: {
|
|
223
|
+
status: v.optional(v.string()),
|
|
224
|
+
limit: v.optional(v.number()),
|
|
225
|
+
},
|
|
226
|
+
handler: async (ctx, args) => {
|
|
227
|
+
const userId = await options.auth(ctx, { type: "read" });
|
|
228
|
+
return await ctx.runQuery(component.transactions.listLocalTransactions, {
|
|
229
|
+
userId,
|
|
230
|
+
status: args.status,
|
|
231
|
+
limit: args.limit,
|
|
232
|
+
});
|
|
233
|
+
},
|
|
234
|
+
}),
|
|
235
|
+
getTransaction: queryGeneric({
|
|
236
|
+
args: { epaycoRef: v.string() },
|
|
237
|
+
handler: async (ctx, args) => {
|
|
238
|
+
const userId = await options.auth(ctx, { type: "read" });
|
|
239
|
+
const transaction = await ctx.runQuery(component.transactions.getLocalTransaction, { epaycoRef: args.epaycoRef });
|
|
240
|
+
// Transactions carry customer PII; only return it to its owner.
|
|
241
|
+
if (!transaction || transaction.userId !== userId)
|
|
242
|
+
return null;
|
|
243
|
+
return transaction;
|
|
244
|
+
},
|
|
245
|
+
}),
|
|
246
|
+
getCustomer: queryGeneric({
|
|
247
|
+
args: {},
|
|
248
|
+
handler: async (ctx) => {
|
|
249
|
+
const userId = await options.auth(ctx, { type: "read" });
|
|
250
|
+
return await ctx.runQuery(component.customers.getLocalCustomer, {
|
|
251
|
+
userId,
|
|
252
|
+
});
|
|
253
|
+
},
|
|
254
|
+
}),
|
|
255
|
+
listSubscriptions: queryGeneric({
|
|
256
|
+
args: {},
|
|
257
|
+
handler: async (ctx) => {
|
|
258
|
+
const userId = await options.auth(ctx, { type: "read" });
|
|
259
|
+
return await ctx.runQuery(component.subscriptions.listLocalSubscriptionsByUser, { userId });
|
|
260
|
+
},
|
|
261
|
+
}),
|
|
262
|
+
getActiveSubscription: queryGeneric({
|
|
263
|
+
args: {},
|
|
264
|
+
handler: async (ctx) => {
|
|
265
|
+
const userId = await options.auth(ctx, { type: "read" });
|
|
266
|
+
return await ctx.runQuery(component.subscriptions.getActiveSubscription, { userId });
|
|
267
|
+
},
|
|
268
|
+
}),
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Register ePayco webhook (confirmation) and response HTTP routes on the host's
|
|
273
|
+
* router. `custIdCliente` / `pKey` are used to verify the confirmation
|
|
274
|
+
* signature and default to `EPAYCO_P_CUST_ID_CLIENTE` / `EPAYCO_P_KEY`.
|
|
275
|
+
*/
|
|
276
|
+
export function registerRoutes(http, component, options = {}) {
|
|
277
|
+
const pathPrefix = options.pathPrefix ?? "/epayco";
|
|
278
|
+
const custIdCliente = options.custIdCliente ?? process.env.EPAYCO_P_CUST_ID_CLIENTE ?? "";
|
|
279
|
+
const pKey = options.pKey ?? process.env.EPAYCO_P_KEY ?? "";
|
|
280
|
+
const handleConfirmation = async (ctx, payload) => {
|
|
281
|
+
return await ctx.runAction(component.webhooks.processConfirmation, {
|
|
282
|
+
custIdCliente,
|
|
283
|
+
pKey,
|
|
284
|
+
payload,
|
|
285
|
+
});
|
|
286
|
+
};
|
|
287
|
+
http.route({
|
|
288
|
+
path: `${pathPrefix}/confirmation`,
|
|
289
|
+
method: "POST",
|
|
290
|
+
handler: httpActionGeneric(async (ctx, request) => {
|
|
291
|
+
const contentType = request.headers.get("content-type") ?? "";
|
|
292
|
+
let payload = {};
|
|
293
|
+
if (contentType.includes("application/json")) {
|
|
294
|
+
payload = await request.json();
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
const form = await request.formData();
|
|
298
|
+
form.forEach((value, key) => {
|
|
299
|
+
payload[key] = typeof value === "string" ? value : "";
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
const result = await handleConfirmation(ctx, payload);
|
|
303
|
+
return new Response(JSON.stringify(result), {
|
|
304
|
+
status: 200,
|
|
305
|
+
headers: { "Content-Type": "application/json" },
|
|
306
|
+
});
|
|
307
|
+
}),
|
|
308
|
+
});
|
|
309
|
+
http.route({
|
|
310
|
+
path: `${pathPrefix}/confirmation`,
|
|
311
|
+
method: "GET",
|
|
312
|
+
handler: httpActionGeneric(async (ctx, request) => {
|
|
313
|
+
const url = new URL(request.url);
|
|
314
|
+
const payload = {};
|
|
315
|
+
url.searchParams.forEach((value, key) => {
|
|
316
|
+
payload[key] = value;
|
|
317
|
+
});
|
|
318
|
+
const result = await handleConfirmation(ctx, payload);
|
|
319
|
+
return new Response(JSON.stringify(result), {
|
|
320
|
+
status: 200,
|
|
321
|
+
headers: { "Content-Type": "application/json" },
|
|
322
|
+
});
|
|
323
|
+
}),
|
|
324
|
+
});
|
|
325
|
+
http.route({
|
|
326
|
+
path: `${pathPrefix}/response`,
|
|
327
|
+
method: "GET",
|
|
328
|
+
handler: httpActionGeneric(async (ctx, request) => {
|
|
329
|
+
const url = new URL(request.url);
|
|
330
|
+
const refPayco = url.searchParams.get("ref_payco");
|
|
331
|
+
if (!refPayco) {
|
|
332
|
+
return new Response(JSON.stringify({ error: "ref_payco parameter required" }), { status: 400, headers: { "Content-Type": "application/json" } });
|
|
333
|
+
}
|
|
334
|
+
const transaction = await ctx.runQuery(component.transactions.getLocalTransaction, { epaycoRef: refPayco });
|
|
335
|
+
// This endpoint is public (ePayco redirects the buyer's browser here),
|
|
336
|
+
// so expose only a minimal status payload — never the full row, which
|
|
337
|
+
// holds customerEmail, responseMessage, splitReceivers and rawResponse.
|
|
338
|
+
const body = transaction
|
|
339
|
+
? {
|
|
340
|
+
found: true,
|
|
341
|
+
ref_payco: transaction.epaycoRef,
|
|
342
|
+
status: transaction.status,
|
|
343
|
+
paymentMethod: transaction.paymentMethod,
|
|
344
|
+
amount: transaction.amount,
|
|
345
|
+
currency: transaction.currency,
|
|
346
|
+
}
|
|
347
|
+
: { found: false };
|
|
348
|
+
return new Response(JSON.stringify(body), {
|
|
349
|
+
status: 200,
|
|
350
|
+
headers: { "Content-Type": "application/json" },
|
|
351
|
+
});
|
|
352
|
+
}),
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|