diff --git a/package.json b/package.json index ec59eda..e855663 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@samchon/payments", - "version": "8.0.1", + "version": "8.0.2", "description": "Collection of Payment system of Samchon", "scripts": { "package:latest": "node deploy latest", @@ -36,6 +36,6 @@ "prettier": "^3.2.4", "prettier-plugin-prisma": "^5.0.0", "rimraf": "^5.0.5", - "typescript": "^5.3.2" + "typescript": "^5.5.2" } } diff --git a/packages/fake-iamport-server/package.json b/packages/fake-iamport-server/package.json index caf178e..8e4b1fa 100644 --- a/packages/fake-iamport-server/package.json +++ b/packages/fake-iamport-server/package.json @@ -1,6 +1,6 @@ { "name": "fake-iamport-server", - "version": "8.0.1", + "version": "8.0.2", "description": "Fake iamport server for testing", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -38,11 +38,11 @@ }, "homepage": "https://github.com/samchon/fake-iamport-server", "devDependencies": { - "@nestia/sdk": "^3.2.2", + "@nestia/sdk": "^3.3.2", "@types/atob": "^2.1.2", "@types/btoa": "^1.2.3", "@types/cli": "^0.11.19", - "@types/node": "^15.6.1", + "@types/node": "^20.14.9", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.26.0", "@typescript-eslint/parser": "^5.26.0", @@ -53,13 +53,13 @@ "rimraf": "^3.0.2", "sloc": "^0.2.1", "ts-node": "^10.9.1", - "ts-patch": "^3.1.1", - "typescript": "^5.3.2" + "ts-patch": "^3.2.1", + "typescript": "^5.5.2" }, "dependencies": { - "@nestia/core": "^3.2.2", + "@nestia/core": "^3.3.2", "@nestia/e2e": "^0.6.0", - "@nestia/fetcher": "^3.2.2", + "@nestia/fetcher": "^3.3.2", "@nestjs/common": "^10.2.8", "@nestjs/core": "^10.2.8", "@nestjs/platform-fastify": "^10.2.8", @@ -70,7 +70,7 @@ "source-map-support": "^0.5.19", "tstl": "^3.0.0", "typescript-transform-paths": "^3.4.6", - "typia": "^6.1.0", + "typia": "^6.3.1", "uuid": "^9.0.0" }, "keywords": [ diff --git a/packages/fake-iamport-server/src/api/functional/certifications/index.ts b/packages/fake-iamport-server/src/api/functional/certifications/index.ts index a20add5..0af1d92 100644 --- a/packages/fake-iamport-server/src/api/functional/certifications/index.ts +++ b/packages/fake-iamport-server/src/api/functional/certifications/index.ts @@ -17,9 +17,9 @@ export * as otp from "./otp"; * * `certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다. * - * 다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification } 이 + * 다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification} 이 * 곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결 - * 여부는 오직, {@link IIamportCertification.certified } 값을 직접 검사해봐야만 알 + * 여부는 오직, {@link IIamportCertification.certified} 값을 직접 검사해봐야만 알 * 수 있기 때문이다. * * @param imp_uid 대상 본인인증 정보의 {@link IIamportCertification.imp_uid} diff --git a/packages/fake-iamport-server/src/api/functional/certifications/otp/index.ts b/packages/fake-iamport-server/src/api/functional/certifications/otp/index.ts index 5f9872e..7db4611 100644 --- a/packages/fake-iamport-server/src/api/functional/certifications/otp/index.ts +++ b/packages/fake-iamport-server/src/api/functional/certifications/otp/index.ts @@ -15,13 +15,13 @@ import type { IIamportResponse } from "../../../structures/IIamportResponse"; * * `certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다. * 이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증 - * 대상자가 {@link certifications.otp.confirm } 을 통하여 이 OTP 번호를 정확히 + * 대상자가 {@link certifications.otp.confirm} 을 통하여 이 OTP 번호를 정확히 * 입력함으로써, 본인인증이 완결된다. * * 또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도, - * 여전히해당 본인인증 내역은 {@link certifications.at } 함수를 통하여 조회할 수 있다. - * 다만, 이 때 리턴되는 {@link IIamportCertification } 에서 인증의 완결 여부를 - * 지칭하는 {@link IIamportCertification.certified } 값은 `false` 이다. + * 여전히해당 본인인증 내역은 {@link certifications.at} 함수를 통하여 조회할 수 있다. + * 다만, 이 때 리턴되는 {@link IIamportCertification} 에서 인증의 완결 여부를 + * 지칭하는 {@link IIamportCertification.certified} 값은 `false` 이다. * * @param input 본인인증 요청 정보 * @returns 진행 중인 본인인증의 식별자 정보 @@ -76,13 +76,13 @@ export namespace request { /** * 본인인증 시 발급된 OTP 코드 입력하기. * - * `certifications.otp.confirm` 는 {@link certifications.otp.request } 를 통하여 + * `certifications.otp.confirm` 는 {@link certifications.otp.request} 를 통하여 * 발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를 * 검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는 * API 함수이다. * - * 이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification } 의 - * {@link IIamportCertification.certified } 값이 비로소 `true` 로 변경되어, + * 이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification} 의 + * {@link IIamportCertification.certified} 값이 비로소 `true` 로 변경되어, * 비로소 완결된다. * * @param imp_uid 대상 본인인증 정보의 {@link IIamportCertification.imp_uid} diff --git a/packages/fake-iamport-server/src/api/functional/internal/index.ts b/packages/fake-iamport-server/src/api/functional/internal/index.ts index c1183e2..0a3e26e 100644 --- a/packages/fake-iamport-server/src/api/functional/internal/index.ts +++ b/packages/fake-iamport-server/src/api/functional/internal/index.ts @@ -13,12 +13,12 @@ import type { IIamportPayment } from "../../structures/IIamportPayment"; * 웹훅 이벤트 더미 리스너. * * `internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써, - * `fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을 설정하지 + * `fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을 설정하지 * 않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어 * 무의미하게 사라진다. * * 따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는, - * 반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로 + * 반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로 * 제대로 전달되도록 하자. * * @param input 웹훅 이벤트 정보 diff --git a/packages/fake-iamport-server/src/api/functional/subscribe/customers/index.ts b/packages/fake-iamport-server/src/api/functional/subscribe/customers/index.ts index 66a5f1d..f356429 100644 --- a/packages/fake-iamport-server/src/api/functional/subscribe/customers/index.ts +++ b/packages/fake-iamport-server/src/api/functional/subscribe/customers/index.ts @@ -13,7 +13,7 @@ import type { IIamportSubscription } from "../../../structures/IIamportSubscript /** * 간편 결제 카드 정보 조회하기. * - * `subscribe.customers.at` 은 고객이 {@link create } 나 혹은 아임포트가 제공하는 + * `subscribe.customers.at` 은 고객이 {@link create} 나 혹은 아임포트가 제공하는 * 간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API * 함수이다. * diff --git a/packages/fake-iamport-server/src/api/functional/subscribe/payments/index.ts b/packages/fake-iamport-server/src/api/functional/subscribe/payments/index.ts index 52e7096..ada950c 100644 --- a/packages/fake-iamport-server/src/api/functional/subscribe/payments/index.ts +++ b/packages/fake-iamport-server/src/api/functional/subscribe/payments/index.ts @@ -15,13 +15,13 @@ import type { IIamportSubscription } from "../../../structures/IIamportSubscript * 카드로 결제하기, 더불어 간편 결제용으로 등록 가능. * * `subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API - * 함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid } 를 + * 함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid} 를 * 기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드 - * {@link IIamportSubscription } 로 등록해버린다. + * {@link IIamportSubscription} 로 등록해버린다. * * 다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면, - * `subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid } - * 를 더하기보다, {@link subscribe.customers.create } 와 {@link subscribe.payments.again } + * `subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid} + * 를 더하기보다, {@link subscribe.customers.create} 와 {@link subscribe.payments.again} * 을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기 * 때문이다. * @@ -85,7 +85,7 @@ export namespace onetime { * * `subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때 * 호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에, - * 리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment } 이다. + * 리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment} 이다. * * 그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이 * 아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API diff --git a/packages/fake-iamport-server/src/api/functional/users/index.ts b/packages/fake-iamport-server/src/api/functional/users/index.ts index 39f0778..b460042 100644 --- a/packages/fake-iamport-server/src/api/functional/users/index.ts +++ b/packages/fake-iamport-server/src/api/functional/users/index.ts @@ -15,10 +15,10 @@ import type { IIamportUser } from "../../structures/IIamportUser"; * * 아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다. * - * 단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at } + * 단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at} * 이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에 * 아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면, - * `iamport-server-api` 에서 제공해주는 {@link IamportConnector } 를 활용하도록 하자. + * `iamport-server-api` 에서 제공해주는 {@link IamportConnector} 를 활용하도록 하자. * * @param input 아임포트의 API 및 secret 키 정보 * @returns 유저 인증 토큰 정보 diff --git a/packages/fake-iamport-server/src/providers/FakeIamportPaymentProvider.ts b/packages/fake-iamport-server/src/providers/FakeIamportPaymentProvider.ts index bdeeae6..fb28fa8 100644 --- a/packages/fake-iamport-server/src/providers/FakeIamportPaymentProvider.ts +++ b/packages/fake-iamport-server/src/providers/FakeIamportPaymentProvider.ts @@ -6,8 +6,6 @@ import { DomainError } from "tstl"; import { FakeIamportConfiguration } from "../FakeIamportConfiguration"; import { FakeIamportStorage } from "./FakeIamportStorage"; -(global as any).fetch ??= require("node-fetch"); - export namespace FakeIamportPaymentProvider { export function create(payment: IIamportPayment): void { FakeIamportStorage.payments.set(payment.imp_uid, payment); diff --git a/packages/fake-toss-payments-server/package.json b/packages/fake-toss-payments-server/package.json index 02c2acb..09d46ff 100644 --- a/packages/fake-toss-payments-server/package.json +++ b/packages/fake-toss-payments-server/package.json @@ -1,6 +1,6 @@ { "name": "fake-toss-payments-server", - "version": "8.0.1", + "version": "8.0.2", "description": "Fake toss-payments server for testing", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -39,11 +39,11 @@ "homepage": "https://github.com/samchon/fake-toss-payments-server", "devDependencies": { "@nestia/e2e": "^0.6.0", - "@nestia/sdk": "^3.2.2", + "@nestia/sdk": "^3.3.2", "@types/atob": "^2.1.2", "@types/btoa": "^1.2.3", "@types/cli": "^0.11.19", - "@types/node": "^15.6.1", + "@types/node": "^20.14.9", "@types/uuid": "^9.0.1", "@typescript-eslint/eslint-plugin": "^5.26.0", "@typescript-eslint/parser": "^5.26.0", @@ -54,13 +54,13 @@ "rimraf": "^3.0.2", "sloc": "^0.2.1", "ts-node": "^10.9.1", - "ts-patch": "^3.1.1", - "typescript": "^5.1.6", + "ts-patch": "^3.2.1", + "typescript": "^5.5.2", "typescript-transform-paths": "^3.4.6" }, "dependencies": { - "@nestia/core": "^3.2.2", - "@nestia/fetcher": "^3.2.2", + "@nestia/core": "^3.3.2", + "@nestia/fetcher": "^3.3.2", "@nestjs/common": "^10.2.8", "@nestjs/core": "^10.2.8", "@nestjs/platform-fastify": "^10.2.8", @@ -70,7 +70,7 @@ "serialize-error": "^4.1.0", "source-map-support": "^0.5.19", "tstl": "^3.0.0", - "typia": "^6.1.0", + "typia": "^6.3.1", "uuid": "^9.0.0" }, "keywords": [ diff --git a/packages/fake-toss-payments-server/src/api/functional/internal/index.ts b/packages/fake-toss-payments-server/src/api/functional/internal/index.ts index 4e05ba2..b50f6b0 100644 --- a/packages/fake-toss-payments-server/src/api/functional/internal/index.ts +++ b/packages/fake-toss-payments-server/src/api/functional/internal/index.ts @@ -14,12 +14,12 @@ import type { ITossPaymentWebhook } from "../../structures/ITossPaymentWebhook"; * 웹훅 이벤트 더미 리스너. * * `internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써, - * `fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을 + * `fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을 * 설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅 * 이벤트는 이 곳으로 전달되어 무의미하게 사라진다. * * 따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리 - * 검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅 + * 검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅 * 이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자. * * @param input 웹훅 이벤트 정보 diff --git a/packages/fake-toss-payments-server/src/api/functional/v1/billing/index.ts b/packages/fake-toss-payments-server/src/api/functional/v1/billing/index.ts index c9f98e9..d337cbe 100644 --- a/packages/fake-toss-payments-server/src/api/functional/v1/billing/index.ts +++ b/packages/fake-toss-payments-server/src/api/functional/v1/billing/index.ts @@ -25,7 +25,7 @@ export * as authorizations from "./authorizations"; * 대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다. * * 더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라, - * 이를 통하여 이루어지는 결제는 일절 {@link payments.approve } 가 필요 없다. 다만 + * 이를 통하여 이루어지는 결제는 일절 {@link payments.approve} 가 필요 없다. 다만 * `billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를 * 호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다 * diff --git a/packages/fake-toss-payments-server/src/api/functional/v1/payments/index.ts b/packages/fake-toss-payments-server/src/api/functional/v1/payments/index.ts index 348669a..ee0f93a 100644 --- a/packages/fake-toss-payments-server/src/api/functional/v1/payments/index.ts +++ b/packages/fake-toss-payments-server/src/api/functional/v1/payments/index.ts @@ -22,7 +22,7 @@ import type { ITossPaymentCancel } from "../../../structures/ITossPaymentCancel" * * 참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스 * 페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드 - * 서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve } 를 + * 서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve} 를 * 호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다. * * @param paymentKey 결제 정보의 {@link ITossPayment.paymentKey} @@ -73,13 +73,13 @@ export namespace at { * * 그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠 * 서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을 - * 직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve } 가 + * 직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve} 가 * 필요한 때 대비, 훨씬 더 세심한 주의가 요구된다. * * 더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의 - * 카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.ICreate.__approved } 값을 + * 카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.ICreate.__approved} 값을 * `false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스 - * 페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve } 가 필요한 + * 페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve} 가 필요한 * 상황을 시뮬레이션 할 수 있다. * * @param input 카드 결제 입력 정보 @@ -141,8 +141,8 @@ export namespace key_in { * 함수이다. * * 만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면, - * 결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.ICreate.__approved } 내지 - * {@link ITossVirtualAccountPayment.ICreate.__approved } 를 `false` 로 함으로써, 별도 + * 결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.ICreate.__approved} 내지 + * {@link ITossVirtualAccountPayment.ICreate.__approved} 를 `false` 로 함으로써, 별도 * 승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다. * * @param paymentKey 대상 결제의 {@link ITossPayment.paymentKey} @@ -203,7 +203,7 @@ export namespace approve { * * `payments.cancel` 은 결제를 취소하는 API 이다. * - * 결제 취소 입력 정보 {@link ITossPaymentCancel.ICreate } 에는 취소 사유를 비롯하여, + * 결제 취소 입력 정보 {@link ITossPaymentCancel.ICreate} 에는 취소 사유를 비롯하여, * 고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다. * * @param paymentKey 결제 정보의 {@link ITossPayment.paymentKey} diff --git a/packages/fake-toss-payments-server/src/api/functional/v1/virtual_accounts/index.ts b/packages/fake-toss-payments-server/src/api/functional/v1/virtual_accounts/index.ts index f2e22b0..3c38b68 100644 --- a/packages/fake-toss-payments-server/src/api/functional/v1/virtual_accounts/index.ts +++ b/packages/fake-toss-payments-server/src/api/functional/v1/virtual_accounts/index.ts @@ -14,7 +14,7 @@ import type { ITossVirtualAccountPayment } from "../../../structures/ITossVirtua * * `virtual_accounts.create` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는 * API 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을 - * 입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status } 값은 + * 입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status} 값은 * `WAITING_FOR_DEPOSIT` 이 된다. * * 참고로 `virtual_accounts.create` 는 클라이언트 어플리케이션이 토스 페이먼츠가 @@ -25,7 +25,7 @@ import type { ITossVirtualAccountPayment } from "../../../structures/ITossVirtua * 그리고 `virtual_accounts.create` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스 * 페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동 * 대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면, - * {@link internal.virtual_accounts.deposit } 를 호출하여, 고객이 가상 계좌에 입금하는 + * {@link internal.virtual_accounts.deposit} 를 호출하여, 고객이 가상 계좌에 입금하는 * 상황을 시뮬레이션 할 수 있다. * * @param input 가상 결제 신청 정보. diff --git a/packages/fake-toss-payments-server/src/providers/FakeTossWebhookProvider.ts b/packages/fake-toss-payments-server/src/providers/FakeTossWebhookProvider.ts index ba11056..45125a9 100644 --- a/packages/fake-toss-payments-server/src/providers/FakeTossWebhookProvider.ts +++ b/packages/fake-toss-payments-server/src/providers/FakeTossWebhookProvider.ts @@ -2,9 +2,6 @@ import { ITossPaymentWebhook } from "toss-payments-server-api/lib/structures/ITo import { FakeTossConfiguration } from "../FakeTossConfiguration"; -// POLYFILL FOR NODE -(global as any).fetch ??= require("node-fetch"); - export namespace FakeTossWebhookProvider { export async function webhook(input: ITossPaymentWebhook): Promise { await fetch(FakeTossConfiguration.WEBHOOK_URL, { diff --git a/packages/iamport-server-api/package.json b/packages/iamport-server-api/package.json index c8ed256..d35d17f 100644 --- a/packages/iamport-server-api/package.json +++ b/packages/iamport-server-api/package.json @@ -1,6 +1,6 @@ { "name": "iamport-server-api", - "version": "8.0.1", + "version": "8.0.2", "description": "API for Iamport Server", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -30,11 +30,11 @@ "devDependencies": { "rimraf": "^5.0.1", "ts-node": "^10.9.1", - "ts-patch": "^3.1.1", - "typescript": "^5.3.2" + "ts-patch": "^3.2.1", + "typescript": "^5.5.2" }, "dependencies": { - "@nestia/fetcher": "^3.2.2", - "typia": "^6.1.0" + "@nestia/fetcher": "^3.3.2", + "typia": "^6.3.1" } } \ No newline at end of file diff --git a/packages/iamport-server-api/swagger.json b/packages/iamport-server-api/swagger.json index 3d827fa..49ad618 100644 --- a/packages/iamport-server-api/swagger.json +++ b/packages/iamport-server-api/swagger.json @@ -13,7 +13,7 @@ "info": { "title": "Iamport API", "description": "Built by [fake-iamport-server](https://github.com/samchon/payments/tree/master/packages/fake-iamport-server) with [nestia](https://github.com/samchon/nestia)", - "version": "8.0.1", + "version": "8.0.2", "license": { "name": "MIT" } @@ -46,7 +46,7 @@ } }, "summary": "간편 결제 카드 정보 조회하기", - "description": "간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link create } 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다.", + "description": "간편 결제 카드 정보 조회하기.\n\n`subscribe.customers.at` 은 고객이 {@link create} 나 혹은 아임포트가 제공하는\n간편 결제 카드 등록 창을 이용하여 저장한 간편 결제 카드 정보를 조회하는 API\n함수이다.", "security": [ { "bearer": [] @@ -159,7 +159,7 @@ } }, "summary": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능", - "description": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid } 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription } 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid }\n를 더하기보다, {@link subscribe.customers.create } 와 {@link subscribe.payments.again }\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다.", + "description": "카드로 결제하기, 더불어 간편 결제용으로 등록 가능.\n\n`subscribe.payments.onetime` 은 카드를 매개로 한 결제를 하고자 할 때 호출하는 API\n함수이다. 더하여 입력 값에 {@link IIamportSubscription.IOnetime.customer_uid} 를\n기입하는 경우, 결제에 사용한 카드를 그대로 간편 결제용 카드\n{@link IIamportSubscription} 로 등록해버린다.\n\n다만, 정히 간편 카드 등록과 결제를 동시에 하고 싶다면,\n`subscribe.payments.onetime` 에 {@link IIamportSubscription.IOnetime.customer_uid}\n를 더하기보다, {@link subscribe.customers.create} 와 {@link subscribe.payments.again}\n을 각각 호출하는 것을 권장한다. 그것이 예외적인 상황에 보다 안전하게 대처할 수 있기\n때문이다.\n\n더하여 `subscribe.payments.onetime` 은 클라이언트 어플리케이션이 아임포트가 제공하는\n결제 창을 그대로 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는 일은\n없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여, 테스트\n자동화 프로그램 수준에서 사용될 수는 있다.", "security": [ { "bearer": [] @@ -195,7 +195,7 @@ } }, "summary": "간편 결제에 등록된 카드로 결제하기", - "description": "간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment } 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.", + "description": "간편 결제에 등록된 카드로 결제하기.\n\n`subscribe.payments.again` 은 고객이 간편 결제에 등록한 카드로 결제를 진행하고자 할 때\n호출하는 API 함수이다. 이는 간편하고 불편하고를 떠나, 본질적으로 카드 결제의 일환이기에,\n리턴값은 일반적인 카드 결제 때와 동일한 {@link IIamportCardPayment} 이다.\n\n그리고 `subscribe.payments.again` 은 결제 수단 중 유일하게, 클라이언트 어플리케이션이\n아임포트가 제공하는 결체 창을 사용할 수 없어, 오직 귀하의 백엔드 서버가 아임포트의 API\n함수를 직접 호출해야하는 경우에 해당한다. 따라서 간편 결제에 관하여 아임포트 서버와\n연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에 대한 별도의\n설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.", "security": [ { "bearer": [] @@ -230,7 +230,7 @@ } }, "summary": "본인인증 정보 열람하기", - "description": "본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification } 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified } 값을 직접 검사해봐야만 알\n수 있기 때문이다.", + "description": "본인인증 정보 열람하기.\n\n`certiciations.at` 은 본인인증 정보를 열람할 때 사용하는 API 함수이다.\n\n다만 이 API 함수를 통하여 열람한 본인인증 정보 {@link IIamportCertification} 이\n곧 OTP 인증까지 마쳐 본인인증을 모두 마친 레코드라는 보장은 없다. 본인인증의 완결\n여부는 오직, {@link IIamportCertification.certified} 값을 직접 검사해봐야만 알\n수 있기 때문이다.", "security": [ { "bearer": [] @@ -299,7 +299,7 @@ } }, "summary": "본인인증 요청하기", - "description": "본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm } 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at } 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification } 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified } 값은 `false` 이다.", + "description": "본인인증 요청하기.\n\n`certifications.otp.request` 는 아임포트 서버에 본인인증을 요청하는 API 함수이다.\n이 API 를 호출하면 본인인증 대상자의 핸드폰으로 OTP 문자가 전송되며, 본인인증\n대상자가 {@link certifications.otp.confirm} 을 통하여 이 OTP 번호를 정확히\n입력함으로써, 본인인증이 완결된다.\n\n또한 본인인증 대상자가 자신의 핸드폰으로 전송된 OTP 문자를 입력하기 전에도,\n여전히해당 본인인증 내역은 {@link certifications.at} 함수를 통하여 조회할 수 있다.\n다만, 이 때 리턴되는 {@link IIamportCertification} 에서 인증의 완결 여부를\n지칭하는 {@link IIamportCertification.certified} 값은 `false` 이다.", "security": [ { "bearer": [] @@ -345,7 +345,7 @@ } }, "summary": "본인인증 시 발급된 OTP 코드 입력하기", - "description": "본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request } 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification } 의\n{@link IIamportCertification.certified } 값이 비로소 `true` 로 변경되어,\n비로소 완결된다.", + "description": "본인인증 시 발급된 OTP 코드 입력하기.\n\n`certifications.otp.confirm` 는 {@link certifications.otp.request} 를 통하여\n발급된 본인인증 건에 대하여, 본인인증 대상자의 휴대폰으로 전송된 OTP 번호를\n검증하고, 입력한 OTP 번호가 맞거든 해당 본인인증 건을 승인하여 완료 처리해주는\nAPI 함수이다.\n\n이처럼 본인인증을 완료하거든, 해당 본인인증 건 {@link IIamportCertification} 의\n{@link IIamportCertification.certified} 값이 비로소 `true` 로 변경되어,\n비로소 완결된다.", "security": [ { "bearer": [] @@ -374,7 +374,7 @@ } }, "summary": "웹훅 이벤트 더미 리스너", - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자." + "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 아임포트의 서버에는 존재하지 않는 API 로써,\n`fake-impoart-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을 설정하지\n않으면, `fake-iamport-server` 로부터 발생하는 모든 종류의 웹훅 이벤트는 이 곳으로 전달되어\n무의미하게 사라진다.\n\n따라서 `fake-iamport-server` 를 사용하여 아임포트 서버와의 연동을 미리 검증코자 할 때는,\n반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅 이벤트가 귀하의 백엔드 서버로\n제대로 전달되도록 하자." } }, "/internal/deposit/{imp_uid}": { @@ -625,7 +625,7 @@ } }, "summary": "유저 인증 토큰 발행하기", - "description": "유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at }\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector } 를 활용하도록 하자." + "description": "유저 인증 토큰 발행하기.\n\n아임포트에 가입하여 부여받은 API 및 secret 키를 토대로, 유저 인증 토큰을 발행한다.\n\n단, 아임포트가 발급해주는 유저 인증 토큰에는 유효 시간 {@link IIamportUser.expired_at}\n이 있어, 해당 시간이 지나거든 기 발급 토큰이 만료되어 더 이상 쓸 수 없게 된다. 때문에\n아임포트의 이러한 시간 제한에 구애받지 않고 자유로이 아임포트의 API 를 이용하고 싶다면,\n`iamport-server-api` 에서 제공해주는 {@link IamportConnector} 를 활용하도록 하자." } }, "/vbanks": { @@ -1103,8 +1103,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -1646,7 +1646,7 @@ "__otp": { "type": "string", "title": "(테스트 전용) OTP 코드", - "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm } 함수를 호출하면, 본인인증을 완료할\n수 있다." + "description": "(테스트 전용) OTP 코드.\n\n오직 `fake-iamport-server` 에서만 쓰이는 속성으로써, 본인인증을 시뮬레이션할 때,\n어떠한 OTP 코드가 발급되었는 지를 확인하기 위하여 사용된다. 이를 이용하여\n{@link functional.certifications.otp.confirm} 함수를 호출하면, 본인인증을 완료할\n수 있다." } }, "required": [ @@ -1667,7 +1667,7 @@ "pg_provider", "origin" ], - "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified } 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다." + "description": "본인 인증 내역.\n\n`IIamportCertification` 은 아임포트의 본인인증 정보를 형상화한 자료구조 인터페이스이다.\n\n단, `IIamportCertification` 레코드의 존재가 곧 본인인증의 완결을 뜻하는 것은 아니다.\n{@link IIamportCertification.certified} 값이 `true` 여야만이 비로소, 본인인증\n대상자가 자신의 핸드폰 번호로 전송된 OTP 를 아임포트의 본인인증 팝업창에 정확히 적어,\n본인인증을 완료했음을 의미한다." }, "IIamportCertification.ICreate": { "type": "object", @@ -1797,8 +1797,8 @@ "properties": { "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -1903,8 +1903,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -2191,8 +2191,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -2492,8 +2492,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -2747,8 +2747,8 @@ "properties": { "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -2842,8 +2842,8 @@ "properties": { "imp_uid": { "type": "string", - "title": "귀속 결제의 {@link IIamportPayment.imp_uid }", - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }." + "title": "귀속 결제의 {@link IIamportPayment.imp_uid}", + "description": "귀속 결제의 {@link IIamportPayment.imp_uid}." }, "receipt_uid": { "type": "string", @@ -2916,8 +2916,8 @@ "properties": { "imp_uid": { "type": "string", - "title": "귀속 결제의 {@link IIamportPayment.imp_uid }", - "description": "귀속 결제의 {@link IIamportPayment.imp_uid }." + "title": "귀속 결제의 {@link IIamportPayment.imp_uid}", + "description": "귀속 결제의 {@link IIamportPayment.imp_uid}." }, "identifier": { "type": "string", @@ -3051,7 +3051,7 @@ "expired_at", "access_token" ], - "description": "아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor } 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector } 클래스를 제공한다." + "description": "아임포트 유저 인증 정보.\n\n아임포트는 고객사에게 API 및 secret 키 정보, {@link IIamportUser.IAccessor} 를 발급해준다.\n\n하지만 이를 곧장 아임포트의 유저 인증에 사용할 수는 없고, 해당 API 및 secret 키를 토대로 유저\n인증 토큰을 발급받아야 하는데, 이 유저 인증 토큰에는 하필이면 만로 시간이라는 게 존재한다.\n`IIamportUser` 는 바로 이러한 유저 인증 토큰 및 그것의 만료 시간을 형상화한 자료구조\n인터페이스이다.\n\n더하여 이처럼 만료 시간이 존재하는 아임포트의 유저 인증 토큰의 특성상, 이것의 만료 시간이\n초과되지 않도록 관리하는 것은 매우 힘든 일이다. 이에 `iamport-server-api` 에서는 아임포트\n유저 인증 토큰이 만료될 때마다 자동 갱신해주는, {@link IamportConnector} 클래스를 제공한다." }, "IIamportVBankPayment.ICreate": { "type": "object", @@ -3158,8 +3158,8 @@ "properties": { "imp_uid": { "type": "string", - "title": "대상 결제 기록의 {@link IIamportPayment.imp_uid }", - "description": "대상 결제 기록의 {@link IIamportPayment.imp_uid }." + "title": "대상 결제 기록의 {@link IIamportPayment.imp_uid}", + "description": "대상 결제 기록의 {@link IIamportPayment.imp_uid}." }, "amount": { "type": "number", diff --git a/packages/payment-api/package.json b/packages/payment-api/package.json index 4163a9f..9840876 100644 --- a/packages/payment-api/package.json +++ b/packages/payment-api/package.json @@ -1,6 +1,6 @@ { "name": "@samchon/payment-api", - "version": "8.0.1", + "version": "8.0.2", "description": "API for Payment Backend", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -28,16 +28,16 @@ "README.md" ], "devDependencies": { + "@types/node": "^20.14.9", "rimraf": "^5.0.1", "ts-node": "^10.9.1", - "ts-patch": "^3.1.1", - "typescript": "^5.3.2" + "ts-patch": "^3.2.1", + "typescript": "^5.5.2" }, "dependencies": { - "@nestia/fetcher": "^3.2.2", - "@types/node": "^20.11.5", - "iamport-server-api": "^8.0.1", - "toss-payments-server-api": "^8.0.1", - "typia": "^6.1.0" + "@nestia/fetcher": "^3.3.2", + "iamport-server-api": "^8.0.2", + "toss-payments-server-api": "^8.0.2", + "typia": "^6.3.1" } } \ No newline at end of file diff --git a/packages/payment-api/swagger.json b/packages/payment-api/swagger.json index e52a20d..87f86ae 100644 --- a/packages/payment-api/swagger.json +++ b/packages/payment-api/swagger.json @@ -7,7 +7,7 @@ } ], "info": { - "version": "8.0.1", + "version": "8.0.2", "title": "@samchon/payment-backend", "description": "Payment Backend Server", "license": { @@ -716,7 +716,7 @@ "id", "password" ], - "description": "접근자 정보.\n\n`IPaymentSource.IAccessor` 는 {@link IPaymentHistory 결제 내역} 내지\n{@link IPaymentReservation 간편 결제 수단 정보}를 조회할 때, 그것의 고유 식별자\nID 가 아닌 원천 레코드 식별자 정보 {@link IPaymentSource } 를 통하여 조회할 때\n사용하는 접근자 정보이다.\n\n다만 `payments-server` 의 모든 개별 레코드는 이를 조회할 시 비밀번호가 필요하기에,\n{@link IPaymentSource } 의 속성들에 비밀번호가 하나 더 추가되었을 뿐이다." + "description": "접근자 정보.\n\n`IPaymentSource.IAccessor` 는 {@link IPaymentHistory 결제 내역} 내지\n{@link IPaymentReservation 간편 결제 수단 정보}를 조회할 때, 그것의 고유 식별자\nID 가 아닌 원천 레코드 식별자 정보 {@link IPaymentSource} 를 통하여 조회할 때\n사용하는 접근자 정보이다.\n\n다만 `payments-server` 의 모든 개별 레코드는 이를 조회할 시 비밀번호가 필요하기에,\n{@link IPaymentSource} 의 속성들에 비밀번호가 하나 더 추가되었을 뿐이다." }, "IPaymentHistory": { "oneOf": [ @@ -727,7 +727,7 @@ "$ref": "#/components/schemas/IPaymentHistory.TossType" } ], - "description": "결제 내역.\n\n`IPaymentHistory` 는 결제 내역을 형상화한 자료구조이자 유니언 타입의 인터페이이다.\n서비스 시스템으로부 결제 사건의 귀속 정보 ({@link IPaymentHistory.ICreate.vendor } +\n{@link IPaymentHistory.ICreate.source }) 를 전달받아, 본 Payment 시스템이 PG 사에\n추가 정보를 취득하여 레코드가 완성된다.\n\n그리고 만일 현 결제 건이 가상계좌와 같이 레코드 생성 시점에 지불이 이루어지지 않은\n경우라면, 사후 {@link IPaymentWebhook 웹훅 이벤트}를 통하여 지불 완료 시각을 뜻하는\n{@link paid_at } 가 설정될 수 있다. 그리고 반대로 이미 결제가 완료된 경우라도,\n환불 등의 이유로 인하여 {@link cancelled_at } 이 사후 기재될 수 있다.\n\n참고로 `if condition` 을 통하여 {@link IPaymentHistory.vendor_code } 값을 특정하면,\n파생 타입이 자동으로 다운 캐스팅 된다.\n\n```typescript\nif (history.vendor_code === \"toss.payments\")\n history.data.paymentKey; // history.data be ITossPayment\n```" + "description": "결제 내역.\n\n`IPaymentHistory` 는 결제 내역을 형상화한 자료구조이자 유니언 타입의 인터페이이다.\n서비스 시스템으로부 결제 사건의 귀속 정보 ({@link IPaymentHistory.ICreate.vendor} +\n{@link IPaymentHistory.ICreate.source}) 를 전달받아, 본 Payment 시스템이 PG 사에\n추가 정보를 취득하여 레코드가 완성된다.\n\n그리고 만일 현 결제 건이 가상계좌와 같이 레코드 생성 시점에 지불이 이루어지지 않은\n경우라면, 사후 {@link IPaymentWebhook 웹훅 이벤트}를 통하여 지불 완료 시각을 뜻하는\n{@link paid_at} 가 설정될 수 있다. 그리고 반대로 이미 결제가 완료된 경우라도,\n환불 등의 이유로 인하여 {@link cancelled_at} 이 사후 기재될 수 있다.\n\n참고로 `if condition` 을 통하여 {@link IPaymentHistory.vendor_code} 값을 특정하면,\n파생 타입이 자동으로 다운 캐스팅 된다.\n\n```typescript\nif (history.vendor_code === \"toss.payments\")\n history.data.paymentKey; // history.data be ITossPayment\n```" }, "IPaymentHistory.IamportType": { "type": "object", @@ -741,7 +741,7 @@ "vendor_code": { "const": "iamport", "title": "벤더사 식별자 코드", - "description": "벤더사 식별자 코드.\n\n{@link IPaymentVendor.code }와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. `if condition` 을 통하여\n{@link IPaymentHistory.data }의 타입을 특정할 수 있다." + "description": "벤더사 식별자 코드.\n\n{@link IPaymentVendor.code}와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. `if condition` 을 통하여\n{@link IPaymentHistory.data}의 타입을 특정할 수 있다." }, "vendor": { "$ref": "#/components/schemas/IPaymentVendoriamport", @@ -867,7 +867,7 @@ "uid": { "type": "string", "title": "벤더사로부터 발급받은 식별자 번호", - "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id } 를 동일하게 할당해주어야 한다." + "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id} 를 동일하게 할당해주어야 한다." } }, "required": [ @@ -959,8 +959,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -1297,8 +1297,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -1585,8 +1585,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -1886,8 +1886,8 @@ }, "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", @@ -2176,7 +2176,7 @@ "vendor_code": { "const": "toss.payments", "title": "벤더사 식별자 코드", - "description": "벤더사 식별자 코드.\n\n{@link IPaymentVendor.code }와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. `if condition` 을 통하여\n{@link IPaymentHistory.data }의 타입을 특정할 수 있다." + "description": "벤더사 식별자 코드.\n\n{@link IPaymentVendor.code}와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. `if condition` 을 통하여\n{@link IPaymentHistory.data}의 타입을 특정할 수 있다." }, "vendor": { "$ref": "#/components/schemas/IPaymentVendortoss.payments", @@ -2302,7 +2302,7 @@ "uid": { "type": "string", "title": "벤더사로부터 발급받은 식별자 번호", - "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id } 를 동일하게 할당해주어야 한다." + "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id} 를 동일하게 할당해주어야 한다." } }, "required": [ @@ -2440,7 +2440,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -2844,7 +2844,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -3062,7 +3062,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -3286,7 +3286,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -3509,7 +3509,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -3792,7 +3792,7 @@ "uid": { "type": "string", "title": "벤더사로부터 발급받은 식별자 번호", - "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id } 를 동일하게 할당해주어야 한다." + "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id} 를 동일하게 할당해주어야 한다." } }, "required": [ @@ -3889,7 +3889,7 @@ "$ref": "#/components/schemas/IPaymentReservation.TossType" } ], - "description": "간편 결제 수단 정보.\n\n`IPaymentReservation` 은 간편 결제 수단을 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 {@link IPaymentReservation.vendor_code } 값을\n특정하면, 파생 타입이 자동으로 다운 캐스팅 된다.\n\n```typescript\nif (history.vendor_code === \"toss.payments\")\n history.data.billingKey; // history.data be ITossBilling\n```" + "description": "간편 결제 수단 정보.\n\n`IPaymentReservation` 은 간편 결제 수단을 형상화한 자료구조이자 유니언 타입의\n인터페이스로써, if condition 을 통하여 {@link IPaymentReservation.vendor_code} 값을\n특정하면, 파생 타입이 자동으로 다운 캐스팅 된다.\n\n```typescript\nif (history.vendor_code === \"toss.payments\")\n history.data.billingKey; // history.data be ITossBilling\n```" }, "IPaymentReservation.IamportType": { "type": "object", @@ -3903,7 +3903,7 @@ "vendor_code": { "const": "iamport", "title": "벤더사 코드", - "description": "벤더사 코드.\n\n{@link IPaymentVendor.code }와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. If else condition 을 통하여\n{@link IPaymentReservation.data }의 타입을 특정할 수 있다." + "description": "벤더사 코드.\n\n{@link IPaymentVendor.code}와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. If else condition 을 통하여\n{@link IPaymentReservation.data}의 타입을 특정할 수 있다." }, "vendor": { "$ref": "#/components/schemas/IPaymentVendoriamport", @@ -4056,7 +4056,7 @@ "vendor_code": { "const": "toss.payments", "title": "벤더사 코드", - "description": "벤더사 코드.\n\n{@link IPaymentVendor.code }와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. If else condition 을 통하여\n{@link IPaymentReservation.data }의 타입을 특정할 수 있다." + "description": "벤더사 코드.\n\n{@link IPaymentVendor.code}와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. If else condition 을 통하여\n{@link IPaymentReservation.data}의 타입을 특정할 수 있다." }, "vendor": { "$ref": "#/components/schemas/IPaymentVendortoss.payments", @@ -4106,8 +4106,8 @@ }, "billingKey": { "type": "string", - "title": "{@link ITossBilling } 의 식별자 키", - "description": "{@link ITossBilling } 의 식별자 키." + "title": "{@link ITossBilling} 의 식별자 키", + "description": "{@link ITossBilling} 의 식별자 키." }, "method": { "const": "카드", @@ -4177,7 +4177,7 @@ "title", "password" ], - "description": "간편 결제 수단 등록 정보.\n\n결제사의 팝업 창로부터 전달받은 식별자 정보를 취합하여 전달한다.\n\n참고로 아임포트의 경우 간편 결제로 등록한 카드에 자체 식별자 번호를 부여하지 않는다.\n따라서 귀하의 서비스가 발행한 식별자 ID 가 곧, 해당 간편 결제 수단의 유일무이한\n식별자ㅏ 되니, 이를 {@link IPaymentVendor.uid } 와 {@link IPaymentSource.id } 에\n모두 동일하게 할당해주면 된다." + "description": "간편 결제 수단 등록 정보.\n\n결제사의 팝업 창로부터 전달받은 식별자 정보를 취합하여 전달한다.\n\n참고로 아임포트의 경우 간편 결제로 등록한 카드에 자체 식별자 번호를 부여하지 않는다.\n따라서 귀하의 서비스가 발행한 식별자 ID 가 곧, 해당 간편 결제 수단의 유일무이한\n식별자ㅏ 되니, 이를 {@link IPaymentVendor.uid} 와 {@link IPaymentSource.id} 에\n모두 동일하게 할당해주면 된다." }, "IPaymentVendorIPaymentVendor.Code": { "type": "object", @@ -4202,7 +4202,7 @@ "uid": { "type": "string", "title": "벤더사로부터 발급받은 식별자 번호", - "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id } 를 동일하게 할당해주어야 한다." + "description": "벤더사로부터 발급받은 식별자 번호.\n\n결제 PG 사들이 제공하는 팝업창을 이용하여 결제를 진행하거나 혹은 간편 결제 수단을\n등록하거든, 결제 PG 사들은 해당 건에 대하여 별도의 식별자 번호를 발급한다.\n`IPaymentVendor.uid` 는 이처럼 결제 PG 사들이 발급해 준 식별자 번호를 기재하는\n속성이다.\n\n단 예외가 하나 있어, 아임포트는 간편 결제 카드 등록 건에 대하여 별도의 식별자 번호를\n부여하지 않고, 귀하의 서비스에서 발급해 준 ID 를 그대로 사용한다. 때문에 아임포트를\n통한 간편 결제 카드 등록의 건만 예외적으로, `IPaymentVendor.uid` 에\n{@link IPaymentSource.id} 를 동일하게 할당해주어야 한다." } }, "required": [ @@ -4217,8 +4217,8 @@ "properties": { "imp_uid": { "type": "string", - "title": "결제 정보 {@link IIamportPayment } 의 식별자 키", - "description": "결제 정보 {@link IIamportPayment } 의 식별자 키." + "title": "결제 정보 {@link IIamportPayment} 의 식별자 키", + "description": "결제 정보 {@link IIamportPayment} 의 식별자 키." }, "merchant_uid": { "type": "string", diff --git a/packages/payment-backend/package.json b/packages/payment-backend/package.json index 602469a..acd72c3 100644 --- a/packages/payment-backend/package.json +++ b/packages/payment-backend/package.json @@ -1,6 +1,6 @@ { "name": "@samchon/payment-backend", - "version": "8.0.1", + "version": "8.0.2", "description": "Payment Backend Server", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -37,8 +37,8 @@ }, "homepage": "https://github.com/samchon/payments", "devDependencies": { - "@nestia/fetcher": "^3.2.2", - "@nestia/sdk": "^3.2.2", + "@nestia/fetcher": "^3.3.2", + "@nestia/sdk": "^3.3.2", "@types/atob": "^2.1.2", "@types/bcryptjs": "^2.4.4", "@types/btoa": "^1.2.3", @@ -53,23 +53,23 @@ "cli": "^1.0.1", "copy-webpack-plugin": "^11.0.0", "copyfiles": "^2.4.1", - "iamport-server-api": "^8.0.1", + "iamport-server-api": "^8.0.2", "nestia": "^5.0.3", "pm2": "^4.5.6", "rimraf": "^3.0.2", "sloc": "^0.2.1", - "toss-payments-server-api": "^8.0.1", + "toss-payments-server-api": "^8.0.2", "ts-loader": "^9.5.0", "ts-node": "^10.9.1", - "ts-patch": "^3.1.1", - "typescript": "^5.3.2", + "ts-patch": "^3.2.1", + "typescript": "^5.5.2", "typescript-transform-paths": "^3.4.6", "webpack": "^5.89.0", "webpack-cli": "^5.1.4", "write-file-webpack-plugin": "^4.5.1" }, "dependencies": { - "@nestia/core": "^3.2.2", + "@nestia/core": "^3.3.2", "@nestia/e2e": "^0.6.0", "@nestjs/common": "^10.2.8", "@nestjs/core": "^10.2.8", @@ -81,18 +81,17 @@ "commander": "10.0.0", "dotenv": "^16.3.1", "dotenv-expand": "^10.0.0", - "fake-iamport-server": "^8.0.1", - "fake-toss-payments-server": "^8.0.1", + "fake-iamport-server": "^8.0.2", + "fake-toss-payments-server": "^8.0.2", "fastify": "^4.24.3", "git-last-commit": "^1.0.0", "inquirer": "^8.2.5", - "node-fetch": "^2.7.0", "prisma": "^5.9.1", "prisma-markdown": "^1.0.8", "serialize-error": "^4.1.0", "source-map-support": "^0.5.19", "tstl": "^3.0.0", - "typia": "^6.1.0", + "typia": "^6.3.1", "uuid": "^9.0.1" }, "files": [ diff --git a/packages/payment-backend/src/providers/payments/PaymentHistoryProvider.ts b/packages/payment-backend/src/providers/payments/PaymentHistoryProvider.ts index a345e89..c48cad8 100644 --- a/packages/payment-backend/src/providers/payments/PaymentHistoryProvider.ts +++ b/packages/payment-backend/src/providers/payments/PaymentHistoryProvider.ts @@ -16,8 +16,6 @@ import { TossPaymentService } from "../../services/toss/TossPaymentService"; import { BcryptUtil } from "../../utils/BcryptUtil"; import { PaymentCancelHistoryProvider } from "./PaymentCancelHistoryProvider"; -(global as any).fetch ??= require("node-fetch"); - export namespace PaymentHistoryProvider { export namespace json { export const transform = ( diff --git a/packages/payment-backend/src/providers/payments/PaymentWebhookProvider.ts b/packages/payment-backend/src/providers/payments/PaymentWebhookProvider.ts index 4ed9dbf..b554b83 100644 --- a/packages/payment-backend/src/providers/payments/PaymentWebhookProvider.ts +++ b/packages/payment-backend/src/providers/payments/PaymentWebhookProvider.ts @@ -10,8 +10,6 @@ import { PaymentConfiguration } from "../../PaymentConfiguration"; import { PaymentGlobal } from "../../PaymentGlobal"; import { PaymentHistoryProvider } from "./PaymentHistoryProvider"; -(global as any).fetch ??= require("node-fetch"); - export namespace PaymentWebhookProvider { export const process = (vendor: "iamport" | "toss.payments") => diff --git a/packages/payment-backend/tsconfig.json b/packages/payment-backend/tsconfig.json index 2688c54..ed59bc3 100644 --- a/packages/payment-backend/tsconfig.json +++ b/packages/payment-backend/tsconfig.json @@ -5,7 +5,10 @@ // "incremental": true, /* Enable incremental compilation */ "target": "ES2016", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": [], /* Specify library files to be included in the compilation. */ + "lib": [ + "DOM", + "ES2015" + ], /* Specify library files to be included in the compilation. */ // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ diff --git a/packages/toss-payments-server-api/package.json b/packages/toss-payments-server-api/package.json index f6135a8..52828b7 100644 --- a/packages/toss-payments-server-api/package.json +++ b/packages/toss-payments-server-api/package.json @@ -1,6 +1,6 @@ { "name": "toss-payments-server-api", - "version": "8.0.1", + "version": "8.0.2", "description": "API for Toss Payments Server", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -30,11 +30,11 @@ "devDependencies": { "rimraf": "^5.0.1", "ts-node": "^10.9.1", - "ts-patch": "^3.1.1", - "typescript": "^5.3.2" + "ts-patch": "^3.2.1", + "typescript": "^5.5.2" }, "dependencies": { - "@nestia/fetcher": "^3.2.2", - "typia": "^6.1.0" + "@nestia/fetcher": "^3.3.2", + "typia": "^6.3.1" } } \ No newline at end of file diff --git a/packages/toss-payments-server-api/swagger.json b/packages/toss-payments-server-api/swagger.json index b4ab720..49cc357 100644 --- a/packages/toss-payments-server-api/swagger.json +++ b/packages/toss-payments-server-api/swagger.json @@ -13,7 +13,7 @@ "info": { "title": "Toss Payments API", "description": "Built by [fake-toss-payments-server](https://github.com/samchon/payments/tree/master/packages/toss-payments-server-api) with [nestia](https://github.com/samchon/nestia)", - "version": "8.0.1", + "version": "8.0.2", "license": { "name": "MIT" } @@ -139,7 +139,7 @@ } }, "summary": "간편 결제에 등록한 수단으로 결제하기", - "description": "간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve } 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다", + "description": "간편 결제에 등록한 수단으로 결제하기.\n\n`billing.pay` 는 간편 결제에 등록한 수단으로 결제를 진행하고자 할 때 호출하는 API\n함수이다.\n\n그리고 `billing.pay` 는 결제 수단 중 유일하게, 클라이언트 어플리케이션이 토스\n페이먼츠가 제공하는 결제 창을 사용할 수 없어, 귀하의 백엔드 서버가 토스 페이먼츠의\nAPI 함수를 직접 호출해야 하는 경우에 해당한다. 따라서 간편 결제에 관련하여 토스\n페이먼츠와 연동하는 백엔드 서버 및 프론트 어플리케이션을 개발할 때, 반드시 이 상황에\n대한 별도의 설계 및 개발이 필요하니, 이 점을 염두에 두기 바란다.\n\n더하여 `billing.pay` 는 철저히 귀사 백엔드 서버의 판단 아래 호출되는 API 함수인지라,\n이를 통하여 이루어지는 결제는 일절 {@link payments.approve} 가 필요 없다. 다만\n`billing.pay` 는 이처럼 부차적인 승인 과정 필요없이 그 즉시로 결제가 완성되니, 이를\n호출하는 상황에 대하여 세심히 주의를 기울일 필요가 있다", "security": [ { "basic": [] @@ -250,7 +250,7 @@ } }, "summary": "웹훅 이벤트 더미 리스너", - "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL } 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL } 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자." + "description": "웹훅 이벤트 더미 리스너.\n\n`internal.webhook` 은 실제 토스 페이먼츠의 결제 서버에는 존재하지 않는 API 로써,\n`fake-toss-payments-server` 의 {@link Configuration.WEBHOOK_URL} 에 아무런 URL 을\n설정하지 않으면, `fake-toss-payments-server` 로부터 발생하는 모든 종류의 웹훅\n이벤트는 이 곳으로 전달되어 무의미하게 사라진다.\n\n따라서 `fake-toss-payments-server` 를 사용하여 토스 페이먼츠 서버와의 연동을 미리\n검증코자 할 때는, 반드시 {@link Configuration.WEBHOOK_URL} 를 설정하여 웹훅\n이벤트가 귀하의 백엔드 서버로 제대로 전달되도록 하자." } }, "/internal/{paymentKey}/deposit": { @@ -315,7 +315,7 @@ } }, "summary": "결제 정보 조회하기", - "description": "결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve } 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다." + "description": "결제 정보 조회하기.\n\n`payments.at` 은 결제 정보를 조회하는 함수이다.\n\n주로 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로 제공하는 결제 창을 사용하는\n경우, 그래서 프론트 어플리케이션이 귀하의 백엔드 서버에 `paymentKey` 등 극히 일부의\n식별자 정보만을 전달해주어, 상세 결제 정보가 필요할 때 사용한다.\n\n참고로 토스 페이먼츠는 다른 결제 PG 사들과 다르게, 클라이언트 어플리케이션에서 토스\n페이먼츠의 결제 창을 이용하여 진행한 결제가 바로 확정되는 것은 아니다. 귀사의 백엔드\n서버가 현재의 `payments.at` 을 통하여 해당 결제 정보를 확인하고, {@link approve} 를\n호출하여 직접 승인하기 전까지, 해당 결제는 확정되지 않으니, 이 점에 유의하기 바란다." }, "post": { "tags": [], @@ -354,7 +354,7 @@ } }, "summary": "결제 승인하기", - "description": "결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.ICreate.__approved } 내지\n{@link ITossVirtualAccountPayment.ICreate.__approved } 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다.", + "description": "결제 승인하기.\n\n토스 페이먼츠는 귀사의 백엔드에서 일어난 결제가 아닌 프론트 어플리케이션의 결제 창에서\n이루어진 결제의 경우, 해당 서비스으 백엔드 서버로부터 결제를 승인받기 전까지, 이를\n확정하지 않는다. `payments.approve` 는 바로 이러한 상황에서, 해당 결제를 승인해주는\n함수이다.\n\n만일 귀하가 `fake-toss-payments-server` 를 이용하여 결제를 시뮬레이션하는 경우라면,\n결제 관련 API 를 호출함에 있어 {@link ITossCardPayment.ICreate.__approved} 내지\n{@link ITossVirtualAccountPayment.ICreate.__approved} 를 `false` 로 함으로써, 별도\n승인이 필요한 이러한 상황을 시뮬레이션 할 수 있다.", "security": [ { "basic": [] @@ -390,7 +390,7 @@ } }, "summary": "카드로 결제하기", - "description": "카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve } 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.ICreate.__approved } 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve } 가 필요한\n상황을 시뮬레이션 할 수 있다.", + "description": "카드로 결제하기.\n\n`payments.key_in` 은 카드를 이용한 결제를 할 때 호출되는 API 함수이다.\n\n참고로 `payments.key_in` 는 클라이언트 어플리케이션이 토스 페이먼츠가 자체적으로\n제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서 호출하는\n일은 없을 것이다. 다만, 고객이 카드를 통하여 결제하는 상황을 시뮬레이션하기 위하여,\n테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 귀하의 백엔드 서버가 `payments.key-in` 을 직접 호출하는 경우, 토스 페이먼츠\n서버는 이를 완전히 승인된 결제로 보고 바로 확정한다. 때문에 `payments.key-in` 을\n직접 호출하는 경우, 토스 페이먼츠의 결제 창을 이용하여 별도의 {@link approve} 가\n필요한 때 대비, 훨씬 더 세심한 주의가 요구된다.\n\n더하여 만약 귀하의 백엔드 서버가 `fake-toss-payments-server` 를 이용하여 고객의\n카드 결제를 시뮬레이션하는 경우, {@link ITossCardPayment.ICreate.__approved} 값을\n`false` 로 하여 카드 결제의 확정을 고의로 회피할 수 있다. 이를 통하여 토스\n페이먼츠의 결제 창을 이용한 카드 결제의 경우, 별도의 {@link approve} 가 필요한\n상황을 시뮬레이션 할 수 있다.", "security": [ { "basic": [] @@ -436,7 +436,7 @@ } }, "summary": "결제 취소하기", - "description": "결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.ICreate } 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다.", + "description": "결제 취소하기.\n\n`payments.cancel` 은 결제를 취소하는 API 이다.\n\n결제 취소 입력 정보 {@link ITossPaymentCancel.ICreate} 에는 취소 사유를 비롯하여,\n고객에게 환불해 줄 금액과 부가세 및 필요시 환불 계좌 정보 등을 입력하게 되어있다.", "security": [ { "basic": [] @@ -472,7 +472,7 @@ } }, "summary": "가상 계좌로 결제 신청하기", - "description": "가상 계좌로 결제 신청하기.\n\n`virtual_accounts.create` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status } 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.create` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.create` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit } 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다.", + "description": "가상 계좌로 결제 신청하기.\n\n`virtual_accounts.create` 는 고객이 결제 수단을 가상 계좌로 선택하는 경우에 호출되는\nAPI 함수이다. 물론 고객이 이처럼 가상 계좌를 선택한 경우, 고객이 지정된 계좌에 돈을\n입금하기 전까지는 결제가 마무리된 것이 아니기에, {@link ITossPayment.status} 값은\n`WAITING_FOR_DEPOSIT` 이 된다.\n\n참고로 `virtual_accounts.create` 는 클라이언트 어플리케이션이 토스 페이먼츠가\n자체적으로 제공하는 결제 창을 사용하는 경우, 귀하의 백엔드 서버가 이를 실 서비스에서\n호출하는 일은 없을 것이다. 다만, 고객이 가상 계좌로 결제를 진행하는 상황을\n시뮬레이션하기 위하여, 테스트 자동화 프로그램 수준에서 사용될 수는 있다.\n\n그리고 `virtual_accounts.create` 이후에 고객이 지정된 계좌에 금액을 입금하거든, 토스\n페이먼츠 서버로부터 웹훅 이벤트가 발생되어 귀하의 백엔드 서버로 전송된다. 만약 연동\n대상 토스 페이먼츠 서버가 실제가 아닌 `fake-toss-payments-server` 라면,\n{@link internal.virtual_accounts.deposit} 를 호출하여, 고객이 가상 계좌에 입금하는\n상황을 시뮬레이션 할 수 있다.", "security": [ { "basic": [] @@ -579,8 +579,8 @@ }, "billingKey": { "type": "string", - "title": "{@link ITossBilling } 의 식별자 키", - "description": "{@link ITossBilling } 의 식별자 키." + "title": "{@link ITossBilling} 의 식별자 키", + "description": "{@link ITossBilling} 의 식별자 키." }, "method": { "const": "카드", @@ -645,8 +645,8 @@ }, "billingKey": { "type": "string", - "title": "{@link IPaymentStore } 의 식별자 키", - "description": "{@link IPaymentStore } 의 식별자 키." + "title": "{@link IPaymentStore} 의 식별자 키", + "description": "{@link IPaymentStore} 의 식별자 키." }, "orderId": { "type": "string", @@ -801,7 +801,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -1205,7 +1205,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -1423,7 +1423,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -1647,7 +1647,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -1870,7 +1870,7 @@ "transactionKey": { "type": "string", "title": "거래 건에 대한 고유한 키 값", - "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey } 와 달리, 이를 사용할 일은 없더라." + "description": "거래 건에 대한 고유한 키 값.\n\n{@link paymentKey} 와 달리, 이를 사용할 일은 없더라." }, "orderName": { "type": "string", @@ -2095,8 +2095,8 @@ }, "paymentKey": { "type": "string", - "title": "귀속 결제의 {@link ITossPayment.paymentKey }", - "description": "귀속 결제의 {@link ITossPayment.paymentKey }." + "title": "귀속 결제의 {@link ITossPayment.paymentKey}", + "description": "귀속 결제의 {@link ITossPayment.paymentKey}." }, "orderId": { "type": "string", @@ -2240,8 +2240,8 @@ "properties": { "paymentKey": { "type": "string", - "title": "{@link ITossPayment } 의 식별자 키", - "description": "{@link ITossPayment } 의 식별자 키." + "title": "{@link ITossPayment} 의 식별자 키", + "description": "{@link ITossPayment} 의 식별자 키." }, "orderId": { "type": "string", @@ -2410,8 +2410,8 @@ "properties": { "paymentKey": { "type": "string", - "title": "{@link ITossPayment } 의 식별자 키", - "description": "{@link ITossPayment } 의 식별자 키." + "title": "{@link ITossPayment} 의 식별자 키", + "description": "{@link ITossPayment} 의 식별자 키." }, "cancelReason": { "type": "string",