@tosspayments/tosspayments-sdk 2.7.1 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +9 -11
  2. package/types/index.d.ts +238 -53
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tosspayments/tosspayments-sdk",
3
3
  "description": "TossPayments.js Tosspayments SDK.",
4
- "version": "2.7.1",
4
+ "version": "2.8.1",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
7
7
  "types": "types/index.d.ts",
@@ -19,12 +19,6 @@
19
19
  "url": "git+https://github.com/tosspayments/browser-sdk.git",
20
20
  "directory": "packages/tosspayments-sdk"
21
21
  },
22
- "scripts": {
23
- "build": "rm -rf dist && rollup -c",
24
- "prepack": "yarn build",
25
- "test": "vitest",
26
- "typecheck": "tsc --noEmit"
27
- },
28
22
  "license": "MIT",
29
23
  "devDependencies": {
30
24
  "@babel/core": "^7.11.6",
@@ -33,8 +27,6 @@
33
27
  "@rollup/plugin-babel": "^5.3.0",
34
28
  "@rollup/plugin-commonjs": "^21.0.1",
35
29
  "@rollup/plugin-typescript": "^8.3.0",
36
- "@tosspayments/sdk-loader": "workspace:^",
37
- "@tosspayments/standard-public-interfaces": "2.9.0",
38
30
  "happy-dom": "^14.12.3",
39
31
  "prettier": "^2.0.2",
40
32
  "rollup": "^2.60.0",
@@ -42,7 +34,8 @@
42
34
  "rollup-plugin-dts": "^6.1.1",
43
35
  "tslib": "^1.11.1",
44
36
  "typescript": "5.2.2",
45
- "vitest": "^1.6.0"
37
+ "vitest": "^1.6.0",
38
+ "@tosspayments/sdk-loader": "^2.1.0"
46
39
  },
47
40
  "files": [
48
41
  "dist",
@@ -50,5 +43,10 @@
50
43
  ],
51
44
  "publishConfig": {
52
45
  "access": "public"
46
+ },
47
+ "scripts": {
48
+ "build": "rm -rf dist && rollup -c",
49
+ "test": "vitest",
50
+ "typecheck": "tsc --noEmit"
53
51
  }
54
- }
52
+ }
package/types/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  declare function clearTossPayments(): void;
2
2
 
3
+ // standard-public-interfaces 2.17.4 — 자동 생성 파일입니다. 직접 수정하지 마세요.
4
+
3
5
  type WidgetSelectedPaymentMethod = {
4
6
  /**
5
7
  * 구매자가 결제 UI에서 선택한 결제수단입니다. 예를 들어, 신용・체크카드를 선택하면 `CARD` 코드가 응답됩니다. [ENUM 코드](/codes/enum-codes) 및 [기관 코드](/codes/org-codes)를 참고하세요.
@@ -25,13 +27,13 @@ interface WidgetPaymentMethodWidget {
25
27
  // 카드 안내사항 노출
26
28
  }
27
29
  if (selectedPaymentMethod.code === '문화바우처') {
28
- // 커스텀 결제수단 (결제위젯 Pro 플랜 기능)
30
+ // 커스텀 결제수단 (결제 Pro 플랜 기능)
29
31
  // 문화바우처 안내사항 노출
30
32
  }
31
33
  });
32
34
  * ```
33
35
  *
34
- * @param {'paymentMethodSelect'} eventName 구독할 이벤트입니다. `paymentMethodSelect` 이벤트로 구매자가 선택한 결제수단 코드를 확인하세요. 일반결제는 [결제수단 ENUM 코드](/codes/enum-codes#결제수단-타입)가 응답돼요. 결제위젯 Pro 플랜으로 [커스텀 결제수단](/guides/v2/payment-widget/pro/integration-custom)을 연동했다면 결제위젯 어드민에서 설정한 `key` 값이 응답돼요.
36
+ * @param {'paymentMethodSelect'} eventName 구독할 이벤트입니다. `paymentMethodSelect` 이벤트로 구매자가 선택한 결제수단 코드를 확인하세요. 일반결제는 [결제수단 ENUM 코드](/codes/enum-codes#결제수단-타입)가 응답돼요. 결제 Pro 플랜으로 [커스텀 결제수단](/guides/v2/payment-widget/pro/integration-custom)을 연동했다면 결제 어드민에서 설정한 `key` 값이 응답돼요.
35
37
  * @param {function} callback 이벤트가 일어나면 호출되는 콜백 함수입니다.
36
38
  *
37
39
  * @throws {@link PublicError.Widgets.InvalidEventParameterError} eventName이 유효하지 않은 경우
@@ -76,7 +78,7 @@ interface WidgetAgreementStatus {
76
78
 
77
79
  interface WidgetAgreementWidget {
78
80
  /**
79
- * 약관 UI의 이벤트를 구독합니다. [자세히](#widgetagreementwidgeton)
81
+ * 약관 UI의 이벤트를 구독합니다. [자세히 >](#agreementwidgeton)
80
82
  *
81
83
  * @param {'agreementStatusChange'} eventName 구독할 이벤트입니다. `agreementStatusChange` 이벤트로 구매자가 약관에 동의했는지 확인하세요.
82
84
  * @param {function} callback 이벤트가 일어나면 호출되는 콜백 함수입니다.
@@ -173,6 +175,15 @@ interface WidgetPaymentRequest {
173
175
  * 페이북/ISP 앱에서 상점 앱으로 돌아올 때 사용됩니다. 상점의 앱 스킴을 지정하면 됩니다. 예를 들면 testapp://같은 형태입니다.
174
176
  */
175
177
  appScheme?: string | null;
178
+ /**
179
+ * @ignore
180
+ */
181
+ threeDS?: {
182
+ /**
183
+ * @ignore
184
+ */
185
+ challengeMode?: 'CHALLENGE_REQUIRED' | null;
186
+ } | null;
176
187
  } | null;
177
188
  /**
178
189
  * 구매자가 계좌이체를 선택하면 결제에 적용되는 옵션입니다.
@@ -429,7 +440,7 @@ interface WidgetPaymentRequestWindow extends WidgetPaymentRequest {
429
440
  }
430
441
  interface WidgetPaymentRequestWindowOptions {
431
442
  /**
432
- * 결제위젯 UI의 variantKey 정보입니다. [결제위젯 어드민](https://dashboard.tosspayments.com/payment-widget-service/)에서 확인할 수 있어요.
443
+ * 결제 UI의 variantKey 정보입니다. [결제 어드민](https://dashboard.tosspayments.com/payment-widget-service/)에서 확인할 수 있어요.
433
444
  */
434
445
  variantKey?: {
435
446
  /**
@@ -445,27 +456,18 @@ interface WidgetPaymentRequestWindowOptions {
445
456
 
446
457
  interface WidgetPaymentWindow {
447
458
  /**
448
- * 결제창의 이벤트를 구독합니다.
459
+ * 결제창 이벤트를 구독합니다. [자세히 >](#paymentwindowon)
449
460
  *
450
- * @param {'paymentRequest'} eventName 구독할 이벤트입니다. `paymentRequest` 이벤트로 구매자의 결제 요청을 수신하세요.
461
+ * @param {'paymentRequest' | 'cancel'} eventName 구독할 이벤트입니다.
451
462
  * @param {function} callback 이벤트가 일어나면 호출되는 콜백 함수입니다.
452
463
  *
453
- * @example
454
- * ```javascript
455
- * paymentWindow.on('paymentRequest', ({ paymentMethod }) => {
456
- * // 결제 요청 처리
457
- * });
458
- * ```
459
- *
460
464
  * @throws {@link PublicError.Widgets.InvalidEventParameterError} eventName이 유효하지 않은 경우
461
465
  * @throws {@link PublicError.Widgets.InvalidCallbackParameterError} callback이 유효하지 않은 경우
462
466
  * @throws {@link PublicError.Widgets.UnknownError} 알 수 없는 오류가 발생한 경우
463
467
  */
464
- on: (eventName: 'paymentRequest', callback: (params: {
465
- paymentMethod: WidgetSelectedPaymentMethod;
466
- }) => Promise<void>) => void;
468
+ on: WidgetPaymentWindowOnPaymentRequest & WidgetPaymentWindowOnCancel;
467
469
  /**
468
- * 결제창을 제거합니다.
470
+ * 결제창을 제거합니다. [자세히 >](#paymentwindowdestroy)
469
471
  *
470
472
  * @example
471
473
  * ```javascript
@@ -476,6 +478,36 @@ interface WidgetPaymentWindow {
476
478
  */
477
479
  destroy: () => Promise<void>;
478
480
  }
481
+ /**
482
+ * @docsAlias paymentRequest 이벤트
483
+ *
484
+ * @param {'paymentRequest'} eventName 구독할 이벤트입니다. `paymentRequest` 이벤트로 구매자의 결제 요청을 수신하세요.
485
+ * @param {function} callback 이벤트가 일어나면 호출되는 콜백 함수입니다. `paymentRequest`는 콜백 파라미터로 `paymentMethod` 객체가 전달돼요. 일반 결제수단은 `{ code }`, 브랜드페이는 `{ code: 'BRANDPAY', methodId }` 형태예요. `cancel`은 콜백 파라미터가 없어요.
486
+ *
487
+ * @example
488
+ * ```javascript
489
+ * paymentWindow.on('paymentRequest', ({ paymentMethod }) => {
490
+ * // 결제 요청 처리
491
+ * });
492
+ * ```
493
+ */
494
+ type WidgetPaymentWindowOnPaymentRequest = (eventName: 'paymentRequest', callback: (params: {
495
+ paymentMethod: WidgetSelectedPaymentMethod;
496
+ }) => Promise<void>) => void;
497
+ /**
498
+ * @docsAlias cancel 이벤트
499
+ *
500
+ * @param {'cancel'} eventName 구독할 이벤트입니다. `cancel` 이벤트로 구매자가 결제를 포기했는지 확인하세요. 구매자가 결제창을 닫으면 결제창이 사라진 뒤에 콜백이 호출돼요. `paymentWindow.destroy()`로 결제창을 닫은 경우에는 호출되지 않아요.
501
+ * @param {function} callback 이벤트가 일어나면 호출되는 콜백 함수입니다. `paymentRequest`는 콜백 파라미터로 `paymentMethod` 객체가 전달돼요. 일반 결제수단은 `{ code }`, 브랜드페이는 `{ code: 'BRANDPAY', methodId }` 형태예요. `cancel`은 콜백 파라미터가 없어요.
502
+ *
503
+ * @example
504
+ * ```javascript
505
+ * paymentWindow.on('cancel', async () => {
506
+ * // 구매자가 결제를 포기했을 때 처리
507
+ * });
508
+ * ```
509
+ */
510
+ type WidgetPaymentWindowOnCancel = (eventName: 'cancel', callback: () => Promise<void>) => void;
479
511
 
480
512
  /**
481
513
  * 결제 UI 위젯을 렌더링합니다
@@ -506,7 +538,7 @@ type RenderPaymentMethods = (params: {
506
538
  */
507
539
  selector: string;
508
540
  /**
509
- * 렌더링하고 싶은 결제 UI의 `variantKey`입니다. 2개 이상의 결제 UI를 사용하고 있다면 설정해주세요. `variantKey`는 [상점관리자의 결제위젯 어드민](/guides/v2/payment-widget#2-결제-ui의-variantkey-확인)에서 확인할 수 있어요. 기본 값은 `DEFAULT`입니다.
541
+ * 렌더링하고 싶은 결제 UI의 `variantKey`입니다. 2개 이상의 결제 UI를 사용하고 있다면 설정해주세요. `variantKey`는 [상점관리자의 결제 어드민](/guides/v2/payment-widget#2-결제-ui의-variantkey-확인)에서 확인할 수 있어요. 기본 값은 `DEFAULT`입니다.
510
542
  */
511
543
  variantKey?: string;
512
544
  }) => Promise<WidgetPaymentMethodWidget>;
@@ -539,7 +571,7 @@ type RenderAgreement = (params: {
539
571
  */
540
572
  selector: string;
541
573
  /**
542
- * 렌더링하고 싶은 약관 UI의 `variantKey`입니다. 상점관리자의 결제위젯 어드민에서 확인할 수 있어요.
574
+ * 렌더링하고 싶은 약관 UI의 `variantKey`입니다. 상점관리자의 결제 어드민에서 확인할 수 있어요.
543
575
  */
544
576
  variantKey?: string;
545
577
  }) => Promise<WidgetAgreementWidget>;
@@ -731,9 +763,9 @@ type RequestPaymentWindowWithRedirection = (paymentRequest: WithRedirection<Widg
731
763
 
732
764
  /**
733
765
  * 결제창을 렌더링합니다
734
- * @param {object} params 결제창 렌더링 정보입니다.
766
+ * @param {object} params 결제창 렌더링 정보입니다. 생략할 수 있어요.
735
767
  *
736
- * @returns 반환되는 결제창 객체로 아래 메서드를 호출할 수 있어요.
768
+ * @returns 아래 메서드를 호출할 수 있는 결제창 객체를 Promise로 반환해요.
737
769
  *
738
770
  * @example
739
771
  * ```javascript
@@ -755,7 +787,7 @@ type RequestPaymentWindowWithRedirection = (paymentRequest: WithRedirection<Widg
755
787
  */
756
788
  type RenderPaymentWindow = (params?: {
757
789
  /**
758
- * 결제위젯 UI의 variantKey 정보입니다. [결제위젯 어드민](https://dashboard.tosspayments.com/payment-widget-service/)에서 확인할 수 있어요.
790
+ * 결제 UI의 variantKey 정보입니다. [결제 어드민](https://dashboard.tosspayments.com/payment-widget-service/)에서 확인할 수 있어요.
759
791
  */
760
792
  variantKey?: {
761
793
  /**
@@ -839,6 +871,10 @@ interface BrandpayPaymentRequest {
839
871
  * 결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는 `[` , `]` 를 사용하지 않는 최대 40자의 문자열, 값은 최대 2000자의 문자열입니다.
840
872
  */
841
873
  metadata?: Record<string | symbol | number, unknown> | null;
874
+ /**
875
+ * @ignore
876
+ */
877
+ shippingAddress?: string | null;
842
878
  /**
843
879
  * 구매자가 카드를 선택하면 결제에 적용되는 옵션입니다.
844
880
  */
@@ -861,6 +897,26 @@ interface BrandpayPaymentRequest {
861
897
  * [카드 프로모션 조회 API](https://docs.tosspayments.com/reference/brandpay#%EC%B9%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EB%AA%A8%EC%85%98-%EC%A1%B0%ED%9A%8C)로 적용할 수 있는 할인 코드의 목록을 조회할 수 있습니다.
862
898
  */
863
899
  discountCode?: string | null;
900
+ /**
901
+ * @ignore
902
+ */
903
+ affiliateCards?: Array<{
904
+ issuerCode: string;
905
+ cardProductCode: string;
906
+ }> | null;
907
+ /**
908
+ * @ignore
909
+ */
910
+ orderProductCode?: string | null;
911
+ /**
912
+ * @ignore
913
+ */
914
+ dividedSettlements?: Array<{
915
+ subMid: string;
916
+ amount: number;
917
+ taxFreeAmount: number;
918
+ productInfo: string;
919
+ }> | null;
864
920
  } | null;
865
921
  /**
866
922
  * 구매자가 계좌를 선택하면 결제에 적용되는 옵션입니다.
@@ -879,6 +935,19 @@ interface BrandpayPaymentRequest {
879
935
  * [계좌 프로모션 조회 API](https://docs.tosspayments.com/reference/brandpay#%EA%B3%84%EC%A2%8C-%ED%94%84%EB%A1%9C%EB%AA%A8%EC%85%98-%EC%A1%B0%ED%9A%8C)로 적용할 수 있는 할인 코드의 목록을 조회할 수 있습니다.
880
936
  */
881
937
  discountCode?: string | null;
938
+ /**
939
+ * @ignore
940
+ */
941
+ orderProductCode?: string | null;
942
+ /**
943
+ * @ignore
944
+ */
945
+ dividedSettlements?: Array<{
946
+ subMid: string;
947
+ amount: number;
948
+ taxFreeAmount: number;
949
+ productInfo: string;
950
+ }> | null;
882
951
  } | null;
883
952
  }
884
953
  interface BasicCashReceipt {
@@ -1140,6 +1209,21 @@ interface TossPaymentsBrandpay {
1140
1209
  requestBillingAuth: RequestBillingAuth$1;
1141
1210
  }
1142
1211
 
1212
+ /**
1213
+ * 열려있는 결제창을 닫습니다.
1214
+ *
1215
+ * 진행 중인 `requestPayment()` Promise 가 `PaymentRequestAbortedError` 로 reject 됩니다.
1216
+ *
1217
+ * @throws {@link PublicError.Payment.NoActivePaymentRequestError} 진행 중인 결제 요청이 없는 경우
1218
+ * @throws {@link PublicError.Payment.UnknownError} 알 수 없는 오류가 발생한 경우
1219
+ *
1220
+ * @example
1221
+ * ```javascript
1222
+ * await payment.destroy();
1223
+ * ```
1224
+ */
1225
+ type Destroy = () => Promise<void>;
1226
+
1143
1227
  interface PaymentRequest {
1144
1228
  /**
1145
1229
  * 결제 금액 정보입니다.
@@ -1185,6 +1269,10 @@ interface PaymentRequest {
1185
1269
  * 결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는 `[` , `]` 를 사용하지 않는 최대 40자의 문자열, 값은 최대 2000자의 문자열입니다.
1186
1270
  */
1187
1271
  metadata?: Record<string | symbol | number, unknown> | null;
1272
+ /**
1273
+ * @ignore
1274
+ */
1275
+ orderProductCode?: string | null;
1188
1276
  /**
1189
1277
  * @ignore
1190
1278
  */
@@ -1224,41 +1312,31 @@ interface CardPaymentRequest extends PaymentRequest {
1224
1312
  */
1225
1313
  useEscrow?: boolean | null;
1226
1314
  /**
1227
- * 과세를 제외한 결제 금액(컵 보증금 등)입니다.
1228
- * 과세 제외 금액이 있는 카드 결제는 부분 취소가 안 됩니다.
1315
+ * 과세를 제외한 결제 금액(컵 보증금 등)입니다. 과세 제외 금액이 있는 카드 결제는 부분 취소가 안 됩니다.
1229
1316
  */
1230
1317
  taxExemptionAmount?: number | null;
1231
1318
  /**
1232
- * 결제창을 여는 방법입니다. `DEFAULT`는 카드/간편결제 통합결제창을 열고, `DIRECT`는 카드 또는 간편결제의 자체창을 열어요.
1233
- * 기본 값은 `DEFAULT`입니다.
1319
+ * 결제창을 여는 방법입니다. `DEFAULT`는 카드/간편결제 통합결제창을 열고, `DIRECT`는 카드 또는 간편결제의 자체창을 열어요. 기본 값은 `DEFAULT`입니다.
1234
1320
  */
1235
1321
  flowMode?: 'DIRECT' | 'DEFAULT' | null;
1236
1322
  /**
1237
- * [카드사 코드](/codes/org-codes#카드사-코드)입니다. `flowMode` 값에 따라 아래와 같이 다르게 동작해요.
1238
- * `flowMode`가 `DIRECT`일 때는 입력한 코드의 카드사 앱이 열려요.
1239
- * `flowMode`가 `DEFAULT`일 때는 통합결제창에 입력한 코드의 카드사만 보여요.
1323
+ * [카드사 코드](/codes/org-codes#카드사-코드)입니다. `flowMode` 값에 따라 아래와 같이 다르게 동작해요. `flowMode`가 `DIRECT`일 때는 입력한 코드의 카드사 앱이 열려요. `flowMode`가 `DEFAULT`일 때는 통합결제창에 입력한 코드의 카드사만 보여요.
1240
1324
  */
1241
1325
  cardCompany?: string | null;
1242
1326
  /**
1243
- * [간편결제 코드](/codes/org-codes#간편결제사-코드)입니다. `flowMode` 값에 따라 아래와 같이 다르게 동작해요.
1244
- * `flowMode`가 `DIRECT`일 때는 입력한 코드의 간편결제 앱이 열려요.
1245
- * `flowMode`가 `DEFAULT`일 때는 해당 파라미터와 상관 없이 기본 통합결제창이 열려요.
1327
+ * [간편결제 코드](/codes/org-codes#간편결제사-코드)입니다. `flowMode` 값에 따라 아래와 같이 다르게 동작해요. `flowMode`가 `DIRECT`일 때는 입력한 코드의 간편결제 앱이 열려요. `flowMode`가 `DEFAULT`일 때는 해당 파라미터와 상관 없이 기본 통합결제창이 열려요.
1246
1328
  */
1247
1329
  easyPay?: string | null;
1248
1330
  /**
1249
- * 신용카드 결제에 적용되는 할부 개월 수입니다.
1250
- * 예를 들어, `6`으로 설정하면 할부 개월 수가 6개월로 고정돼요. 자체창에서는 구매자가 할부 개월 수를 볼 수 없으니 사전에 충분히 안내를 해주세요.
1251
- * 0(일시불), 2~12 값으로 설정할 수 있고 `maxCardInstallmentPlan` 파라미터와 함께 사용할 수 없어요. 카드사 별로 할부결제가 가능한 [최소 금액](https://consumer.tosspayments.com/notice/free-installment)을 확인하세요.
1331
+ * 신용카드 결제에 적용되는 할부 개월 수입니다. 예를 들어, `6`으로 설정하면 할부 개월 수가 6개월로 고정돼요. 자체창에서는 구매자가 할부 개월 수를 볼 수 없으니 사전에 충분히 안내를 해주세요. 0(일시불), 2~12 값으로 설정할 수 있고 `maxCardInstallmentPlan` 파라미터와 함께 사용할 수 없어요. 카드사 별로 할부결제가 가능한 [최소 금액](https://consumer.tosspayments.com/notice/free-installment)을 확인하세요.
1252
1332
  */
1253
1333
  cardInstallmentPlan?: number | null;
1254
1334
  /**
1255
- * 신용카드 결제에 적용할 수 있는 최대 할부 개월 수입니다.
1256
- * 예를 들어, `6`으로 설정하면 구매자는 일시불부터 6개월 할부를 선택할 수 있어요. 0(일시불), 2~12 값으로 설정할 수 있고 `cardInstallmentPlan` 파라미터와 함께 사용할 수 없어요. 카드사 별로 할부결제가 가능한 [최소 금액](https://consumer.tosspayments.com/notice/free-installment)을 확인하세요.
1335
+ * 신용카드 결제에 적용할 수 있는 최대 할부 개월 수입니다. 예를 들어, `6`으로 설정하면 구매자는 일시불부터 6개월 할부를 선택할 수 있어요. 0(일시불), 2~12 값으로 설정할 수 있고 `cardInstallmentPlan` 파라미터와 함께 사용할 수 없어요. 카드사 별로 할부결제가 가능한 [최소 금액](https://consumer.tosspayments.com/notice/free-installment)을 확인하세요.
1257
1336
  */
1258
1337
  maxCardInstallmentPlan?: number | null;
1259
1338
  /**
1260
- * 신용카드 결제에 적용할 수 있는 **상점 부담 무이자** 할부 정보입니다.
1261
- * 구매자가 선택한 카드, 할부 개월 수가 배열에 등록한 정보와 같다면 무이자가 할부가 자동으로 적용돼요. 카드사 별로 할부결제가 가능한 [최소 금액](https://consumer.tosspayments.com/notice/free-installment)을 확인하세요.
1339
+ * 신용카드 결제에 적용할 수 있는 **상점 부담 무이자** 할부 정보입니다. 구매자가 선택한 카드, 할부 개월 수가 배열에 등록한 정보와 같다면 무이자 할부가 자동으로 적용돼요. 카드사 별로 할부결제가 가능한 [최소 금액](https://consumer.tosspayments.com/notice/free-installment)을 확인하세요.
1262
1340
  */
1263
1341
  freeInstallmentPlans?: Array<{
1264
1342
  /**
@@ -1285,13 +1363,11 @@ interface CardPaymentRequest extends PaymentRequest {
1285
1363
  */
1286
1364
  discountCode?: string | null;
1287
1365
  /**
1288
- * 시간으로 설정하는 결제 기한입니다. 설정할 수 있는 최대 값은 2160시간(90일)입니다.
1289
- * 기한이 지나고 시도하는 결제는 실패해요. 예를 들어 `24`로 설정하면, 결제 요청 시점으로부터 24시간 동안 결제할 수 있어요.
1366
+ * 시간으로 설정하는 결제 기한입니다. 설정할 수 있는 최대 값은 2160시간(90일)입니다. 기한이 지나고 시도하는 결제는 실패해요. 예를 들어 `24`로 설정하면, 결제 요청 시점으로부터 24시간 동안 결제할 수 있어요.
1290
1367
  */
1291
1368
  validHours?: number | null;
1292
1369
  /**
1293
- * 특정 날짜로 설정하는 결제 기한입니다. `yyyy-MM-dd'T'HH:mm:ss` ISO 8601 형식입니다.
1294
- * 기한이 지나고 시도하는 결제는 실패해요. 예를 들어 `2025-01-01T00:00:00`으로 설정하면, 2024년 12월 31일 23:59까지 결제할 수 있어요.
1370
+ * 특정 날짜로 설정하는 결제 기한입니다. `yyyy-MM-dd'T'HH:mm:ss` ISO 8601 형식입니다. 기한이 지나고 시도하는 결제는 실패해요. 예를 들어 `2025-01-01T00:00:00`으로 설정하면, 2024년 12월 31일 23:59까지 결제할 수 있어요.
1295
1371
  */
1296
1372
  dueDate?: string | null;
1297
1373
  escrowProducts?: Array<{
@@ -1320,6 +1396,23 @@ interface CardPaymentRequest extends PaymentRequest {
1320
1396
  * 해외카드(Visa, MasterCard, JCB, UnionPay 등) 결제 여부입니다. `true`로 설정하면 해외카드 결제가 가능한 [다국어 결제창](/resources/glossary/payment-window#다국어-결제창)이 열립니다.
1321
1397
  */
1322
1398
  useInternationalCardOnly?: boolean | null;
1399
+ /**
1400
+ * 결제창 초기 언어입니다. `KO`(한국어), `EN`(영어), `JA`(일본어), `ZH`(중국어) 중 하나로 설정할 수 있어요. 값을 설정하지 않으면 결제 통화에 따라 자동으로 결정됩니다.
1401
+ */
1402
+ language?: 'KO' | 'EN' | 'JA' | 'ZH' | null;
1403
+ /**
1404
+ * 다국어 결제창에서 예상 결제 금액(USD 환산값) 노출 여부입니다. 기본값은 `true`이고, `false`로 설정하면 예상 결제 금액이 숨겨집니다. `useInternationalCardOnly`가 `true`이고 결제 통화가 `KRW`일 때만 적용됩니다.
1405
+ */
1406
+ showEstimatedAmount?: boolean | null;
1407
+ /**
1408
+ * @ignore
1409
+ */
1410
+ threeDS?: {
1411
+ /**
1412
+ * @ignore
1413
+ */
1414
+ challengeMode?: 'CHALLENGE_REQUIRED' | null;
1415
+ } | null;
1323
1416
  /**
1324
1417
  * 페이북/ISP 앱에서 상점 앱으로 돌아올 때 사용됩니다. 상점의 앱 스킴을 지정하면 됩니다. 예를 들면 testapp://같은 형태입니다.
1325
1418
  */
@@ -1333,6 +1426,26 @@ interface CardPaymentRequest extends PaymentRequest {
1333
1426
  */
1334
1427
  selectableCardTypes?: Array<'PERSONAL' | 'CORPORATE' | 'FOREIGN'> | null;
1335
1428
  } | null;
1429
+ /**
1430
+ * 모바일 결제창 상단 헤더의 노출 여부입니다. `false`로 설정하면 헤더가 표시되지 않아요. 값을 설정하지 않으면 `true`로 동작합니다.
1431
+ */
1432
+ showMobileAppHeader?: boolean | null;
1433
+ /**
1434
+ * @ignore
1435
+ */
1436
+ affiliateCards?: Array<{
1437
+ issuerCode: string;
1438
+ cardProductCode: string;
1439
+ }> | null;
1440
+ /**
1441
+ * @ignore
1442
+ */
1443
+ dividedSettlements?: Array<{
1444
+ subMid: string;
1445
+ amount: number;
1446
+ taxFreeAmount: number;
1447
+ productInfo: string;
1448
+ }> | null;
1336
1449
  } | null;
1337
1450
  }
1338
1451
 
@@ -1402,6 +1515,27 @@ interface VirtualAccountPaymentRequest extends PaymentRequest {
1402
1515
  * 문화비(도서, 공연 티켓, 박물관·미술관 입장권 등) 지출 여부입니다.
1403
1516
  */
1404
1517
  isCulturalExpenses?: boolean | null;
1518
+ /**
1519
+ * 결제창에 구매자 휴대폰 번호 입력란을 노출할지 여부입니다.
1520
+ */
1521
+ showCustomerMobilePhone?: boolean | null;
1522
+ /**
1523
+ * @ignore
1524
+ */
1525
+ refundReceiveAccount?: {
1526
+ /**
1527
+ * @ignore
1528
+ */
1529
+ bankCode: string;
1530
+ /**
1531
+ * @ignore
1532
+ */
1533
+ accountNumber: string;
1534
+ /**
1535
+ * @ignore
1536
+ */
1537
+ holderName: string;
1538
+ } | null;
1405
1539
  } | null;
1406
1540
  }
1407
1541
 
@@ -1476,6 +1610,23 @@ interface TransferPaymentRequest extends PaymentRequest {
1476
1610
  * @ignore
1477
1611
  */
1478
1612
  encryptedCustomerCi?: string | null;
1613
+ /**
1614
+ * @ignore
1615
+ */
1616
+ showSecuritiesAccount?: boolean | null;
1617
+ /**
1618
+ * @ignore
1619
+ */
1620
+ provider?: 'OPENBANKING' | 'BANKPAY' | null;
1621
+ /**
1622
+ * @ignore
1623
+ */
1624
+ dividedSettlements?: Array<{
1625
+ subMid: string;
1626
+ amount: number;
1627
+ taxFreeAmount: number;
1628
+ productInfo: string;
1629
+ }> | null;
1479
1630
  } | null;
1480
1631
  }
1481
1632
 
@@ -1484,6 +1635,15 @@ interface MobilePhonePaymentRequest extends PaymentRequest {
1484
1635
  * 결제수단입니다. `MOBILE_PHONE`으로 설정하면 휴대폰 결제창이 열려요.
1485
1636
  */
1486
1637
  method: 'MOBILE_PHONE';
1638
+ /**
1639
+ * 휴대폰 결제 정보입니다.
1640
+ */
1641
+ mobilePhone?: {
1642
+ /**
1643
+ * 휴대폰 결제창에서 선택할 수 있는 통신사를 제한합니다. `SKT`(SK텔레콤), `KT`(KT), `LGU`(LG유플러스), `HELLO`(LG헬로모바일), `KCT`(티플러스), `SK7`(SK세븐모바일) 값을 배열 형태로 전달할 수 있습니다. 예를 들어 `['KT', 'SKT']`로 설정하면 두 통신사만 선택할 수 있어요. 값을 설정하지 않으면 모든 통신사가 노출됩니다. 전체 목록은 [통신사 코드](https://docs.tosspayments.com/codes/org-codes#통신사-코드)에서 확인하세요.
1644
+ */
1645
+ mobileCarriers?: Array<'KT' | 'LGU' | 'SKT' | 'HELLO' | 'KCT' | 'SK7'> | null;
1646
+ } | null;
1487
1647
  }
1488
1648
 
1489
1649
  interface GiftCertificatePaymentRequest extends PaymentRequest {
@@ -1699,6 +1859,7 @@ type BillingAuthRequest = CardBillingAuthRequest | TransferBillingAuthRequest;
1699
1859
  /**
1700
1860
  *
1701
1861
  * @throws {@link PublicError.Payment.UserCancelError} 사용자가 결제창을 닫은 경우
1862
+ * @throws {@link PublicError.Payment.PaymentRequestAbortedError} `payment.destroy()` 호출로 결제 요청이 중단된 경우
1702
1863
  * @throws {@link PublicError.Payment.InvalidAmountValueError} 결제 금액이 유효하지 않은 경우
1703
1864
  * @throws {@link PublicError.Payment.InvalidAmountCurrencyError} 결제 금액의 통화가 유효하지 않은 경우
1704
1865
  * @throws {@link PublicError.Payment.BelowZeroAmountError} 결제 금액이 0원 미만인 경우
@@ -2073,6 +2234,7 @@ type RequestForeignEasyPayPaymentWithRedirection = (paymentRequest: WithRedirect
2073
2234
  * ```
2074
2235
  *
2075
2236
  * @throws {@link PublicError.Payment.UserCancelError} 사용자가 자동결제 인증창을 닫은 경우
2237
+ * @throws {@link PublicError.Payment.PaymentRequestAbortedError} `payment.destroy()` 호출로 자동결제 인증 요청이 중단된 경우
2076
2238
  * @throws {@link PublicError.Payment.NotSupportedMethodError} 가맹점에서 정의되지 않은 method를 넘겨준 경우
2077
2239
  * @throws {@link PublicError.Payment.IncorrectSuccessUrlFormatError} 가맹점에서 유효하지 않은 successUrl을 넘겨준 경우
2078
2240
  * @throws {@link PublicError.Payment.IncorrectFailUrlFormatError} 가맹점에서 유효하지 않은 failUrl을 넘겨준 경우
@@ -2091,18 +2253,23 @@ interface TossPaymentsPayment {
2091
2253
  * 자동결제(빌링) 카드 등록창을 띄웁니다. [자세히 >](#paymentrequestbillingauth)
2092
2254
  */
2093
2255
  requestBillingAuth: RequestBillingAuth;
2256
+ /**
2257
+ * 현재 열려있는 결제창/인증창을 닫고 launcher 자원을 해제합니다.
2258
+ * 열려있는 창이 없을 때 호출해도 안전합니다.
2259
+ */
2260
+ destroy: Destroy;
2094
2261
  }
2095
2262
  interface TossPaymentsSDK {
2096
2263
  /**
2097
2264
  *
2098
- * 결제위젯을 초기화합니다. [자세히 >](#결제위젯)
2265
+ * 주문서형, 결제창형 결제를 초기화합니다. [자세히 >](/sdk/v2/js/payment-widget#주문서형-결제)
2099
2266
  *
2100
2267
  * @throw {@link PublicError.Widgets.InvalidClientKeyError} clientKey가 올바르지 않은 경우
2101
2268
  * @throw {@link PublicError.Widgets.InvalidCustomerKeyError} customerKey가 올바르지 않은 경우
2102
2269
  * @throw {@link PublicError.Widgets.InsecureKeyUsageError} customerKey에 시크릿키를 사용한 경우
2103
2270
  * @throw {@link PublicError.Widgets.NotSupportedAPIIndividualKeyError} API 개별 연동 키를 clientKey로 사용한 경우
2104
2271
  * @throw {@link PublicError.Widgets.UnknownError} 알 수 없는 오류가 발생한 경우
2105
- * @returns 아래 메서드를 호출할 수 있는 결제위젯 객체를 반환합니다.
2272
+ * @returns 아래 메서드를 호출할 수 있는 결제 객체를 반환합니다.
2106
2273
  * @example
2107
2274
  * ```javascript
2108
2275
  * // 회원 결제
@@ -2115,17 +2282,17 @@ interface TossPaymentsSDK {
2115
2282
  * import { ANONYMOUS } from "@tosspayments/tosspayments-sdk";
2116
2283
  * const widgets = tossPayments.widgets({ customerKey: ANONYMOUS });
2117
2284
  * ```
2118
- * @param {WidgetInitParams} params 결제위젯 초기화 정보입니다.
2285
+ * @param {WidgetInitParams} params 결제 초기화 정보입니다.
2119
2286
  *
2120
2287
  */
2121
2288
  widgets: (params: WidgetInitParams) => TossPaymentsWidgets;
2122
2289
  /**
2123
- * 브랜드페이를 초기화합니다. [자세히 >](#브랜드페이)
2290
+ * 브랜드페이를 초기화합니다. [자세히 >](/sdk/v2/js/brandpay#브랜드페이)
2124
2291
  *
2125
2292
  * @throw {@link PublicError.Brandpay.InvalidClientKeyError} clientKey가 올바르지 않은 경우
2126
2293
  * @throw {@link PublicError.Brandpay.InvalidCustomerKeyError} customerKey가 올바르지 않은 경우
2127
2294
  * @throw {@link PublicError.Brandpay.InsecureKeyUsageError} customerKey에 시크릿키를 사용한 경우
2128
- * @throw {@link PublicError.Brandpay.NotSupportedWidgetKeyError} 결제위젯 연동 키를 clientKey로 사용한 경우
2295
+ * @throw {@link PublicError.Brandpay.NotSupportedWidgetKeyError} 주문서형, 결제창형 연동 키를 clientKey로 사용한 경우
2129
2296
  * @throw {@link PublicError.Brandpay.UnknownError} 알 수 없는 오류가 발생한 경우
2130
2297
  * @example
2131
2298
  * ```javascript
@@ -2140,12 +2307,12 @@ interface TossPaymentsSDK {
2140
2307
  */
2141
2308
  brandpay: (params: BrandpayInitParams) => TossPaymentsBrandpay;
2142
2309
  /**
2143
- * 결제창을 초기화합니다. [자세히 >](#결제창)
2310
+ * 결제창(구버전)을 초기화합니다. [자세히 >](/sdk/v2/js/payment#결제창구버전)
2144
2311
  *
2145
2312
  * @throw {@link PublicError.Payment.InvalidClientKeyError} clientKey가 올바르지 않은 경우
2146
2313
  * @throw {@link PublicError.Payment.InvalidCustomerKeyError} customerKey가 올바르지 않은 경우
2147
2314
  * @throw {@link PublicError.Payment.InsecureKeyUsageError} customerKey에 시크릿키를 사용한 경우
2148
- * @throw {@link PublicError.Payment.NotSupportedWidgetKeyError} 결제위젯 연동 키를 clientKey로 사용한 경우
2315
+ * @throw {@link PublicError.Payment.NotSupportedWidgetKeyError} 주문서형, 결제창형 연동 키를 clientKey로 사용한 경우
2149
2316
  * @throw {@link PublicError.Payment.UnknownError} 알 수 없는 오류가 발생한 경우
2150
2317
  * @example
2151
2318
  * ```javascript
@@ -2161,7 +2328,7 @@ interface TossPaymentsSDK {
2161
2328
  * @example
2162
2329
  * ```javascript
2163
2330
  * // 스크립트 태그 연동방식
2164
- * const tossPayments = TossPayments("<WidgetClientKey />"); // 결제위젯 연동 키
2331
+ * const tossPayments = TossPayments("<WidgetClientKey />"); // 주문서형, 결제창형 연동 키
2165
2332
  * const tossPayments = TossPayments("<ClientKey />"); // API 개별 연동 키
2166
2333
  *
2167
2334
  * // 모듈 임포트 연동방식
@@ -2171,7 +2338,7 @@ interface TossPaymentsSDK {
2171
2338
  *
2172
2339
  * @param {string} clientKey 토스페이먼츠 발급하는 클라이언트 키입니다. 개발자센터의 [API 키 메뉴](https://developers.tosspayments.com/my/api-keys)에서 확인할 수 있어요.
2173
2340
  *
2174
- * 결제위젯을 연동한다면 [결제위젯 연동 키](/reference/using-api/api-keys#결제위젯-연동-키)를 사용하세요. 브랜드페이, 결제창, 자동결제(빌링)를 연동한다면 [API 개별 연동 키](/reference/using-api/api-keys#api-개별-연동-키)를 사용하세요.
2341
+ * 결제를 연동한다면 [주문서형, 결제창형 연동 키](/reference/using-api/api-keys#주문서형-결제창형-연동-키)를 사용하세요. 브랜드페이, 결제창(구버전), 자동결제(빌링)를 연동한다면 [API 개별 연동 키](/reference/using-api/api-keys#api-개별-연동-키)를 사용하세요.
2175
2342
  *
2176
2343
  * @returns
2177
2344
  * 아래 메서드를 호출할 수 있는 토스페이먼츠 객체를 반환합니다.
@@ -2190,6 +2357,15 @@ interface BrandpayInitParams {
2190
2357
  * \* 브랜드페이 메뉴에 두 개 이상의 리다이렉트 URL을 등록한 상점은 각 도메인에 맞는 `redirectUrl` 값을 필수로 추가하세요.
2191
2358
  */
2192
2359
  redirectUrl?: string;
2360
+ /**
2361
+ * @ignore
2362
+ */
2363
+ features?: {
2364
+ cardOCR?: {
2365
+ active: boolean;
2366
+ autoStart?: boolean;
2367
+ };
2368
+ };
2193
2369
  }
2194
2370
  /**
2195
2371
  * @returns 아래 메서드를 호출할 수 있는 토스페이먼츠 객체를 반환합니다.
@@ -2202,7 +2378,7 @@ interface WidgetInitParams {
2202
2378
  */
2203
2379
  customerKey: string;
2204
2380
  /**
2205
- * 결제위젯으로 브랜드페이로 연동할 때 필요한 정보입니다.
2381
+ * 주문서형, 결제창형으로 브랜드페이를 연동할 때 필요한 정보입니다.
2206
2382
  */
2207
2383
  brandpay?: {
2208
2384
  /**
@@ -2211,6 +2387,15 @@ interface WidgetInitParams {
2211
2387
  * \* 브랜드페이 메뉴에 두 개 이상의 리다이렉트 URL을 등록한 상점은 각 도메인에 맞는 `redirectUrl` 값을 필수로 추가하세요.
2212
2388
  */
2213
2389
  redirectUrl?: string;
2390
+ /**
2391
+ * @ignore
2392
+ */
2393
+ features?: {
2394
+ cardOCR?: {
2395
+ active: boolean;
2396
+ autoStart?: boolean;
2397
+ };
2398
+ };
2214
2399
  };
2215
2400
  }
2216
2401
  interface PaymentInitParams {