@tosspayments/tosspayments-sdk 2.4.1 → 2.6.0
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.
- package/package.json +2 -2
- package/types/index.d.ts +162 -10
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.
|
|
4
|
+
"version": "2.6.0",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
7
7
|
"types": "types/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@rollup/plugin-commonjs": "^21.0.1",
|
|
27
27
|
"@rollup/plugin-typescript": "^8.3.0",
|
|
28
28
|
"@tosspayments/sdk-loader": "workspace:packages/sdk-loader",
|
|
29
|
-
"@tosspayments/standard-public-interfaces": "2.
|
|
29
|
+
"@tosspayments/standard-public-interfaces": "2.6.0",
|
|
30
30
|
"happy-dom": "^14.12.3",
|
|
31
31
|
"prettier": "^2.0.2",
|
|
32
32
|
"rollup": "^2.60.0",
|
package/types/index.d.ts
CHANGED
|
@@ -277,7 +277,7 @@ interface WidgetPaymentRequest {
|
|
|
277
277
|
*/
|
|
278
278
|
products?: Array<{
|
|
279
279
|
/**
|
|
280
|
-
* 상품명입니다.
|
|
280
|
+
* 상품명입니다. 최대 길이는 100자입니다.
|
|
281
281
|
*/
|
|
282
282
|
name: string;
|
|
283
283
|
/**
|
|
@@ -421,6 +421,28 @@ type WidgetPaymentResult = {
|
|
|
421
421
|
amount: Amount;
|
|
422
422
|
};
|
|
423
423
|
|
|
424
|
+
interface WidgetPaymentRequestWindow extends WidgetPaymentRequest {
|
|
425
|
+
/**
|
|
426
|
+
* 결제 금액 정보입니다.
|
|
427
|
+
*/
|
|
428
|
+
amount: Amount;
|
|
429
|
+
}
|
|
430
|
+
interface WidgetPaymentRequestWindowOptions {
|
|
431
|
+
/**
|
|
432
|
+
* 결제위젯 UI의 variantKey 정보입니다. [결제위젯 어드민](https://dashboard.tosspayments.com/payment-widget-service/)에서 확인할 수 있어요.
|
|
433
|
+
*/
|
|
434
|
+
variantKey?: {
|
|
435
|
+
/**
|
|
436
|
+
* 결제수단 UI의 variantKey입니다.
|
|
437
|
+
*/
|
|
438
|
+
paymentMethod?: string | null;
|
|
439
|
+
/**
|
|
440
|
+
* 약관 UI의 variantKey입니다.
|
|
441
|
+
*/
|
|
442
|
+
agreement?: string | null;
|
|
443
|
+
} | null;
|
|
444
|
+
}
|
|
445
|
+
|
|
424
446
|
/**
|
|
425
447
|
* 결제 UI 위젯을 렌더링합니다
|
|
426
448
|
* @param {object} params 결제 UI 렌더링 정보입니다.
|
|
@@ -584,6 +606,95 @@ type RequestPaymentWithRedirection$1 = (paymentRequest: WithRedirection<WidgetPa
|
|
|
584
606
|
*/
|
|
585
607
|
type SetAmount = (amount: Amount) => Promise<void>;
|
|
586
608
|
|
|
609
|
+
/**
|
|
610
|
+
* 결제창을 통해 결제를 요청합니다
|
|
611
|
+
* @docsDefaultSignature RequestPaymentWindowWithRedirection
|
|
612
|
+
*
|
|
613
|
+
* @param {WidgetPaymentRequestWindow} paymentRequest - 결제 요청 정보입니다.
|
|
614
|
+
* @param {WidgetPaymentRequestWindowOptions} options - 위젯 결제창 옵션입니다.
|
|
615
|
+
*
|
|
616
|
+
* @returns 결제 결과
|
|
617
|
+
*
|
|
618
|
+
*
|
|
619
|
+
* @throws {@link PublicError.Widgets.UserCancelError} 사용자가 결제를 취소한 경우
|
|
620
|
+
* @throws {@link PublicError.Widgets.InvalidVariantKeyError} variantKey 가 유효하지 않은 경우
|
|
621
|
+
* @throws {@link PublicError.Widgets.ProviderStatusUnhealthyError} 결제 기관의 시스템에 문제가 있을 때
|
|
622
|
+
* @throws {@link PublicError.Widgets.UnsupportedTestPhasePaymentMethodError} 테스트 환경을 지원하지 않는 결제수단을 선택한 경우
|
|
623
|
+
* @throws {@link PublicError.Widgets.IncorrectSuccessUrlFormatError} successUrl이 유효하지 않은 경우
|
|
624
|
+
* @throws {@link PublicError.Widgets.IncorrectFailUrlFormatError} failUrl이 유효하지 않은 경우
|
|
625
|
+
* @throws {@link PublicError.Widgets.PaymentRequestFailError} 결제 요청에 실패한 경우
|
|
626
|
+
* @throws {@link PublicError.Widgets.NotSupportedPromiseError} promise 방식을 지원하지 않는 환경인 경우
|
|
627
|
+
* @throws {@link PublicError.Widgets.InvalidMethodTransactionError} 이미 다른 명령을 수행 중인 경우
|
|
628
|
+
* @throws {@link PublicError.Widgets.InvalidMetadataError} metadata가 올바르지 않은 경우
|
|
629
|
+
* @throws {@link PublicError.Widgets.InvalidParametersError} 파라미터가 올바르지 않은 경우
|
|
630
|
+
* @throws {@link PublicError.Widgets.BelowZeroAmountError} 결제 금액이 0원 미만인 경우
|
|
631
|
+
* @throws {@link PublicError.Widgets.UnknownError} 알 수 없는 오류가 발생한 경우
|
|
632
|
+
*/
|
|
633
|
+
type RequestPaymentWindow = RequestPaymentWindowWithPromise & RequestPaymentWindowWithRedirection;
|
|
634
|
+
/**
|
|
635
|
+
* @docsAlias Promise 방식
|
|
636
|
+
* @returns `WidgetPaymentResult` 객체가 응답됩니다. 객체 필드를 확인하고 [결제 승인 API](/reference#결제-승인)를 호출해야 결제가 최종적으로 완료돼요.
|
|
637
|
+
* @param {WidgetPaymentRequestWindow} paymentRequest 결제 요청 정보입니다.
|
|
638
|
+
* @param {WidgetPaymentRequestWindowOptions} options 위젯 결제창 옵션입니다.
|
|
639
|
+
*
|
|
640
|
+
* @example
|
|
641
|
+
* ```js
|
|
642
|
+
* widgets.requestPaymentWindow(
|
|
643
|
+
* {
|
|
644
|
+
* orderId: generateRandomString(),
|
|
645
|
+
* orderName: "토스 티셔츠 외 2건",
|
|
646
|
+
* customerEmail: "customer123@gmail.com",
|
|
647
|
+
* customerName: "김토스",
|
|
648
|
+
* },
|
|
649
|
+
* {
|
|
650
|
+
* variantKey: {
|
|
651
|
+
* paymentMethod: "CUSTOM-1",
|
|
652
|
+
* agreement: "AGREEMENT",
|
|
653
|
+
* },
|
|
654
|
+
* }
|
|
655
|
+
* );
|
|
656
|
+
* ```
|
|
657
|
+
*
|
|
658
|
+
*/
|
|
659
|
+
type RequestPaymentWindowWithPromise = (paymentRequest: WidgetPaymentRequestWindow, options?: WidgetPaymentRequestWindowOptions) => Promise<WidgetPaymentResult>;
|
|
660
|
+
/**
|
|
661
|
+
* @docsAlias Redirect 방식
|
|
662
|
+
*
|
|
663
|
+
* @returns 결제 요청이 성공하면 파라미터로 설정한 `successUrl`로 이동해요. 쿼리 파라미터의 `amount` 값이 메서드 파라미터로 설정한 `amount`와 같은지 반드시 확인하고 [결제 승인 API](/reference#결제-승인)를 호출해서 결제를 완료하세요.
|
|
664
|
+
* ```plain theme="grey" copyable="false"
|
|
665
|
+
* {successUrl}?paymentType={PAYMENT_TYPE}&amount={AMOUNT}&orderId={ORDER_ID}&paymentKey={PAYMENT_KEY}
|
|
666
|
+
* ```
|
|
667
|
+
* 결제 요청이 실패하면 파라미터로 설정한 `failUrl`로 이동해요. 쿼리 파라미터로 에러 코드와 메시지를 확인하세요.
|
|
668
|
+
* ```plain theme="grey" copyable="false"
|
|
669
|
+
* {failUrl}?code={ERROR_CODE}&message={ERROR_MESSAGE}&orderId={ORDER_ID}
|
|
670
|
+
* ```
|
|
671
|
+
* Redirect 방식에서는 URL이 이동하기 때문에 `void`가 응답됩니다.
|
|
672
|
+
|
|
673
|
+
* @param {WidgetPaymentRequestWindow} paymentRequest 결제 요청 정보입니다.
|
|
674
|
+
* @param {WidgetPaymentRequestWindowOptions} options 위젯 결제창 옵션입니다.
|
|
675
|
+
*
|
|
676
|
+
* @example
|
|
677
|
+
* ```js
|
|
678
|
+
* widgets.requestPaymentWindow(
|
|
679
|
+
* {
|
|
680
|
+
* orderId: generateRandomString(),
|
|
681
|
+
* orderName: "토스 티셔츠 외 2건",
|
|
682
|
+
* successUrl: window.location.origin + "/success.html",
|
|
683
|
+
* failUrl: window.location.origin + "/fail.html",
|
|
684
|
+
* customerEmail: "customer123@gmail.com",
|
|
685
|
+
* customerName: "김토스",
|
|
686
|
+
* },
|
|
687
|
+
* {
|
|
688
|
+
* variantKey: {
|
|
689
|
+
* paymentMethod: "CUSTOM-1",
|
|
690
|
+
* agreement: "AGREEMENT",
|
|
691
|
+
* },
|
|
692
|
+
* }
|
|
693
|
+
* );
|
|
694
|
+
* ```
|
|
695
|
+
*/
|
|
696
|
+
type RequestPaymentWindowWithRedirection = (paymentRequest: WithRedirection<WidgetPaymentRequestWindow>, options?: WidgetPaymentRequestWindowOptions) => Promise<void>;
|
|
697
|
+
|
|
587
698
|
interface TossPaymentsWidgets {
|
|
588
699
|
/**
|
|
589
700
|
* 주문의 결제 금액을 설정합니다. [자세히 >](#widgetssetamount)
|
|
@@ -597,6 +708,10 @@ interface TossPaymentsWidgets {
|
|
|
597
708
|
* 결제를 요청합니다. 구매자가 결제 UI에서 선택한 결제수단의 결제창을 띄워요. [자세히 >](#widgetsrequestpayment)
|
|
598
709
|
*/
|
|
599
710
|
requestPayment: RequestPayment$2;
|
|
711
|
+
/**
|
|
712
|
+
* 위젯 결제창으로 결제를 요청합니다. [자세히 >](#widgetsrequestpaymentwindow)
|
|
713
|
+
*/
|
|
714
|
+
requestPaymentWindow: RequestPaymentWindow;
|
|
600
715
|
/**
|
|
601
716
|
* 약관 UI를 렌더링합니다. [자세히 >](#widgetsrenderagreement)
|
|
602
717
|
*/
|
|
@@ -1317,7 +1432,7 @@ interface ForeignEasyPayPaymentRequest extends PaymentRequest {
|
|
|
1317
1432
|
*/
|
|
1318
1433
|
products?: Array<{
|
|
1319
1434
|
/**
|
|
1320
|
-
* 상품명입니다.
|
|
1435
|
+
* 상품명입니다. 최대 길이는 100자입니다.
|
|
1321
1436
|
*/
|
|
1322
1437
|
name: string;
|
|
1323
1438
|
/**
|
|
@@ -1409,20 +1524,19 @@ interface RequestPaymentResult {
|
|
|
1409
1524
|
amount: Amount;
|
|
1410
1525
|
}
|
|
1411
1526
|
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
method: 'CARD' | 'TRANSFER';
|
|
1527
|
+
/**
|
|
1528
|
+
* 자동결제(빌링) 등록 요청의 공통 필드입니다.
|
|
1529
|
+
*/
|
|
1530
|
+
interface BaseBillingAuthRequest {
|
|
1417
1531
|
/**
|
|
1418
|
-
*
|
|
1532
|
+
* 등록이 성공하면 리다이렉트되는 URL입니다. 리다이렉트되면 URL의 쿼리 파라미터로 `authKey`, `customerKey`가 추가돼요. 값을 검증하고 [빌링키 발급 API](/reference#authkey로-카드-빌링키-발급)를 호출하세요.
|
|
1419
1533
|
* 반드시 오리진을 포함해야 합니다.
|
|
1420
1534
|
*
|
|
1421
1535
|
* @example https://www.example.com/success
|
|
1422
1536
|
*/
|
|
1423
1537
|
successUrl: string;
|
|
1424
1538
|
/**
|
|
1425
|
-
*
|
|
1539
|
+
* 등록이 실패하면 리다이렉트되는 URL입니다. 리다이렉트되면 URL의 쿼리 파라미터로 에러 코드와 메시지를 확인할 수 있어요.
|
|
1426
1540
|
* 반드시 오리진을 포함해야 합니다.
|
|
1427
1541
|
*/
|
|
1428
1542
|
failUrl: string;
|
|
@@ -1444,11 +1558,49 @@ interface BillingAuthRequest {
|
|
|
1444
1558
|
* @default 'iframe'
|
|
1445
1559
|
*/
|
|
1446
1560
|
windowTarget?: 'iframe' | 'self' | null;
|
|
1561
|
+
}
|
|
1562
|
+
/**
|
|
1563
|
+
* 카드 자동결제(빌링) 등록 요청 정보입니다.
|
|
1564
|
+
*/
|
|
1565
|
+
interface CardBillingAuthRequest extends BaseBillingAuthRequest {
|
|
1566
|
+
/**
|
|
1567
|
+
* 자동결제(빌링)에 등록할 결제수단입니다.
|
|
1568
|
+
*/
|
|
1569
|
+
method: 'CARD';
|
|
1447
1570
|
/**
|
|
1448
1571
|
* 결제화면에 노출할 카드 타입입니다. `PERSONAL`(개인카드), `CORPORATE`(법인카드) 값을 배열 형태로 전달할 수 있습니다. 입력한 순서대로 화면에 노출되며, 첫 번째로 입력한 카드 타입이 기본 선택됩니다.
|
|
1449
1572
|
*/
|
|
1450
1573
|
selectableCardTypes?: Array<'PERSONAL' | 'CORPORATE'> | null;
|
|
1574
|
+
/**
|
|
1575
|
+
* 결제창을 여는 방법입니다. `DEFAULT`는 기존 카드 빌링창을 열고, `DIRECT`는 easyPay로 전달된 간편결제의 자체창을 엽니다.
|
|
1576
|
+
* 기본 값은 `DEFAULT`입니다.
|
|
1577
|
+
*/
|
|
1578
|
+
flowMode?: 'DIRECT' | 'DEFAULT';
|
|
1579
|
+
/**
|
|
1580
|
+
* 간편결제사 코드입니다. 현재 빌링을 지원하는 간편결제사는 토스페이, 네이버페이가 있습니다.
|
|
1581
|
+
* `flowMode: 'DIRECT'`일 때만 사용할 수 있습니다.
|
|
1582
|
+
*/
|
|
1583
|
+
easyPay?: '토스페이' | 'TOSSPAY' | '네이버페이' | 'NAVERPAY';
|
|
1584
|
+
/**
|
|
1585
|
+
* 간편결제에서 특정 카드사만 노출할 수 있도록 파라미터를 제공합니다.
|
|
1586
|
+
* `flowMode: 'DIRECT'`일 때만 사용할 수 있습니다.
|
|
1587
|
+
*/
|
|
1588
|
+
cardCompany?: string;
|
|
1451
1589
|
}
|
|
1590
|
+
/**
|
|
1591
|
+
* 계좌이체 자동결제(빌링) 등록 요청 정보입니다.
|
|
1592
|
+
*/
|
|
1593
|
+
interface TransferBillingAuthRequest extends BaseBillingAuthRequest {
|
|
1594
|
+
/**
|
|
1595
|
+
* 자동결제(빌링)에 등록할 결제수단입니다.
|
|
1596
|
+
*/
|
|
1597
|
+
method: 'TRANSFER';
|
|
1598
|
+
}
|
|
1599
|
+
/**
|
|
1600
|
+
* 자동결제(빌링) 등록 요청 정보입니다. 토스페이먼츠 자동결제는 신용·체크카드, 계좌이체를 지원해요.
|
|
1601
|
+
* `method` 필드에 따라 사용 가능한 필드가 달라집니다.
|
|
1602
|
+
*/
|
|
1603
|
+
type BillingAuthRequest = CardBillingAuthRequest | TransferBillingAuthRequest;
|
|
1452
1604
|
|
|
1453
1605
|
/**
|
|
1454
1606
|
*
|
|
@@ -1812,7 +1964,7 @@ type RequestForeignEasyPayPaymentWithRedirection = (paymentRequest: WithRedirect
|
|
|
1812
1964
|
/**
|
|
1813
1965
|
* 자동결제(빌링) 결제창을 열어 구매자의 카드 등록을 요청하는 메서드입니다.
|
|
1814
1966
|
*
|
|
1815
|
-
* @param {BillingAuthRequest} billingAuthRequest 자동결제(빌링)
|
|
1967
|
+
* @param {BillingAuthRequest} billingAuthRequest 자동결제(빌링) 등록에 필요한 정보입니다.
|
|
1816
1968
|
* @returns URL이 이동하기 때문에 `void`가 응답됩니다. 파라미터로 설정한 `successUrl` 또는 `failUrl`에서 카드 등록 결과를 확인하고 [빌링키 발급 API](/reference#authkey로-카드-빌링키-발급)를 호출해야 자동결제를 할 수 있어요.
|
|
1817
1969
|
*
|
|
1818
1970
|
* @example
|