diff --git a/package.json b/package.json index 181deec..bb9391e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@samchon/payments", - "version": "8.1.1", + "version": "9.0.0", "description": "Collection of Payment system of Samchon", "scripts": { "package:latest": "node deploy latest", diff --git a/packages/fake-iamport-server/package.json b/packages/fake-iamport-server/package.json index 66e56c5..1565d30 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.1.1", + "version": "9.0.0", "description": "Fake iamport server for testing", "main": "lib/index.js", "module": "lib/index.mjs", @@ -38,7 +38,7 @@ }, "homepage": "https://github.com/samchon/fake-iamport-server", "devDependencies": { - "@nestia/sdk": "^3.17.0", + "@nestia/sdk": "^4.0.0", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^11.1.6", "@types/atob": "^2.1.2", @@ -61,9 +61,9 @@ "typescript": "5.5.4" }, "dependencies": { - "@nestia/core": "^3.17.0", + "@nestia/core": "^4.0.0", "@nestia/e2e": "^0.7.0", - "@nestia/fetcher": "^3.17.0", + "@nestia/fetcher": "^4.0.0", "@nestjs/common": "^10.3.10", "@nestjs/core": "^10.3.10", "@nestjs/platform-fastify": "^10.3.10", @@ -73,7 +73,7 @@ "source-map-support": "^0.5.19", "tstl": "^3.0.0", "typescript-transform-paths": "^3.4.6", - "typia": "^6.11.3", + "typia": "^7.0.0", "uuid": "^10.0.0" }, "keywords": [ diff --git a/packages/fake-iamport-server/packages/api/package.json b/packages/fake-iamport-server/packages/api/package.json index 3066429..2c0fdca 100644 --- a/packages/fake-iamport-server/packages/api/package.json +++ b/packages/fake-iamport-server/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "iamport-server-api", - "version": "8.1.1", + "version": "9.0.0", "description": "API for Iamport Server", "main": "lib/index.js", "module": "lib/index.mjs", @@ -22,8 +22,8 @@ "README.md" ], "dependencies": { - "@nestia/fetcher": "^3.17.0", + "@nestia/fetcher": "^4.0.0", "tstl": "^3.0.0", - "typia": "^6.11.3" + "typia": "^7.0.0" } } \ No newline at end of file diff --git a/packages/fake-iamport-server/packages/api/swagger.json b/packages/fake-iamport-server/packages/api/swagger.json index 7118955..bdcd672 100644 --- a/packages/fake-iamport-server/packages/api/swagger.json +++ b/packages/fake-iamport-server/packages/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.1.1", + "version": "9.0.0", "license": { "name": "MIT" } @@ -2815,6 +2815,7 @@ "description": "페이팔의 경우, 이 값을 `true` 로 할 것." } }, + "required": [], "description": "결제 수단이 페이팔인 경우, 페이팔의 구매자 보호정책에 의해 결제 승인 시점에\nPending 상태를 만든 후, 내부 심사등을 통해 최종 결제 완료라고 변경함.\n\n`iamport` 의 기술적 이슈로 해당 상태를 status: failed 로 기록함. 추후\n페이팔에서 최종결제완료로 변경된 경우, `iamport` 에서 `paid` 로 변경 후,\n해당건에 대한 웹훅 발송. `iamport` 를 사용하는 고객사에서는, failed 로 이미\n처리된 결제건에 대한 paid 상태의 웹훅을 받는 문제점이 생김.\n\n이에, `iamport` 에서 제공하는 `/payment/{imp_uid}` 에 query-string 으로\n`extension=true` 옵션을 추가해야 함" }, "IIamportPaymentCancel.ICreate": { diff --git a/packages/fake-iamport-server/src/api/Primitive.ts b/packages/fake-iamport-server/src/api/Primitive.ts index 60d3944..ebdcd76 100644 --- a/packages/fake-iamport-server/src/api/Primitive.ts +++ b/packages/fake-iamport-server/src/api/Primitive.ts @@ -1 +1 @@ -export type { Primitive } from "@nestia/fetcher"; +export type { Primitive } from "typia"; diff --git a/packages/fake-iamport-server/src/api/Resolved.ts b/packages/fake-iamport-server/src/api/Resolved.ts index a4f457e..7cf4920 100644 --- a/packages/fake-iamport-server/src/api/Resolved.ts +++ b/packages/fake-iamport-server/src/api/Resolved.ts @@ -1 +1 @@ -export type { Resolved } from "@nestia/fetcher"; +export type { Resolved } from "typia"; diff --git a/packages/fake-toss-payments-server/package.json b/packages/fake-toss-payments-server/package.json index c5485d5..ca1a767 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.1.1", + "version": "9.0.0", "description": "Fake toss-payments server for testing", "main": "lib/index.js", "module": "lib/index.mjs", @@ -40,7 +40,7 @@ "homepage": "https://github.com/samchon/fake-toss-payments-server", "devDependencies": { "@nestia/e2e": "^0.7.0", - "@nestia/sdk": "^3.17.0", + "@nestia/sdk": "^4.0.0", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^11.1.6", "@types/atob": "^2.1.2", @@ -64,8 +64,8 @@ "typescript-transform-paths": "^3.4.6" }, "dependencies": { - "@nestia/core": "^3.17.0", - "@nestia/fetcher": "^3.17.0", + "@nestia/core": "^4.0.0", + "@nestia/fetcher": "^4.0.0", "@nestjs/common": "^10.3.10", "@nestjs/core": "^10.3.10", "@nestjs/platform-fastify": "^10.3.10", @@ -74,7 +74,7 @@ "serialize-error": "^4.1.0", "source-map-support": "^0.5.19", "tstl": "^3.0.0", - "typia": "^6.11.3", + "typia": "^7.0.0", "uuid": "^10.0.0" }, "keywords": [ diff --git a/packages/fake-toss-payments-server/packages/api/package.json b/packages/fake-toss-payments-server/packages/api/package.json index 6d64128..933be5b 100644 --- a/packages/fake-toss-payments-server/packages/api/package.json +++ b/packages/fake-toss-payments-server/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "toss-payments-server-api", - "version": "8.1.1", + "version": "9.0.0", "description": "API for Toss Payments Server", "main": "lib/index.js", "typings": "lib/index.d.ts", @@ -37,7 +37,7 @@ "typescript": "5.5.4" }, "dependencies": { - "@nestia/fetcher": "^3.17.0", - "typia": "^6.11.3" + "@nestia/fetcher": "^4.0.0", + "typia": "^7.0.0" } } \ No newline at end of file diff --git a/packages/fake-toss-payments-server/packages/api/swagger.json b/packages/fake-toss-payments-server/packages/api/swagger.json index 88cc21e..a387163 100644 --- a/packages/fake-toss-payments-server/packages/api/swagger.json +++ b/packages/fake-toss-payments-server/packages/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.1.1", + "version": "9.0.0", "license": { "name": "MIT" } @@ -2279,6 +2279,7 @@ "description": "취소 금액.\n\n미 입력시 현금 영수증에 기재된 {@link ITossCashReceipt.amount 총액}이 취소됨." } }, + "required": [], "description": "현금 영수증 취소 입력 정보." }, "ITossPaymentWebhook": { diff --git a/packages/fake-toss-payments-server/src/api/Primitive.ts b/packages/fake-toss-payments-server/src/api/Primitive.ts index 60d3944..ebdcd76 100644 --- a/packages/fake-toss-payments-server/src/api/Primitive.ts +++ b/packages/fake-toss-payments-server/src/api/Primitive.ts @@ -1 +1 @@ -export type { Primitive } from "@nestia/fetcher"; +export type { Primitive } from "typia"; diff --git a/packages/fake-toss-payments-server/src/api/Resolved.ts b/packages/fake-toss-payments-server/src/api/Resolved.ts index a4f457e..7cf4920 100644 --- a/packages/fake-toss-payments-server/src/api/Resolved.ts +++ b/packages/fake-toss-payments-server/src/api/Resolved.ts @@ -1 +1 @@ -export type { Resolved } from "@nestia/fetcher"; +export type { Resolved } from "typia"; diff --git a/packages/payment-backend/package.json b/packages/payment-backend/package.json index 75d815e..9d0875b 100644 --- a/packages/payment-backend/package.json +++ b/packages/payment-backend/package.json @@ -1,6 +1,6 @@ { "name": "@samchon/payment-backend", - "version": "8.1.1", + "version": "9.0.0", "description": "Payment Backend Server", "main": "lib/index.js", "module": "lib/index.mjs", @@ -38,8 +38,8 @@ }, "homepage": "https://github.com/samchon/payments", "devDependencies": { - "@nestia/fetcher": "^3.17.0", - "@nestia/sdk": "^3.17.0", + "@nestia/fetcher": "^4.0.0", + "@nestia/sdk": "^4.0.0", "@types/atob": "^2.1.2", "@types/bcryptjs": "^2.4.4", "@types/btoa": "^1.2.3", @@ -55,13 +55,13 @@ "cli": "^1.0.1", "copy-webpack-plugin": "^11.0.0", "copyfiles": "^2.4.1", - "iamport-server-api": "^8.1.1", + "iamport-server-api": "^9.0.0", "nestia": "^5.0.3", "pm2": "^4.5.6", "rimraf": "^3.0.2", "rollup": "^4.18.1", "sloc": "^0.2.1", - "toss-payments-server-api": "^8.1.1", + "toss-payments-server-api": "^9.0.0", "ts-loader": "^9.5.0", "ts-node": "^10.9.1", "ts-patch": "^3.2.1", @@ -72,7 +72,7 @@ "write-file-webpack-plugin": "^4.5.1" }, "dependencies": { - "@nestia/core": "^3.17.0", + "@nestia/core": "^4.0.0", "@nestia/e2e": "^0.7.0", "@nestjs/common": "^10.3.10", "@nestjs/core": "^10.3.10", @@ -86,8 +86,8 @@ "commander": "10.0.0", "dotenv": "^16.3.1", "dotenv-expand": "^10.0.0", - "fake-iamport-server": "^8.1.1", - "fake-toss-payments-server": "^8.1.1", + "fake-iamport-server": "^9.0.0", + "fake-toss-payments-server": "^9.0.0", "git-last-commit": "^1.0.0", "inquirer": "^8.2.5", "prisma": "^5.9.1", @@ -95,7 +95,7 @@ "serialize-error": "^4.1.0", "source-map-support": "^0.5.19", "tstl": "^3.0.0", - "typia": "^6.11.3", + "typia": "^7.0.0", "uuid": "^10.0.0" }, "files": [ diff --git a/packages/payment-backend/packages/api/package.json b/packages/payment-backend/packages/api/package.json index bdad9a8..aa9b853 100644 --- a/packages/payment-backend/packages/api/package.json +++ b/packages/payment-backend/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@samchon/payment-api", - "version": "8.1.1", + "version": "9.0.0", "description": "API for Payment Backend", "main": "lib/index.js", "module": "lib/index.mjs", @@ -39,9 +39,9 @@ "typescript": "5.5.4" }, "dependencies": { - "@nestia/fetcher": "^3.17.0", - "iamport-server-api": "^8.1.1", - "toss-payments-server-api": "^8.1.1", - "typia": "^6.11.3" + "@nestia/fetcher": "^4.0.0", + "iamport-server-api": "^9.0.0", + "toss-payments-server-api": "^9.0.0", + "typia": "^7.0.0" } } \ No newline at end of file diff --git a/packages/payment-backend/packages/api/swagger.json b/packages/payment-backend/packages/api/swagger.json index d92e9de..0e5ba30 100644 --- a/packages/payment-backend/packages/api/swagger.json +++ b/packages/payment-backend/packages/api/swagger.json @@ -7,7 +7,7 @@ } ], "info": { - "version": "8.1.1", + "version": "9.0.0", "title": "@samchon/payment-backend", "description": "Payment Backend Server", "license": { @@ -266,33 +266,6 @@ } } }, - "/payments/internal/webhook": { - "post": { - "tags": [], - "parameters": [], - "requestBody": { - "description": "## Warning\n\nRequest body must be encrypted.\n\nThe request body data would be encrypted as \"AES-128(256) / CBC mode / PKCS#5 Padding / Base64 Encoding\", through the [EncryptedBody](https://github.com/samchon/@nestia/core#encryptedbody) component.\n\nTherefore, just utilize this swagger editor only for referencing. If you need to call the real API, using [SDK](https://github.com/samchon/nestia#software-development-kit) would be much better.", - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/IPaymentWebhookHistory" - } - } - }, - "required": true, - "x-nestia-encrypted": true - }, - "responses": { - "201": { - "description": "## Warning\n\nResponse data have been encrypted.\n\nThe response body data would be encrypted as \"AES-128(256) / CBC mode / PKCS#5 Padding / Base64 Encoding\", through the [EncryptedRoute.Post](https://github.com/samchon/@nestia/core#encryptedroute) component.\n\nTherefore, just utilize this swagger editor only for referencing. If you need to call the real API, using [SDK](https://github.com/samchon/nestia#software-development-kit) would be much better.", - "content": { - "text/plain": {} - }, - "x-nestia-encrypted": true - } - } - } - }, "/payments/reservations/get": { "patch": { "summary": "간편 결제 수단 조회하기", @@ -468,30 +441,6 @@ } } } - }, - "/payments/webhooks/toss": { - "post": { - "tags": [], - "parameters": [], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ITossPaymentWebhook" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": {} - } - } - } - } } }, "components": { @@ -838,6 +787,7 @@ "Recordstringstring": { "type": "object", "properties": {}, + "required": [], "description": "Construct a type with a set of properties K of type T", "additionalProperties": { "type": "string" @@ -4084,204 +4034,6 @@ ], "description": "은행 계좌 정보.\n\n가상 계좌로 입금한 경우, 결제 취소시, 이를 환불받을 계좌가 필요함.\n\n단, 이 정보는 본 결제 시스템에 저장하지 아니함." }, - "IPaymentWebhookHistory": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "source": { - "$ref": "#/components/schemas/IPaymentSource", - "title": "원천 레코드 정보", - "description": "원천 레코드 정보." - }, - "previous": { - "$ref": "#/components/schemas/IPaymentWebhookHistory.IHistory", - "title": "웹훅 이벤트 수신 전 결제 내역 정보", - "description": "웹훅 이벤트 수신 전 결제 내역 정보.\n\nPG 사로부터 웹훅 이벤트 데이터를 수신하기 전, 즉 이전 상태의 결제 내역 정보." - }, - "current": { - "$ref": "#/components/schemas/IPaymentWebhookHistory.IHistory", - "title": "웹훅 이벤트 수신 후 결제 내역 정보", - "description": "웹훅 이벤트 수신 후 결제 내역 정보.\n\nPG 사로부터 웹훅 이벤트 데이터를 수신하여, 새로이 바뀌게 된 결제 내역 정보." - } - }, - "required": [ - "id", - "source", - "previous", - "current" - ], - "description": "웹훅 이벤트 레코드.\n\n`IPaymentHistoryWebhook` 는 PG 벤더사로부터의 이벤트를 기록하는 엔티티이다.\n\n웹훅 이벤트는 고객이 가상계좌를 선택하고 사후에 지불을 완료했다던가, 이미 결제한\n금액을 환불하여 결제가 취소되었다던가 하는 등의 이유로 발생한다. 그리고 웹훅 이벤트\n레코드의 발생은 곧, 원천 결제 레코드에 해당하는 {@link IPaymentHistory.data} 의\n수정을 불러온다.\n\n때문에 `IPaymentHistoryWebhook` 에는 {@link previous} 라 하여, 웹훅 이벤트가\n발생하기 전의 {@link PaymentHistory.data} 를 기록하는 속성이 존재한다. 만일 웹훅\n이벤트가 발생하여 변동된 데이터를 보고 싶다면, 현 웹훅 이벤트가 가장 최신인지 여부를\n따져, {@link IPaymentHistory.data} 를 조회하던가 아니면 그 다음 웹훅 레코드의\n{@link previous} 를 조회하던가 하면 된다." - }, - "IPaymentWebhookHistory.IHistory": { - "type": "object", - "properties": { - "currency": { - "type": "string", - "description": "통화 단위\n\nKRW, USB, JPY 등." - }, - "price": { - "type": "number", - "minimum": 0, - "title": "결제 가격", - "description": "결제 가격." - }, - "refund": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "number", - "minimum": 0 - } - ], - "title": "결제 취소시의 환불 금액", - "description": "결제 취소시의 환불 금액." - }, - "webhook_url": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string", - "format": "uri" - } - ], - "description": "결제 정보가 갱신되었을 때, 이를 수신할 URL" - }, - "paid_at": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string", - "format": "date-time" - } - ], - "title": "결제 완료 일시", - "description": "결제 완료 일시." - }, - "cancelled_at": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string", - "format": "date-time" - } - ], - "title": "결제 취소 일시", - "description": "결제 취소 일시." - }, - "cancels": { - "type": "array", - "items": { - "$ref": "#/components/schemas/IPaymentCancelHistory" - }, - "title": "결제 취소 내역 리스트", - "description": "결제 취소 내역 리스트." - }, - "created_at": { - "type": "string", - "format": "date-time", - "title": "결제 레코드 생성 일시", - "description": "결제 레코드 생성 일시." - }, - "id": { - "type": "string", - "format": "uuid", - "title": "Primary Key", - "description": "Primary Key." - }, - "data": { - "oneOf": [ - { - "$ref": "#/components/schemas/IIamportCardPayment" - }, - { - "$ref": "#/components/schemas/IIamportTransferPayment" - }, - { - "$ref": "#/components/schemas/IIamportVBankPayment" - }, - { - "$ref": "#/components/schemas/IIamportPayment.IBasephonekpaykakaopaypaycolpayssgpaytosspayculturelandsmartculturehappymoneybooknlifepoint" - }, - { - "$ref": "#/components/schemas/ITossCardPayment" - }, - { - "$ref": "#/components/schemas/ITossGiftCertificatePayment" - }, - { - "$ref": "#/components/schemas/ITossMobilePhonePayment" - }, - { - "$ref": "#/components/schemas/ITossTransferPayment" - }, - { - "$ref": "#/components/schemas/ITossVirtualAccountPayment" - } - ], - "title": "결제 상세 데이터, 벤더별로 데이터 양식이 다르니 주의할 것", - "description": "결제 상세 데이터, 벤더별로 데이터 양식이 다르니 주의할 것." - }, - "vendor_code": { - "oneOf": [ - { - "const": "iamport" - }, - { - "const": "toss.payments" - } - ], - "title": "벤더사 식별자 코드", - "description": "벤더사 식별자 코드.\n\n{@link IPaymentVendor.code}와 완전히 동일한 값이되, 단지 union type\nspecialization 을 위해 중복 표기하였을 뿐이다. `if condition` 을 통하여\n{@link IPaymentHistory.data}의 타입을 특정할 수 있다." - }, - "vendor": { - "oneOf": [ - { - "$ref": "#/components/schemas/IPaymentVendoriamport" - }, - { - "$ref": "#/components/schemas/IPaymentVendortoss.payments" - } - ], - "discriminator": { - "propertyName": "code", - "mapping": { - "iamport": "#/components/schemas/IPaymentVendoriamport", - "toss.payments": "#/components/schemas/IPaymentVendortoss.payments" - } - }, - "title": "벤더 정보", - "description": "벤더 정보." - } - }, - "required": [ - "currency", - "price", - "refund", - "webhook_url", - "paid_at", - "cancelled_at", - "cancels", - "created_at", - "id", - "data", - "vendor_code", - "vendor" - ], - "description": "결제 내역 정보.\n\n본래의 결제 내역 {@link IPaymentHistory} 에서 중복되는 원천 레코드 정보\n{@link IPaymentSource} 를 뺌." - }, "IPaymentReservation.TossType": { "type": "object", "properties": { @@ -4641,65 +4393,6 @@ "status" ], "description": "웹훅 데이터." - }, - "ITossPaymentWebhook": { - "type": "object", - "properties": { - "eventType": { - "const": "PAYMENT_STATUS_CHANGED", - "title": "이벤트 타입", - "description": "이벤트 타입." - }, - "data": { - "$ref": "#/components/schemas/ITossPaymentWebhook.IData", - "title": "이벤트 데이터", - "description": "이벤트 데이터." - } - }, - "required": [ - "eventType", - "data" - ], - "description": "웹훅 이벤트 정보." - }, - "ITossPaymentWebhook.IData": { - "type": "object", - "properties": { - "paymentKey": { - "type": "string", - "title": "{@link ITossPayment} 의 식별자 키", - "description": "{@link ITossPayment} 의 식별자 키." - }, - "orderId": { - "type": "string", - "title": "주문 식별자 키", - "description": "주문 식별자 키.\n\n토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키." - }, - "status": { - "oneOf": [ - { - "const": "WAITING_FOR_DEPOSIT" - }, - { - "const": "DONE" - }, - { - "const": "CANCELED" - }, - { - "const": "PARTIAL_CANCELED" - } - ], - "title": "결제 상태", - "description": "결제 상태.\n\n - DONE: 결제 완료\n - CANCELED: 결제가 취소됨\n - PARTIAL_CANCELED: 결제가 부분 취소됨\n - WAITING_FOR_DEPOSIT: 입금 대기 중" - } - }, - "required": [ - "paymentKey", - "orderId", - "status" - ], - "description": "웹훅 이벤트 데이터." } } }, diff --git a/packages/payment-backend/src/api/Primitive.ts b/packages/payment-backend/src/api/Primitive.ts index 60d3944..ebdcd76 100644 --- a/packages/payment-backend/src/api/Primitive.ts +++ b/packages/payment-backend/src/api/Primitive.ts @@ -1 +1 @@ -export type { Primitive } from "@nestia/fetcher"; +export type { Primitive } from "typia"; diff --git a/packages/payment-backend/src/api/Resolved.ts b/packages/payment-backend/src/api/Resolved.ts index a4f457e..7cf4920 100644 --- a/packages/payment-backend/src/api/Resolved.ts +++ b/packages/payment-backend/src/api/Resolved.ts @@ -1 +1 @@ -export type { Resolved } from "@nestia/fetcher"; +export type { Resolved } from "typia";