paypal-rest-api
Version:
A typescript module for integrating with PayPal REST APIs.
123 lines (122 loc) • 5.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const joi = require("joi");
const schemas_1 = require("../api/schemas");
exports.paymentIdSchema = joi.string().regex(/PAY-[a-zA-Z0-9]*/);
exports.paypalShippingAddressSchema = joi.object().keys({
city: joi.string().trim().empty("").max(50).required(),
country_code: joi.string().trim().empty("").length(2).default("US"),
line1: joi.string().trim().empty("").max(100).required(),
line2: joi.string().trim().empty("").max(100).optional(),
phone: joi.string().trim().empty("").max(50).optional(),
postal_code: joi.string().trim().empty("").max(20).required(),
recipient_name: joi.string().trim().empty("").max(127).optional(),
state: joi.string().trim().empty("").max(10).optional(),
type: joi.string().trim().empty("").max(100).optional(),
});
exports.paypalAmountSchema = joi.object().keys({
currency: joi.string().trim().empty("").length(3).required(),
details: joi.object().keys({
gift_wrap: joi.string().trim().empty("").max(10).optional(),
handling_fee: joi.string().trim().empty("").max(10).optional(),
insurance: joi.string().trim().empty("").max(10).optional(),
shipping: joi.string().trim().empty("").max(10).optional(),
shipping_discount: joi.string().trim().empty("").max(10).optional(),
subtotal: joi.string().trim().empty("").max(10).optional(),
tax: joi.string().trim().empty("").max(10).optional(),
}).optional(),
total: joi.string().trim().empty("").max(10).required(),
});
exports.paypalItemSchema = joi.object().keys({
currency: joi.string().trim().empty("").length(3).default("USD"),
description: joi.string().trim().empty("").max(127).optional(),
name: joi.string().trim().empty("").max(127).optional(),
price: joi.string().trim().empty("").max(10).required(),
quantity: joi.string().trim().empty("").max(10).required(),
sku: joi.string().trim().empty("").max(127).optional(),
tax: joi.string().trim().empty("").max(10).optional(),
url: joi.string().trim().empty("").max(10).optional(),
});
exports.paypalItemListSchema = joi.object().keys({
items: joi.array().items(exports.paypalItemSchema).optional(),
shipping_address: exports.paypalShippingAddressSchema.optional(),
shipping_method: joi.string().trim().empty("").max(100).optional(),
shipping_phone_number: joi.string().trim().empty("").max(50).optional(),
});
exports.transactionSchema = joi.object().keys({
amount: exports.paypalAmountSchema.required(),
custom: joi.string().trim().empty("").max(127).optional(),
description: joi.string().trim().empty("").max(127).optional(),
invoice_number: joi.string().trim().empty("").max(127).optional(),
item_list: exports.paypalItemListSchema.optional(),
note_to_payee: joi.string().trim().empty("").max(255).optional(),
notify_url: joi.string().trim().empty("").max(2048).optional(),
order_url: joi.string().trim().empty("").max(2048).optional(),
payee: joi.object().keys({
email: joi.string().trim().empty("").optional(),
merchant_id: joi.string().trim().empty("").optional(),
}).optional(),
payer: joi.object().keys({
payment_method: joi.string().valid("paypal").default("paypal"),
}).optional(),
payment_options: joi.object().keys({
allowed_payment_method: joi.string().trim().empty("").valid(["UNRESTRICTED", "INSTANT_FUNDING_SOURCE", "IMMEDIATE_PAY"]).required(),
}).optional(),
purchase_order: joi.string().trim().empty("").max(127).optional(),
reference_id: joi.string().empty("").optional(),
soft_descriptor: joi.string().trim().empty("").max(22).optional(),
});
exports.paymentSchema = joi.object().keys({
experience_profile_id: joi.string().trim().empty("").optional(),
intent: joi.string().empty("").valid(["sale", "authorize", "order"]).default("sale"),
note_to_payer: joi.string().trim().empty("").max(165).optional(),
payer: joi.object().keys({
payment_method: joi.string().valid("paypal").default("paypal"),
}).default(),
redirect_urls: joi.object().keys({
cancel_url: joi.string().trim().empty("").max(2048).default("http://localhost"),
return_url: joi.string().trim().empty("").max(2048).default("http://localhost"),
}).default(),
transactions: joi.array().items(exports.transactionSchema).min(1).required(),
});
exports.createPaymentRequestSchema = joi.object({
body: exports.paymentSchema.required(),
method: joi.string().default("POST"),
uri: joi.string().required(),
});
exports.executePaymentRequestSchema = joi.object({
body: joi.object({
payer_id: joi.string().required(),
transactions: joi.array().items(exports.transactionSchema).optional(),
}),
method: joi.string().default("POST"),
uri: joi.string().required(),
});
exports.getPaymentRequestSchema = joi.object({
method: joi.string().default("GET"),
uri: joi.string().required(),
});
exports.updatePaymentRequestSchema = joi.object({
body: schemas_1.updateRequestSchema.required(),
method: joi.string().default("PATCH"),
uri: joi.string().required(),
});
exports.listPaymentRequestSchema = joi.object({
method: joi.string().default("GET"),
qs: joi.object({
count: joi.number().default(10),
end_time: joi.string().optional(),
payee_id: joi.string().optional(),
sort_by: joi.string().default("create_time"),
sort_order: joi.string().default("desc"),
start_id: joi.string().optional(),
start_time: joi.string().optional(),
}).default(),
uri: joi.string().required(),
});
exports.fraudManagementFiltersSchema = joi.object({
description: joi.string().optional(),
filter_id: joi.string().optional(),
filter_type: joi.string().optional(),
name: joi.string().optional(),
});