@aajsa/moyasar-client
Version:
A lightweight and type-safe TypeScript client for interacting with Moyasar Payment Gateway APIs.
187 lines (185 loc) • 7.3 kB
JavaScript
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
const require_common = require('./common.cjs');
const zod_v4_mini = require_rolldown_runtime.__toESM(require("zod/v4-mini"));
//#region src/schema/payment.ts
const PaymentStatusEnum = zod_v4_mini.z.enum([
"initiated",
"paid",
"authorized",
"failed",
"refunded",
"captured",
"voided",
"verified"
]);
const PaymentResponseSchema = zod_v4_mini.z.object({
id: zod_v4_mini.z.uuid(),
status: PaymentStatusEnum,
amount: zod_v4_mini.z.number(),
fee: zod_v4_mini.z.number(),
currency: zod_v4_mini.z.string().check(zod_v4_mini.z.length(3)),
refunded: zod_v4_mini.z.number(),
refunded_at: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
captured: zod_v4_mini.z.number(),
captured_at: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
voided_at: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
description: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
amount_format: zod_v4_mini.z.string(),
fee_format: zod_v4_mini.z.string(),
refunded_format: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
captured_format: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
invoice_id: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
ip: zod_v4_mini.z.string(),
callback_url: zod_v4_mini.z.nullish(zod_v4_mini.z.url()),
created_at: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
updated_at: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
metadata: zod_v4_mini.z.nullish(zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string())),
source: zod_v4_mini.z.object({
type: zod_v4_mini.z.enum([
"creditcard",
"applepay",
"googlepay",
"samsungpay",
"stcpay"
]),
number: zod_v4_mini.z.string(),
gateway_id: zod_v4_mini.z.string(),
company: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
name: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
reference_number: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
message: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
authorization_code: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
transaction_url: zod_v4_mini.z.nullish(zod_v4_mini.z.url()),
response_code: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
issuer_name: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
issuer_country: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
issuer_card_type: zod_v4_mini.z.nullish(zod_v4_mini.z.enum([
"debit",
"credit",
"charge_card",
"unspecified"
])),
issuer_card_category: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
token: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
dpan: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
mobile: zod_v4_mini.z.nullish(zod_v4_mini.z.string()),
cashier: zod_v4_mini.z.nullish(zod_v4_mini.z.string())
})
});
const createPaymentSchema = zod_v4_mini.z.object({
given_id: zod_v4_mini.z.uuid(),
amount: zod_v4_mini.z.number().check(zod_v4_mini.z.positive()),
currency: zod_v4_mini.z.string().check(zod_v4_mini.z.length(3)),
description: zod_v4_mini.z.optional(zod_v4_mini.z.string()),
source: zod_v4_mini.z.discriminatedUnion("type", [
zod_v4_mini.z.object({
type: zod_v4_mini.z.literal("creditcard"),
name: zod_v4_mini.z.string().check(zod_v4_mini.z.minLength(1), zod_v4_mini.z.maxLength(255)),
number: zod_v4_mini.z.string().check(zod_v4_mini.z.regex(/^\d{16,19}$/)),
month: zod_v4_mini.z.number().check(zod_v4_mini.z.minimum(1), zod_v4_mini.z.maximum(12)),
year: zod_v4_mini.z.number().check(zod_v4_mini.z.minimum(Number((/* @__PURE__ */ new Date()).getFullYear()))),
cvc: zod_v4_mini.z.string().check(zod_v4_mini.z.minLength(3), zod_v4_mini.z.maxLength(4)),
statement_descriptor: zod_v4_mini.z.optional(zod_v4_mini.z.string()),
"3ds": zod_v4_mini.z.optional(zod_v4_mini.z._default(zod_v4_mini.z.boolean(), true)),
manual: zod_v4_mini.z.optional(zod_v4_mini.z.boolean()),
save_card: zod_v4_mini.z.optional(zod_v4_mini.z._default(zod_v4_mini.z.boolean(), false))
}),
zod_v4_mini.z.object({
type: zod_v4_mini.z.literal("token"),
token: zod_v4_mini.z.string().check(zod_v4_mini.z.startsWith("token_")),
cvc: zod_v4_mini.z.string().check(zod_v4_mini.z.minLength(3), zod_v4_mini.z.maxLength(4)),
statement_descriptor: zod_v4_mini.z.optional(zod_v4_mini.z.string()),
"3ds": zod_v4_mini.z._default(zod_v4_mini.z.boolean(), true),
manual: zod_v4_mini.z.optional(zod_v4_mini.z.boolean())
}),
zod_v4_mini.z.object({
type: zod_v4_mini.z.enum([
"applepay",
"samsungpay",
"googlepay"
]),
token: zod_v4_mini.z.string(),
manual: zod_v4_mini.z.optional(zod_v4_mini.z.boolean()),
statement_descriptor: zod_v4_mini.z.optional(zod_v4_mini.z.string())
}),
zod_v4_mini.z.object({
type: zod_v4_mini.z.literal("stcpay"),
mobile: zod_v4_mini.z.string().check(zod_v4_mini.z.regex(/^(0|(00|\+)?966)?(5\d{8})/)),
cashier: zod_v4_mini.z.optional(zod_v4_mini.z.string()),
branch: zod_v4_mini.z.optional(zod_v4_mini.z.string())
})
]),
callback_url: zod_v4_mini.z.url(),
metadata: zod_v4_mini.z.optional(zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string())),
apply_coupon: zod_v4_mini.z.optional(zod_v4_mini.z.boolean())
});
const listPaymentSchema = zod_v4_mini.z.optional(zod_v4_mini.z.partial(zod_v4_mini.z.object({
page: zod_v4_mini.z.number(),
id: zod_v4_mini.z.uuid(),
status: PaymentStatusEnum,
"created[gt]": zod_v4_mini.z.string(),
"created[lt]": zod_v4_mini.z.string(),
"updated[gt]": zod_v4_mini.z.string(),
"updated[lt]": zod_v4_mini.z.string(),
card_last_digits: zod_v4_mini.z.string().check(zod_v4_mini.z.minLength(4)),
receipt_no: zod_v4_mini.z.string(),
metadata: zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string())
})));
const updatePaymentSchema = zod_v4_mini.z.partial(zod_v4_mini.z.object({
description: zod_v4_mini.z.string(),
metadata: zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string())
}));
const paymentAdjustmentSchema = zod_v4_mini.z.object({ amount: zod_v4_mini.z.number() });
const paymentsEndpoints = {
getPaymentId: {
path: "/payments/:id",
method: "GET",
params: require_common.paramPathIdSchema,
output: PaymentResponseSchema
},
listPayments: {
path: "/payments",
method: "GET",
query: listPaymentSchema,
output: zod_v4_mini.z.partial(zod_v4_mini.z.object({
payments: zod_v4_mini.z.array(PaymentResponseSchema),
meta: require_common.MetaResponseSchema
}))
},
createPayment: {
path: "/payments",
method: "POST",
input: createPaymentSchema,
output: PaymentResponseSchema
},
updatePayment: {
path: "/payments/:id",
method: "PUT",
params: require_common.paramPathIdSchema,
input: updatePaymentSchema,
output: PaymentResponseSchema
},
refundPayment: {
path: "/payments/:id/refund",
method: "POST",
params: require_common.paramPathIdSchema,
input: paymentAdjustmentSchema,
output: PaymentResponseSchema
},
capturePayment: {
path: "/payments/:id/capture",
method: "POST",
params: require_common.paramPathIdSchema,
input: paymentAdjustmentSchema,
output: PaymentResponseSchema
},
voidPayment: {
path: "/payments/:id/void",
method: "POST",
params: require_common.paramPathIdSchema,
output: PaymentResponseSchema
}
};
//#endregion
exports.PaymentResponseSchema = PaymentResponseSchema;
exports.paymentsEndpoints = paymentsEndpoints;