UNPKG

fake-toss-payments-server

Version:
480 lines 39 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FakeTossVirtualAccountsController = void 0; var __nestia_core_transform_isFormatDateTime = __importStar(require("typia/lib/internal/_isFormatDateTime.js")); var __nestia_core_transform_isFormatDate = __importStar(require("typia/lib/internal/_isFormatDate.js")); var __nestia_core_transform_assertGuard = __importStar(require("typia/lib/internal/_assertGuard.js")); var __nestia_core_transform_jsonStringifyString = __importStar(require("typia/lib/internal/_jsonStringifyString.js")); var __nestia_core_transform_validateReport = __importStar(require("typia/lib/internal/_validateReport.js")); var core_1 = __importDefault(require("@nestia/core")); var common_1 = require("@nestjs/common"); var uuid_1 = require("uuid"); var FakeTossUserAuth_1 = require("../decorators/FakeTossUserAuth"); var FakeTossPaymentProvider_1 = require("../providers/FakeTossPaymentProvider"); var FakeTossStorage_1 = require("../providers/FakeTossStorage"); var FakeTossWebhookProvider_1 = require("../providers/FakeTossWebhookProvider"); var DateUtil_1 = require("../utils/DateUtil"); var FakeTossVirtualAccountsController = /** @class */ (function () { function FakeTossVirtualAccountsController() { } /** * 가상 계좌로 결제 신청하기. * * `virtual_accounts.create` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는 * API 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을 * 입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status} 값은 * `WAITING_FOR_DEPOSIT` 이 된다. * * 참고로 `virtual_accounts.create` 는 클라이언트 어플리케이션이 토스 페이먼츠가 * 자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 * 호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을 * 시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다. * * 그리고 `virtual_accounts.create` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스 * 페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동 * 대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면, * {@link internal.virtual_accounts.deposit} 를 호출하여, 고객이 가상 계좌에 입금하는 * 상황을 시뮬레이션 할 수 있다. * * @param input 가상 결제 신청 정보. * @returns 가상 계좌 결제 정보 * * @security basic * @author Samchon */ FakeTossVirtualAccountsController.prototype.create = function (_0, input) { var payment = __assign(__assign({}, FakeTossPaymentProvider_1.FakeTossPaymentProvider.get_common_props(input)), { method: "가상계좌", type: "NORMAL", status: "WAITING_FOR_DEPOSIT", approvedAt: null, secret: (0, uuid_1.v4)(), virtualAccount: { accountNumber: "110417532896", accountType: "일반", bank: input.bank, customerName: input.customerName, dueDate: DateUtil_1.DateUtil.to_string(DateUtil_1.DateUtil.add_days(new Date(), 3), false), expired: false, settlementStatus: "INCOMPLETED", refundStatus: "NONE", } }); FakeTossStorage_1.FakeTossStorage.payments.set(payment.paymentKey, payment); FakeTossWebhookProvider_1.FakeTossWebhookProvider.webhook({ eventType: "PAYMENT_STATUS_CHANGED", data: { paymentKey: payment.paymentKey, orderId: payment.orderId, status: "WAITING_FOR_DEPOSIT", }, }).catch(function () { }); return payment; }; __decorate([ core_1.default.TypedRoute.Post({ type: "assert", assert: (function () { var _io0 = function (input) { return "string" === typeof input.secret && ("object" === typeof input.virtualAccount && null !== input.virtualAccount && _io1(input.virtualAccount)) && "\uAC00\uC0C1\uACC4\uC88C" === input.method && "NORMAL" === input.type && ("READY" === input.status || "IN_PROGRESS" === input.status || "WAITING_FOR_DEPOSIT" === input.status || "DONE" === input.status || "CANCELED" === input.status || "PARTIAL_CANCELED" === input.status || "ABORTED" === input.status || "EXPIRED" === input.status) && "string" === typeof input.mId && "string" === typeof input.version && "string" === typeof input.paymentKey && "string" === typeof input.orderId && "string" === typeof input.transactionKey && "string" === typeof input.orderName && "string" === typeof input.currency && ("number" === typeof input.totalAmount && !Number.isNaN(input.totalAmount)) && ("number" === typeof input.balanceAmount && !Number.isNaN(input.balanceAmount)) && ("number" === typeof input.suppliedAmount && !Number.isNaN(input.suppliedAmount)) && ("number" === typeof input.taxFreeAmount && !Number.isNaN(input.taxFreeAmount)) && ("number" === typeof input.vat && !Number.isNaN(input.vat)) && "boolean" === typeof input.useEscrow && "boolean" === typeof input.cultureExpense && ("string" === typeof input.requestedAt && __nestia_core_transform_isFormatDateTime._isFormatDateTime(input.requestedAt)) && (null === input.approvedAt || "string" === typeof input.approvedAt && __nestia_core_transform_isFormatDateTime._isFormatDateTime(input.approvedAt)) && (null === input.cancels || Array.isArray(input.cancels) && input.cancels.every(function (elem) { return "object" === typeof elem && null !== elem && _io2(elem); })) && (null === input.cashReceipt || "object" === typeof input.cashReceipt && null !== input.cashReceipt && _io3(input.cashReceipt)); }; var _io1 = function (input) { return "string" === typeof input.accountNumber && ("\uC77C\uBC18" === input.accountType || "\uACE0\uC815" === input.accountType) && "string" === typeof input.bank && "string" === typeof input.customerName && ("string" === typeof input.dueDate && __nestia_core_transform_isFormatDate._isFormatDate(input.dueDate)) && "boolean" === typeof input.expired && ("INCOMPLETED" === input.settlementStatus || "COMPLETED" === input.settlementStatus) && ("COMPLETED" === input.refundStatus || "NONE" === input.refundStatus || "FAILED" === input.refundStatus || "PENDING" === input.refundStatus || "PARTIAL_FAILED" === input.refundStatus); }; var _io2 = function (input) { return "number" === typeof input.cancelAmount && !Number.isNaN(input.cancelAmount) && "string" === typeof input.cancelReason && ("number" === typeof input.taxFreeAmount && !Number.isNaN(input.taxFreeAmount)) && ("number" === typeof input.taxAmount && !Number.isNaN(input.taxAmount)) && ("number" === typeof input.refundableAmount && !Number.isNaN(input.refundableAmount)) && ("string" === typeof input.canceledAt && __nestia_core_transform_isFormatDateTime._isFormatDateTime(input.canceledAt)); }; var _io3 = function (input) { return ("\uC18C\uB4DD\uACF5\uC81C" === input.type || "\uC9C0\uCD9C\uC99D\uBE59" === input.type) && ("number" === typeof input.amount && !Number.isNaN(input.amount)) && ("number" === typeof input.taxFreeAmount && !Number.isNaN(input.taxFreeAmount)) && "string" === typeof input.issueNumber && "string" === typeof input.receiptUrl; }; var _ao0 = function (input, _path, _exceptionable) { if (_exceptionable === void 0) { _exceptionable = true; } return ("string" === typeof input.secret || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".secret", expected: "string", value: input.secret }, _errorFactory)) && (("object" === typeof input.virtualAccount && null !== input.virtualAccount || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".virtualAccount", expected: "ITossVirtualAccountPayment.IVirtualAccount", value: input.virtualAccount }, _errorFactory)) && _ao1(input.virtualAccount, _path + ".virtualAccount", true && _exceptionable) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".virtualAccount", expected: "ITossVirtualAccountPayment.IVirtualAccount", value: input.virtualAccount }, _errorFactory)) && ("\uAC00\uC0C1\uACC4\uC88C" === input.method || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".method", expected: "\"\uAC00\uC0C1\uACC4\uC88C\"", value: input.method }, _errorFactory)) && ("NORMAL" === input.type || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".type", expected: "\"NORMAL\"", value: input.type }, _errorFactory)) && ("READY" === input.status || "IN_PROGRESS" === input.status || "WAITING_FOR_DEPOSIT" === input.status || "DONE" === input.status || "CANCELED" === input.status || "PARTIAL_CANCELED" === input.status || "ABORTED" === input.status || "EXPIRED" === input.status || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".status", expected: "(\"ABORTED\" | \"CANCELED\" | \"DONE\" | \"EXPIRED\" | \"IN_PROGRESS\" | \"PARTIAL_CANCELED\" | \"READY\" | \"WAITING_FOR_DEPOSIT\")", value: input.status }, _errorFactory)) && ("string" === typeof input.mId || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".mId", expected: "string", value: input.mId }, _errorFactory)) && ("string" === typeof input.version || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".version", expected: "string", value: input.version }, _errorFactory)) && ("string" === typeof input.paymentKey || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".paymentKey", expected: "string", value: input.paymentKey }, _errorFactory)) && ("string" === typeof input.orderId || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".orderId", expected: "string", value: input.orderId }, _errorFactory)) && ("string" === typeof input.transactionKey || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".transactionKey", expected: "string", value: input.transactionKey }, _errorFactory)) && ("string" === typeof input.orderName || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".orderName", expected: "string", value: input.orderName }, _errorFactory)) && ("string" === typeof input.currency || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".currency", expected: "string", value: input.currency }, _errorFactory)) && ("number" === typeof input.totalAmount && !Number.isNaN(input.totalAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".totalAmount", expected: "number", value: input.totalAmount }, _errorFactory)) && ("number" === typeof input.balanceAmount && !Number.isNaN(input.balanceAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".balanceAmount", expected: "number", value: input.balanceAmount }, _errorFactory)) && ("number" === typeof input.suppliedAmount && !Number.isNaN(input.suppliedAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".suppliedAmount", expected: "number", value: input.suppliedAmount }, _errorFactory)) && ("number" === typeof input.taxFreeAmount && !Number.isNaN(input.taxFreeAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".taxFreeAmount", expected: "number", value: input.taxFreeAmount }, _errorFactory)) && ("number" === typeof input.vat && !Number.isNaN(input.vat) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".vat", expected: "number", value: input.vat }, _errorFactory)) && ("boolean" === typeof input.useEscrow || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".useEscrow", expected: "boolean", value: input.useEscrow }, _errorFactory)) && ("boolean" === typeof input.cultureExpense || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cultureExpense", expected: "boolean", value: input.cultureExpense }, _errorFactory)) && ("string" === typeof input.requestedAt && (__nestia_core_transform_isFormatDateTime._isFormatDateTime(input.requestedAt) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".requestedAt", expected: "string & Format<\"date-time\">", value: input.requestedAt }, _errorFactory)) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".requestedAt", expected: "(string & Format<\"date-time\">)", value: input.requestedAt }, _errorFactory)) && (null === input.approvedAt || "string" === typeof input.approvedAt && (__nestia_core_transform_isFormatDateTime._isFormatDateTime(input.approvedAt) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".approvedAt", expected: "string & Format<\"date-time\">", value: input.approvedAt }, _errorFactory)) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".approvedAt", expected: "((string & Format<\"date-time\">) | null)", value: input.approvedAt }, _errorFactory)) && (null === input.cancels || (Array.isArray(input.cancels) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cancels", expected: "(Array<ITossPaymentCancel> | null)", value: input.cancels }, _errorFactory)) && input.cancels.every(function (elem, _index2) { return ("object" === typeof elem && null !== elem || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cancels[" + _index2 + "]", expected: "ITossPaymentCancel", value: elem }, _errorFactory)) && _ao2(elem, _path + ".cancels[" + _index2 + "]", true && _exceptionable) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cancels[" + _index2 + "]", expected: "ITossPaymentCancel", value: elem }, _errorFactory); }) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cancels", expected: "(Array<ITossPaymentCancel> | null)", value: input.cancels }, _errorFactory)) && (null === input.cashReceipt || ("object" === typeof input.cashReceipt && null !== input.cashReceipt || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cashReceipt", expected: "(ITossCashReceipt.ISummary | null)", value: input.cashReceipt }, _errorFactory)) && _ao3(input.cashReceipt, _path + ".cashReceipt", true && _exceptionable) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cashReceipt", expected: "(ITossCashReceipt.ISummary | null)", value: input.cashReceipt }, _errorFactory)); }; var _ao1 = function (input, _path, _exceptionable) { if (_exceptionable === void 0) { _exceptionable = true; } return ("string" === typeof input.accountNumber || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".accountNumber", expected: "string", value: input.accountNumber }, _errorFactory)) && ("\uC77C\uBC18" === input.accountType || "\uACE0\uC815" === input.accountType || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".accountType", expected: "(\"\uACE0\uC815\" | \"\uC77C\uBC18\")", value: input.accountType }, _errorFactory)) && ("string" === typeof input.bank || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".bank", expected: "string", value: input.bank }, _errorFactory)) && ("string" === typeof input.customerName || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".customerName", expected: "string", value: input.customerName }, _errorFactory)) && ("string" === typeof input.dueDate && (__nestia_core_transform_isFormatDate._isFormatDate(input.dueDate) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".dueDate", expected: "string & Format<\"date\">", value: input.dueDate }, _errorFactory)) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".dueDate", expected: "(string & Format<\"date\">)", value: input.dueDate }, _errorFactory)) && ("boolean" === typeof input.expired || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".expired", expected: "boolean", value: input.expired }, _errorFactory)) && ("INCOMPLETED" === input.settlementStatus || "COMPLETED" === input.settlementStatus || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".settlementStatus", expected: "(\"COMPLETED\" | \"INCOMPLETED\")", value: input.settlementStatus }, _errorFactory)) && ("COMPLETED" === input.refundStatus || "NONE" === input.refundStatus || "FAILED" === input.refundStatus || "PENDING" === input.refundStatus || "PARTIAL_FAILED" === input.refundStatus || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".refundStatus", expected: "(\"COMPLETED\" | \"FAILED\" | \"NONE\" | \"PARTIAL_FAILED\" | \"PENDING\")", value: input.refundStatus }, _errorFactory)); }; var _ao2 = function (input, _path, _exceptionable) { if (_exceptionable === void 0) { _exceptionable = true; } return ("number" === typeof input.cancelAmount && !Number.isNaN(input.cancelAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cancelAmount", expected: "number", value: input.cancelAmount }, _errorFactory)) && ("string" === typeof input.cancelReason || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".cancelReason", expected: "string", value: input.cancelReason }, _errorFactory)) && ("number" === typeof input.taxFreeAmount && !Number.isNaN(input.taxFreeAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".taxFreeAmount", expected: "number", value: input.taxFreeAmount }, _errorFactory)) && ("number" === typeof input.taxAmount && !Number.isNaN(input.taxAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".taxAmount", expected: "number", value: input.taxAmount }, _errorFactory)) && ("number" === typeof input.refundableAmount && !Number.isNaN(input.refundableAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".refundableAmount", expected: "number", value: input.refundableAmount }, _errorFactory)) && ("string" === typeof input.canceledAt && (__nestia_core_transform_isFormatDateTime._isFormatDateTime(input.canceledAt) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".canceledAt", expected: "string & Format<\"date-time\">", value: input.canceledAt }, _errorFactory)) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".canceledAt", expected: "(string & Format<\"date-time\">)", value: input.canceledAt }, _errorFactory)); }; var _ao3 = function (input, _path, _exceptionable) { if (_exceptionable === void 0) { _exceptionable = true; } return ("\uC18C\uB4DD\uACF5\uC81C" === input.type || "\uC9C0\uCD9C\uC99D\uBE59" === input.type || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".type", expected: "(\"\uC18C\uB4DD\uACF5\uC81C\" | \"\uC9C0\uCD9C\uC99D\uBE59\")", value: input.type }, _errorFactory)) && ("number" === typeof input.amount && !Number.isNaN(input.amount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".amount", expected: "number", value: input.amount }, _errorFactory)) && ("number" === typeof input.taxFreeAmount && !Number.isNaN(input.taxFreeAmount) || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".taxFreeAmount", expected: "number", value: input.taxFreeAmount }, _errorFactory)) && ("string" === typeof input.issueNumber || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".issueNumber", expected: "string", value: input.issueNumber }, _errorFactory)) && ("string" === typeof input.receiptUrl || __nestia_core_transform_assertGuard._assertGuard(_exceptionable, { method: "core.TypedRoute.Post", path: _path + ".receiptUrl", expected: "string", value: input.receiptUrl }, _errorFactory)); }; var _so0 = function (input) { return "{\"secret\":".concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.secret), ",\"virtualAccount\":").concat(_so1(input.virtualAccount), ",\"method\":").concat("\"" + input.method + "\"", ",\"type\":").concat("\"" + input.type + "\"", ",\"status\":").concat("\"" + input.status + "\"", ",\"mId\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.mId), ",\"version\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.version), ",\"paymentKey\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.paymentKey), ",\"orderId\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.orderId), ",\"transactionKey\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.transactionKey), ",\"orderName\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.orderName), ",\"currency\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.currency), ",\"totalAmount\":").concat(input.totalAmount, ",\"balanceAmount\":").concat(input.balanceAmount, ",\"suppliedAmount\":").concat(input.suppliedAmount, ",\"taxFreeAmount\":").concat(input.taxFreeAmount, ",\"vat\":").concat(input.vat, ",\"useEscrow\":").concat(input.useEscrow, ",\"cultureExpense\":").concat(input.cultureExpense, ",\"requestedAt\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.requestedAt), ",\"approvedAt\":").concat(null !== input.approvedAt ? __nestia_core_transform_jsonStringifyString._jsonStringifyString(input.approvedAt) : "null", ",\"cancels\":").concat(null !== input.cancels ? "[".concat(input.cancels.map(function (elem) { return _so2(elem); }).join(","), "]") : "null", ",\"cashReceipt\":").concat(null !== input.cashReceipt ? _so3(input.cashReceipt) : "null", "}"); }; var _so1 = function (input) { return "{\"accountNumber\":".concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.accountNumber), ",\"accountType\":").concat("\"" + input.accountType + "\"", ",\"bank\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.bank), ",\"customerName\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.customerName), ",\"dueDate\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.dueDate), ",\"expired\":").concat(input.expired, ",\"settlementStatus\":").concat("\"" + input.settlementStatus + "\"", ",\"refundStatus\":").concat("\"" + input.refundStatus + "\"", "}"); }; var _so2 = function (input) { return "{\"cancelAmount\":".concat(input.cancelAmount, ",\"cancelReason\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.cancelReason), ",\"taxFreeAmount\":").concat(input.taxFreeAmount, ",\"taxAmount\":").concat(input.taxAmount, ",\"refundableAmount\":").concat(input.refundableAmount, ",\"canceledAt\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.canceledAt), "}"); }; var _so3 = function (input) { return "{\"type\":".concat("\"" + input.type + "\"", ",\"amount\":").concat(input.amount, ",\"taxFreeAmount\":").concat(input.taxFreeAmount, ",\"issueNumber\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.issueNumber), ",\"receiptUrl\":").concat(__nestia_core_transform_jsonStringifyString._jsonStringifyString(input.receiptUrl), "}"); }; var __is = function (input) { return "object" === typeof input && null !== input && _io0(input); }; var _errorFactory; var __assert = function (input, errorFactory) { if (false === __is(input)) { _errorFactory = errorFactory; (function (input, _path, _exceptionable) { if (_exceptionable === void 0) { _exceptionable = true; } return ("object" === typeof input && null !== input || __nestia_core_transform_assertGuard._assertGuard(true, { method: "core.TypedRoute.Post", path: _path + "", expected: "ITossVirtualAccountPayment", value: input }, _errorFactory)) && _ao0(input, _path + "", true) || __nestia_core_transform_assertGuard._assertGuard(true, { method: "core.TypedRoute.Post", path: _path + "", expected: "ITossVirtualAccountPayment", value: input }, _errorFactory); })(input, "$input", true); } return input; }; var __stringify = function (input) { return _so0(input); }; return function (input, errorFactory) { __assert(input, errorFactory); return __stringify(input); }; })() }), __param(0, (0, FakeTossUserAuth_1.FakeTossUserAuth)()), __param(1, core_1.default.TypedBody({ type: "validate", validate: (function () { var _io0 = function (input) { return "virtual-account" === input.method && "string" === typeof input.orderId && "string" === typeof input.orderName && "string" === typeof input.bank && "string" === typeof input.customerName && "number" === typeof input.amount && (undefined === input.__approved || "boolean" === typeof input.__approved); }; var _vo0 = function (input, _path, _exceptionable) { if (_exceptionable === void 0) { _exceptionable = true; } return ["virtual-account" === input.method || _report(_exceptionable, { path: _path + ".method", expected: "\"virtual-account\"", value: input.method }), "string" === typeof input.orderId || _report(_exceptionable, { path: _path + ".orderId", expected: "string", value: input.orderId }), "string" === typeof input.orderName || _report(_exceptionable, { path: _path + ".orderName", expected: "string", value: input.orderName }), "string" === typeof input.bank || _report(_exceptionable, { path: _path + ".bank", expected: "string", value: input.bank }), "string" === typeof input.customerName || _report(_exceptionable, { path: _path + ".customerName", expected: "string", value: input.customerName }), "number" === typeof input.amount || _report(_exceptionable, { path: _path + ".amount", expected: "number", value: input.amount }), undefined === input.__approved || "boolean" === typeof input.__approved || _report(_exceptionable, { path: _path + ".__approved", expected: "(boolean | undefined)", value: input.__approved })].every(function (flag) { return flag; }); }; var __is = function (input) { return "object" === typeof input && null !== input && _io0(input); }; var errors; var _report; return function (input) { if (false === __is(input)) { errors = []; _report = __nestia_core_transform_validateReport._validateReport(errors); (function (input, _path, _exceptionable) { if (_exceptionable === void 0) { _exceptionable = true; } return ("object" === typeof input && null !== input || _report(true, { path: _path + "", expected: "ITossVirtualAccountPayment.ICreate", value: input })) && _vo0(input, _path + "", true) || _report(true, { path: _path + "", expected: "ITossVirtualAccountPayment.ICreate", value: input }); })(input, "$input", true); var success = 0 === errors.length; return success ? { success: success, data: input } : { success: success, errors: errors, data: input }; } return { success: true, data: input }; }; })() })), __metadata("design:type", Function), __metadata("design:paramtypes", [void 0, Object]), __metadata("design:returntype", Object) ], FakeTossVirtualAccountsController.prototype, "create", null); FakeTossVirtualAccountsController = __decorate([ (0, common_1.Controller)("v1/virtual-accounts") ], FakeTossVirtualAccountsController); return FakeTossVirtualAccountsController; }()); exports.FakeTossVirtualAccountsController = FakeTossVirtualAccountsController; //# sourceMappingURL=FakeTossVirtualAccountsController.js.map