@theyahia/paymongo-mcp 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/LICENSE +21 -0
- package/README.md +50 -0
- package/dist/client.d.ts +6 -0
- package/dist/client.js +45 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/__tests__/tools.test.d.ts +1 -0
- package/dist/tools/__tests__/tools.test.js +67 -0
- package/dist/tools/__tests__/tools.test.js.map +1 -0
- package/dist/tools/create-checkout.d.ts +24 -0
- package/dist/tools/create-checkout.js +25 -0
- package/dist/tools/create-checkout.js.map +1 -0
- package/dist/tools/create-payment-intent.d.ts +18 -0
- package/dist/tools/create-payment-intent.js +23 -0
- package/dist/tools/create-payment-intent.js.map +1 -0
- package/dist/tools/create-payment.d.ts +18 -0
- package/dist/tools/create-payment.js +23 -0
- package/dist/tools/create-payment.js.map +1 -0
- package/dist/tools/create-refund.d.ts +15 -0
- package/dist/tools/create-refund.js +16 -0
- package/dist/tools/create-refund.js.map +1 -0
- package/dist/tools/create-source.d.ts +21 -0
- package/dist/tools/create-source.js +23 -0
- package/dist/tools/create-source.js.map +1 -0
- package/dist/tools/get-checkout.d.ts +9 -0
- package/dist/tools/get-checkout.js +11 -0
- package/dist/tools/get-checkout.js.map +1 -0
- package/dist/tools/get-payment-intent.d.ts +9 -0
- package/dist/tools/get-payment-intent.js +11 -0
- package/dist/tools/get-payment-intent.js.map +1 -0
- package/dist/tools/get-source.d.ts +9 -0
- package/dist/tools/get-source.js +11 -0
- package/dist/tools/get-source.js.map +1 -0
- package/dist/tools/list-payments.d.ts +15 -0
- package/dist/tools/list-payments.js +21 -0
- package/dist/tools/list-payments.js.map +1 -0
- package/package.json +35 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 theYahia
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# paymongo-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for PayMongo payment gateway (Philippines). Supports payment intents, sources, payments, refunds, and checkout sessions via Basic Auth.
|
|
4
|
+
|
|
5
|
+
## Tools (9)
|
|
6
|
+
|
|
7
|
+
| Tool | Description |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `create_payment_intent` | Create a payment intent |
|
|
10
|
+
| `get_payment_intent` | Get payment intent by ID |
|
|
11
|
+
| `create_source` | Create a GCash/GrabPay source |
|
|
12
|
+
| `get_source` | Get source details |
|
|
13
|
+
| `create_payment` | Create a payment from source |
|
|
14
|
+
| `list_payments` | List payments |
|
|
15
|
+
| `create_refund` | Refund a payment |
|
|
16
|
+
| `create_checkout` | Create a checkout session |
|
|
17
|
+
| `get_checkout` | Get checkout session |
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"mcpServers": {
|
|
24
|
+
"paymongo": {
|
|
25
|
+
"command": "npx",
|
|
26
|
+
"args": ["-y", "@theyahia/paymongo-mcp"],
|
|
27
|
+
"env": {
|
|
28
|
+
"PAYMONGO_SECRET_KEY": "<YOUR_SECRET_KEY>"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Environment Variables
|
|
36
|
+
|
|
37
|
+
| Variable | Required | Description |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| `PAYMONGO_SECRET_KEY` | Yes | Secret API key from PayMongo dashboard |
|
|
40
|
+
|
|
41
|
+
## Demo Prompts
|
|
42
|
+
|
|
43
|
+
- "Create a payment intent for 100 PHP"
|
|
44
|
+
- "Create a GCash source for 50 PHP"
|
|
45
|
+
- "List recent payments"
|
|
46
|
+
- "Refund 25 PHP from payment pay_123"
|
|
47
|
+
|
|
48
|
+
## License
|
|
49
|
+
|
|
50
|
+
MIT
|
package/dist/client.d.ts
ADDED
package/dist/client.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const BASE_URL = "https://api.paymongo.com/v1";
|
|
2
|
+
const TIMEOUT = 15_000;
|
|
3
|
+
export class PayMongoClient {
|
|
4
|
+
secretKey;
|
|
5
|
+
constructor() {
|
|
6
|
+
this.secretKey = process.env.PAYMONGO_SECRET_KEY ?? "";
|
|
7
|
+
if (!this.secretKey) {
|
|
8
|
+
throw new Error("Environment variable PAYMONGO_SECRET_KEY is required. " +
|
|
9
|
+
"Get your key at https://dashboard.paymongo.com/");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
get authHeader() {
|
|
13
|
+
return "Basic " + Buffer.from(this.secretKey + ":").toString("base64");
|
|
14
|
+
}
|
|
15
|
+
async request(method, path, body) {
|
|
16
|
+
const controller = new AbortController();
|
|
17
|
+
const timer = setTimeout(() => controller.abort(), TIMEOUT);
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetch(`${BASE_URL}${path}`, {
|
|
20
|
+
method,
|
|
21
|
+
headers: {
|
|
22
|
+
"Authorization": this.authHeader,
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
"Accept": "application/json",
|
|
25
|
+
},
|
|
26
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
27
|
+
signal: controller.signal,
|
|
28
|
+
});
|
|
29
|
+
clearTimeout(timer);
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
const text = await response.text();
|
|
32
|
+
throw new Error(`PayMongo HTTP ${response.status}: ${text}`);
|
|
33
|
+
}
|
|
34
|
+
return response.json();
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
clearTimeout(timer);
|
|
38
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
39
|
+
throw new Error("PayMongo: request timeout (15s).");
|
|
40
|
+
}
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAC/C,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,MAAM,OAAO,cAAc;IACjB,SAAS,CAAS;IAE1B;QACE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,wDAAwD;gBACxD,iDAAiD,CAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;QACxD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;QAE5D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;gBACjD,MAAM;gBACN,OAAO,EAAE;oBACP,eAAe,EAAE,IAAI,CAAC,UAAU;oBAChC,cAAc,EAAE,kBAAkB;oBAClC,QAAQ,EAAE,kBAAkB;iBAC7B;gBACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { createPaymentIntentSchema, handleCreatePaymentIntent } from "./tools/create-payment-intent.js";
|
|
5
|
+
import { getPaymentIntentSchema, handleGetPaymentIntent } from "./tools/get-payment-intent.js";
|
|
6
|
+
import { createSourceSchema, handleCreateSource } from "./tools/create-source.js";
|
|
7
|
+
import { getSourceSchema, handleGetSource } from "./tools/get-source.js";
|
|
8
|
+
import { createPaymentSchema, handleCreatePayment } from "./tools/create-payment.js";
|
|
9
|
+
import { listPaymentsSchema, handleListPayments } from "./tools/list-payments.js";
|
|
10
|
+
import { createRefundSchema, handleCreateRefund } from "./tools/create-refund.js";
|
|
11
|
+
import { createCheckoutSchema, handleCreateCheckout } from "./tools/create-checkout.js";
|
|
12
|
+
import { getCheckoutSchema, handleGetCheckout } from "./tools/get-checkout.js";
|
|
13
|
+
const server = new McpServer({ name: "paymongo-mcp", version: "1.0.0" });
|
|
14
|
+
server.tool("create_payment_intent", "Create a payment intent.", createPaymentIntentSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleCreatePaymentIntent(params) }] }));
|
|
15
|
+
server.tool("get_payment_intent", "Get payment intent by ID.", getPaymentIntentSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleGetPaymentIntent(params) }] }));
|
|
16
|
+
server.tool("create_source", "Create a payment source (GCash/GrabPay).", createSourceSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleCreateSource(params) }] }));
|
|
17
|
+
server.tool("get_source", "Get source details by ID.", getSourceSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleGetSource(params) }] }));
|
|
18
|
+
server.tool("create_payment", "Create a payment from a source.", createPaymentSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleCreatePayment(params) }] }));
|
|
19
|
+
server.tool("list_payments", "List payments with pagination.", listPaymentsSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleListPayments(params) }] }));
|
|
20
|
+
server.tool("create_refund", "Refund a payment.", createRefundSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleCreateRefund(params) }] }));
|
|
21
|
+
server.tool("create_checkout", "Create a checkout session.", createCheckoutSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleCreateCheckout(params) }] }));
|
|
22
|
+
server.tool("get_checkout", "Get checkout session by ID.", getCheckoutSchema.shape, async (params) => ({ content: [{ type: "text", text: await handleGetCheckout(params) }] }));
|
|
23
|
+
async function main() {
|
|
24
|
+
const transport = new StdioServerTransport();
|
|
25
|
+
await server.connect(transport);
|
|
26
|
+
console.error("[paymongo-mcp] Server started. 9 tools available.");
|
|
27
|
+
}
|
|
28
|
+
main().catch((error) => { console.error("[paymongo-mcp] Error:", error); process.exit(1); });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
const mockFetch = vi.fn();
|
|
3
|
+
global.fetch = mockFetch;
|
|
4
|
+
process.env.PAYMONGO_SECRET_KEY = "test-secret-key";
|
|
5
|
+
describe("paymongo-mcp tools", () => {
|
|
6
|
+
beforeEach(() => { vi.clearAllMocks(); vi.resetModules(); });
|
|
7
|
+
it("create_payment_intent creates intent", async () => {
|
|
8
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "pi_123", attributes: { status: "awaiting_payment_method", amount: 10000 } } }) });
|
|
9
|
+
const { handleCreatePaymentIntent } = await import("../create-payment-intent.js");
|
|
10
|
+
const result = await handleCreatePaymentIntent({ amount: 10000, currency: "PHP", payment_method_allowed: ["card", "gcash"] });
|
|
11
|
+
expect(JSON.parse(result).data.id).toBe("pi_123");
|
|
12
|
+
});
|
|
13
|
+
it("get_payment_intent retrieves intent", async () => {
|
|
14
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "pi_123", attributes: { status: "succeeded" } } }) });
|
|
15
|
+
const { handleGetPaymentIntent } = await import("../get-payment-intent.js");
|
|
16
|
+
const result = await handleGetPaymentIntent({ payment_intent_id: "pi_123" });
|
|
17
|
+
expect(JSON.parse(result).data.attributes.status).toBe("succeeded");
|
|
18
|
+
});
|
|
19
|
+
it("create_source creates GCash source", async () => {
|
|
20
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "src_123", attributes: { type: "gcash", redirect: { checkout_url: "https://gcash.com/pay" } } } }) });
|
|
21
|
+
const { handleCreateSource } = await import("../create-source.js");
|
|
22
|
+
const result = await handleCreateSource({ amount: 5000, type: "gcash", currency: "PHP", redirect_success: "https://ex.com/ok", redirect_failed: "https://ex.com/fail" });
|
|
23
|
+
expect(JSON.parse(result).data.attributes.type).toBe("gcash");
|
|
24
|
+
});
|
|
25
|
+
it("get_source retrieves source", async () => {
|
|
26
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "src_123", attributes: { status: "chargeable" } } }) });
|
|
27
|
+
const { handleGetSource } = await import("../get-source.js");
|
|
28
|
+
const result = await handleGetSource({ source_id: "src_123" });
|
|
29
|
+
expect(JSON.parse(result).data.attributes.status).toBe("chargeable");
|
|
30
|
+
});
|
|
31
|
+
it("create_payment charges source", async () => {
|
|
32
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "pay_123", attributes: { status: "paid", amount: 5000 } } }) });
|
|
33
|
+
const { handleCreatePayment } = await import("../create-payment.js");
|
|
34
|
+
const result = await handleCreatePayment({ amount: 5000, currency: "PHP", source_id: "src_123" });
|
|
35
|
+
expect(JSON.parse(result).data.attributes.status).toBe("paid");
|
|
36
|
+
});
|
|
37
|
+
it("list_payments returns list", async () => {
|
|
38
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: [{ id: "pay_1" }, { id: "pay_2" }] }) });
|
|
39
|
+
const { handleListPayments } = await import("../list-payments.js");
|
|
40
|
+
const result = await handleListPayments({ limit: 10 });
|
|
41
|
+
expect(JSON.parse(result).data).toHaveLength(2);
|
|
42
|
+
});
|
|
43
|
+
it("create_refund processes refund", async () => {
|
|
44
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "ref_123", attributes: { status: "pending", amount: 2500 } } }) });
|
|
45
|
+
const { handleCreateRefund } = await import("../create-refund.js");
|
|
46
|
+
const result = await handleCreateRefund({ payment_id: "pay_123", amount: 2500, reason: "requested_by_customer" });
|
|
47
|
+
expect(JSON.parse(result).data.attributes.amount).toBe(2500);
|
|
48
|
+
});
|
|
49
|
+
it("create_checkout creates session", async () => {
|
|
50
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "cs_123", attributes: { checkout_url: "https://checkout.paymongo.com/cs_123" } } }) });
|
|
51
|
+
const { handleCreateCheckout } = await import("../create-checkout.js");
|
|
52
|
+
const result = await handleCreateCheckout({ amount: 10000, currency: "PHP", success_url: "https://ex.com/ok", cancel_url: "https://ex.com/cancel", payment_method_types: ["card"] });
|
|
53
|
+
expect(JSON.parse(result).data.attributes.checkout_url).toContain("paymongo.com");
|
|
54
|
+
});
|
|
55
|
+
it("get_checkout retrieves session", async () => {
|
|
56
|
+
mockFetch.mockResolvedValueOnce({ ok: true, json: async () => ({ data: { id: "cs_123", attributes: { status: "active" } } }) });
|
|
57
|
+
const { handleGetCheckout } = await import("../get-checkout.js");
|
|
58
|
+
const result = await handleGetCheckout({ checkout_session_id: "cs_123" });
|
|
59
|
+
expect(JSON.parse(result).data.attributes.status).toBe("active");
|
|
60
|
+
});
|
|
61
|
+
it("handles HTTP errors gracefully", async () => {
|
|
62
|
+
mockFetch.mockResolvedValueOnce({ ok: false, status: 422, text: async () => "Unprocessable Entity" });
|
|
63
|
+
const { handleGetPaymentIntent } = await import("../get-payment-intent.js");
|
|
64
|
+
await expect(handleGetPaymentIntent({ payment_intent_id: "bad" })).rejects.toThrow("PayMongo HTTP 422");
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=tools.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/tools.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const createCheckoutSchema: z.ZodObject<{
|
|
3
|
+
amount: z.ZodNumber;
|
|
4
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
5
|
+
description: z.ZodOptional<z.ZodString>;
|
|
6
|
+
payment_method_types: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
7
|
+
success_url: z.ZodString;
|
|
8
|
+
cancel_url: z.ZodString;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
amount: number;
|
|
11
|
+
currency: string;
|
|
12
|
+
payment_method_types: string[];
|
|
13
|
+
success_url: string;
|
|
14
|
+
cancel_url: string;
|
|
15
|
+
description?: string | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
amount: number;
|
|
18
|
+
success_url: string;
|
|
19
|
+
cancel_url: string;
|
|
20
|
+
currency?: string | undefined;
|
|
21
|
+
description?: string | undefined;
|
|
22
|
+
payment_method_types?: string[] | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function handleCreateCheckout(params: z.infer<typeof createCheckoutSchema>): Promise<string>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const createCheckoutSchema = z.object({
|
|
5
|
+
amount: z.number().positive().describe("Amount in centavos"),
|
|
6
|
+
currency: z.string().default("PHP").describe("Currency code"),
|
|
7
|
+
description: z.string().optional().describe("Checkout description"),
|
|
8
|
+
payment_method_types: z.array(z.string()).default(["card", "gcash", "grab_pay", "paymaya"]).describe("Payment method types"),
|
|
9
|
+
success_url: z.string().url().describe("Success redirect URL"),
|
|
10
|
+
cancel_url: z.string().url().describe("Cancel redirect URL"),
|
|
11
|
+
});
|
|
12
|
+
export async function handleCreateCheckout(params) {
|
|
13
|
+
const body = {
|
|
14
|
+
data: {
|
|
15
|
+
attributes: {
|
|
16
|
+
line_items: [{ amount: params.amount, currency: params.currency, name: params.description || "Payment", quantity: 1 }],
|
|
17
|
+
payment_method_types: params.payment_method_types,
|
|
18
|
+
success_url: params.success_url, cancel_url: params.cancel_url,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
const result = await client.request("POST", "/checkout_sessions", body);
|
|
23
|
+
return JSON.stringify(result, null, 2);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=create-checkout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-checkout.js","sourceRoot":"","sources":["../../src/tools/create-checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACnE,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5H,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC9D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAA4C;IACrF,MAAM,IAAI,GAAG;QACX,IAAI,EAAE;YACJ,UAAU,EAAE;gBACV,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACtH,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU;aAC/D;SACF;KACF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const createPaymentIntentSchema: z.ZodObject<{
|
|
3
|
+
amount: z.ZodNumber;
|
|
4
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
5
|
+
payment_method_allowed: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
6
|
+
description: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
amount: number;
|
|
9
|
+
currency: string;
|
|
10
|
+
payment_method_allowed: string[];
|
|
11
|
+
description?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
amount: number;
|
|
14
|
+
currency?: string | undefined;
|
|
15
|
+
payment_method_allowed?: string[] | undefined;
|
|
16
|
+
description?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function handleCreatePaymentIntent(params: z.infer<typeof createPaymentIntentSchema>): Promise<string>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const createPaymentIntentSchema = z.object({
|
|
5
|
+
amount: z.number().positive().describe("Amount in centavos (e.g. 10000 = 100 PHP)"),
|
|
6
|
+
currency: z.string().default("PHP").describe("Currency code"),
|
|
7
|
+
payment_method_allowed: z.array(z.string()).default(["card", "gcash", "grab_pay", "paymaya"]).describe("Allowed payment methods"),
|
|
8
|
+
description: z.string().optional().describe("Payment description"),
|
|
9
|
+
});
|
|
10
|
+
export async function handleCreatePaymentIntent(params) {
|
|
11
|
+
const body = {
|
|
12
|
+
data: {
|
|
13
|
+
attributes: {
|
|
14
|
+
amount: params.amount, currency: params.currency,
|
|
15
|
+
payment_method_allowed: params.payment_method_allowed,
|
|
16
|
+
description: params.description || "",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const result = await client.request("POST", "/payment_intents", body);
|
|
21
|
+
return JSON.stringify(result, null, 2);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=create-payment-intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-payment-intent.js","sourceRoot":"","sources":["../../src/tools/create-payment-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IACnF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC7D,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACjI,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAiD;IAC/F,MAAM,IAAI,GAAG;QACX,IAAI,EAAE;YACJ,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBAChD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;gBACrD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;aACtC;SACF;KACF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const createPaymentSchema: z.ZodObject<{
|
|
3
|
+
amount: z.ZodNumber;
|
|
4
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
5
|
+
source_id: z.ZodString;
|
|
6
|
+
description: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
amount: number;
|
|
9
|
+
currency: string;
|
|
10
|
+
source_id: string;
|
|
11
|
+
description?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
amount: number;
|
|
14
|
+
source_id: string;
|
|
15
|
+
currency?: string | undefined;
|
|
16
|
+
description?: string | undefined;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function handleCreatePayment(params: z.infer<typeof createPaymentSchema>): Promise<string>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const createPaymentSchema = z.object({
|
|
5
|
+
amount: z.number().positive().describe("Amount in centavos"),
|
|
6
|
+
currency: z.string().default("PHP").describe("Currency code"),
|
|
7
|
+
source_id: z.string().describe("Source ID to charge"),
|
|
8
|
+
description: z.string().optional().describe("Payment description"),
|
|
9
|
+
});
|
|
10
|
+
export async function handleCreatePayment(params) {
|
|
11
|
+
const body = {
|
|
12
|
+
data: {
|
|
13
|
+
attributes: {
|
|
14
|
+
amount: params.amount, currency: params.currency,
|
|
15
|
+
source: { id: params.source_id, type: "source" },
|
|
16
|
+
description: params.description || "",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const result = await client.request("POST", "/payments", body);
|
|
21
|
+
return JSON.stringify(result, null, 2);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=create-payment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-payment.js","sourceRoot":"","sources":["../../src/tools/create-payment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC7D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACrD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CACnE,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAA2C;IACnF,MAAM,IAAI,GAAG;QACX,IAAI,EAAE;YACJ,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBAChD,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;aACtC;SACF;KACF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const createRefundSchema: z.ZodObject<{
|
|
3
|
+
payment_id: z.ZodString;
|
|
4
|
+
amount: z.ZodNumber;
|
|
5
|
+
reason: z.ZodEnum<["duplicate", "fraudulent", "requested_by_customer"]>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
amount: number;
|
|
8
|
+
payment_id: string;
|
|
9
|
+
reason: "duplicate" | "fraudulent" | "requested_by_customer";
|
|
10
|
+
}, {
|
|
11
|
+
amount: number;
|
|
12
|
+
payment_id: string;
|
|
13
|
+
reason: "duplicate" | "fraudulent" | "requested_by_customer";
|
|
14
|
+
}>;
|
|
15
|
+
export declare function handleCreateRefund(params: z.infer<typeof createRefundSchema>): Promise<string>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const createRefundSchema = z.object({
|
|
5
|
+
payment_id: z.string().describe("Payment ID to refund"),
|
|
6
|
+
amount: z.number().positive().describe("Refund amount in centavos"),
|
|
7
|
+
reason: z.enum(["duplicate", "fraudulent", "requested_by_customer"]).describe("Refund reason"),
|
|
8
|
+
});
|
|
9
|
+
export async function handleCreateRefund(params) {
|
|
10
|
+
const body = {
|
|
11
|
+
data: { attributes: { payment_id: params.payment_id, amount: params.amount, reason: params.reason } },
|
|
12
|
+
};
|
|
13
|
+
const result = await client.request("POST", "/refunds", body);
|
|
14
|
+
return JSON.stringify(result, null, 2);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=create-refund.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-refund.js","sourceRoot":"","sources":["../../src/tools/create-refund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;CAC/F,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAA0C;IACjF,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE;KACtG,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const createSourceSchema: z.ZodObject<{
|
|
3
|
+
amount: z.ZodNumber;
|
|
4
|
+
type: z.ZodEnum<["gcash", "grab_pay"]>;
|
|
5
|
+
currency: z.ZodDefault<z.ZodString>;
|
|
6
|
+
redirect_success: z.ZodString;
|
|
7
|
+
redirect_failed: z.ZodString;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
amount: number;
|
|
10
|
+
currency: string;
|
|
11
|
+
type: "gcash" | "grab_pay";
|
|
12
|
+
redirect_success: string;
|
|
13
|
+
redirect_failed: string;
|
|
14
|
+
}, {
|
|
15
|
+
amount: number;
|
|
16
|
+
type: "gcash" | "grab_pay";
|
|
17
|
+
redirect_success: string;
|
|
18
|
+
redirect_failed: string;
|
|
19
|
+
currency?: string | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function handleCreateSource(params: z.infer<typeof createSourceSchema>): Promise<string>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const createSourceSchema = z.object({
|
|
5
|
+
amount: z.number().positive().describe("Amount in centavos"),
|
|
6
|
+
type: z.enum(["gcash", "grab_pay"]).describe("Source type"),
|
|
7
|
+
currency: z.string().default("PHP").describe("Currency code"),
|
|
8
|
+
redirect_success: z.string().url().describe("Success redirect URL"),
|
|
9
|
+
redirect_failed: z.string().url().describe("Failed redirect URL"),
|
|
10
|
+
});
|
|
11
|
+
export async function handleCreateSource(params) {
|
|
12
|
+
const body = {
|
|
13
|
+
data: {
|
|
14
|
+
attributes: {
|
|
15
|
+
amount: params.amount, currency: params.currency, type: params.type,
|
|
16
|
+
redirect: { success: params.redirect_success, failed: params.redirect_failed },
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const result = await client.request("POST", "/sources", body);
|
|
21
|
+
return JSON.stringify(result, null, 2);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=create-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-source.js","sourceRoot":"","sources":["../../src/tools/create-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC7D,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACnE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAClE,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAA0C;IACjF,MAAM,IAAI,GAAG;QACX,IAAI,EAAE;YACJ,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACnE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE;aAC/E;SACF;KACF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const getCheckoutSchema: z.ZodObject<{
|
|
3
|
+
checkout_session_id: z.ZodString;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
checkout_session_id: string;
|
|
6
|
+
}, {
|
|
7
|
+
checkout_session_id: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function handleGetCheckout(params: z.infer<typeof getCheckoutSchema>): Promise<string>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const getCheckoutSchema = z.object({
|
|
5
|
+
checkout_session_id: z.string().describe("Checkout session ID"),
|
|
6
|
+
});
|
|
7
|
+
export async function handleGetCheckout(params) {
|
|
8
|
+
const result = await client.request("GET", "/checkout_sessions/" + params.checkout_session_id);
|
|
9
|
+
return JSON.stringify(result, null, 2);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=get-checkout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-checkout.js","sourceRoot":"","sources":["../../src/tools/get-checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CAChE,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAyC;IAC/E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/F,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const getPaymentIntentSchema: z.ZodObject<{
|
|
3
|
+
payment_intent_id: z.ZodString;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
payment_intent_id: string;
|
|
6
|
+
}, {
|
|
7
|
+
payment_intent_id: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function handleGetPaymentIntent(params: z.infer<typeof getPaymentIntentSchema>): Promise<string>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const getPaymentIntentSchema = z.object({
|
|
5
|
+
payment_intent_id: z.string().describe("Payment intent ID"),
|
|
6
|
+
});
|
|
7
|
+
export async function handleGetPaymentIntent(params) {
|
|
8
|
+
const result = await client.request("GET", "/payment_intents/" + params.payment_intent_id);
|
|
9
|
+
return JSON.stringify(result, null, 2);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=get-payment-intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-payment-intent.js","sourceRoot":"","sources":["../../src/tools/get-payment-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CAC5D,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAA8C;IACzF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const getSourceSchema: z.ZodObject<{
|
|
3
|
+
source_id: z.ZodString;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
source_id: string;
|
|
6
|
+
}, {
|
|
7
|
+
source_id: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function handleGetSource(params: z.infer<typeof getSourceSchema>): Promise<string>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const getSourceSchema = z.object({
|
|
5
|
+
source_id: z.string().describe("Source ID"),
|
|
6
|
+
});
|
|
7
|
+
export async function handleGetSource(params) {
|
|
8
|
+
const result = await client.request("GET", "/sources/" + params.source_id);
|
|
9
|
+
return JSON.stringify(result, null, 2);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=get-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-source.js","sourceRoot":"","sources":["../../src/tools/get-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAuC;IAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3E,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const listPaymentsSchema: z.ZodObject<{
|
|
3
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
4
|
+
before: z.ZodOptional<z.ZodString>;
|
|
5
|
+
after: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
limit?: number | undefined;
|
|
8
|
+
before?: string | undefined;
|
|
9
|
+
after?: string | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
limit?: number | undefined;
|
|
12
|
+
before?: string | undefined;
|
|
13
|
+
after?: string | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function handleListPayments(params: z.infer<typeof listPaymentsSchema>): Promise<string>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { PayMongoClient } from "../client.js";
|
|
3
|
+
const client = new PayMongoClient();
|
|
4
|
+
export const listPaymentsSchema = z.object({
|
|
5
|
+
limit: z.number().optional().describe("Max payments (default 10)"),
|
|
6
|
+
before: z.string().optional().describe("Cursor for pagination (before)"),
|
|
7
|
+
after: z.string().optional().describe("Cursor for pagination (after)"),
|
|
8
|
+
});
|
|
9
|
+
export async function handleListPayments(params) {
|
|
10
|
+
const qp = new URLSearchParams();
|
|
11
|
+
if (params.limit)
|
|
12
|
+
qp.set("limit", String(params.limit));
|
|
13
|
+
if (params.before)
|
|
14
|
+
qp.set("before", params.before);
|
|
15
|
+
if (params.after)
|
|
16
|
+
qp.set("after", params.after);
|
|
17
|
+
const qs = qp.toString() ? "?" + qp.toString() : "";
|
|
18
|
+
const result = await client.request("GET", "/payments" + qs);
|
|
19
|
+
return JSON.stringify(result, null, 2);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=list-payments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-payments.js","sourceRoot":"","sources":["../../src/tools/list-payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;AAEpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACvE,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAA0C;IACjF,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,KAAK;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@theyahia/paymongo-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for PayMongo payment gateway (Philippines)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": { "paymongo-mcp": "dist/index.js" },
|
|
8
|
+
"files": ["dist"],
|
|
9
|
+
"engines": { "node": ">=18.0.0" },
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsx src/index.ts",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"test": "vitest run",
|
|
15
|
+
"test:watch": "vitest",
|
|
16
|
+
"prepublishOnly": "npm run build"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
20
|
+
"zod": "^3.24.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/node": "^22.0.0",
|
|
24
|
+
"tsx": "^4.19.0",
|
|
25
|
+
"typescript": "^5.7.0",
|
|
26
|
+
"vitest": "^3.1.0"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": { "access": "public" },
|
|
29
|
+
"mcpName": "io.github.theYahia/paymongo-mcp",
|
|
30
|
+
"keywords": ["mcp","mcp-server","model-context-protocol","claude","ai","philippines-api","paymongo","payments","typescript"],
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": { "type": "git", "url": "https://github.com/theYahia/paymongo-mcp.git" },
|
|
33
|
+
"homepage": "https://github.com/theYahia/paymongo-mcp#readme",
|
|
34
|
+
"author": "theYahia (https://github.com/theYahia)"
|
|
35
|
+
}
|