@danalpay/javascript-sdk 1.0.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.
package/README.md ADDED
@@ -0,0 +1,41 @@
1
+ # Danal SDK
2
+
3
+ 다날 결제창 연동을 위한 JavaScript SDK 입니다.
4
+
5
+ ---
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ # npm
11
+ npm install @danalpay/javascript-sdk
12
+
13
+ # yarn
14
+ yarn add @danalpay/javascript-sdk
15
+
16
+ # pnpm
17
+ pnpm add @danalpay/javascript-sdk
18
+ ```
19
+
20
+ ## Quick Start
21
+
22
+ ```js
23
+ import { loadDanalPayemntsSDK } from "@danalpay/javascript-sdk";
24
+
25
+ // async/await
26
+ const danal = await loadDanalPayemntsSDK({ clientKey: "YOUR_KEY" });
27
+ await danal.requestPayment({...});
28
+ ```
29
+
30
+ ## TypeScript
31
+
32
+ TypeScript 타입 정의 파일(.d.ts)을 포함하고 있어, 타입 안전성과 자동완성을 지원합니다.
33
+
34
+ ## OUR Site
35
+
36
+ 더 자세한 가이드 문서, API 레퍼런스, 샘플 코드는 개발자 사이트에서 확인하세요.<br/>
37
+ [➡️ Danal 개발자 사이트](https://developers.danalpay.com)
38
+
39
+ ## License
40
+
41
+ MIT © Danal
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ /******************************************************************************
4
+ Copyright (c) Microsoft Corporation.
5
+
6
+ Permission to use, copy, modify, and/or distribute this software for any
7
+ purpose with or without fee is hereby granted.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ PERFORMANCE OF THIS SOFTWARE.
16
+ ***************************************************************************** */
17
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
18
+
19
+
20
+ function __rest(s, e) {
21
+ var t = {};
22
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
23
+ t[p] = s[p];
24
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
25
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
26
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
27
+ t[p[i]] = s[p[i]];
28
+ }
29
+ return t;
30
+ }
31
+
32
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
33
+ var e = new Error(message);
34
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
35
+ };
36
+
37
+ const RESOURCE_URL = 'https://static.danalpay.com/d1/sdk/index.js';
38
+ const NAMESPACE = 'DanalPayments';
39
+
40
+ function appendScript(src, options) {
41
+ return new Promise((resolve, reject) => {
42
+ const script = document.createElement('script');
43
+ script.src = src;
44
+ if (options) {
45
+ const { onload, onerror } = options, attrs = __rest(options, ["onload", "onerror"]);
46
+ Object.assign(script, attrs);
47
+ }
48
+ script.onload = () => resolve(window[NAMESPACE]);
49
+ script.onerror = (e) => reject(e);
50
+ document.head.appendChild(script);
51
+ });
52
+ }
53
+
54
+ function loadDanalPayemntsSDK(params, scriptOption) {
55
+ if (typeof window === 'undefined') {
56
+ return Promise.reject('window is undefined');
57
+ }
58
+ return appendScript(RESOURCE_URL, scriptOption).then((danalPayments) => {
59
+ return danalPayments(params);
60
+ });
61
+ }
62
+
63
+ exports.loadDanalPayemntsSDK = loadDanalPayemntsSDK;
@@ -0,0 +1,127 @@
1
+ type Paymethod = 'CARD' | 'NAVERPAY' | 'KAKAOPAY' | 'PAYCO' | 'MOBILE' | 'TRANSFER' | 'VACCOUNT' | 'CULTURELAND' | 'BOOK_AND_LIFE';
2
+
3
+ /** PayMethod를 `CARD`로 설정하면 카드/간편결제 통합결제창, 카드・간편결제 자체창을 사용할 수 있어요. */
4
+ type CardPaymentsRequest = {
5
+ /** 결제 금액 부가세입니다. */
6
+ taxAmount?: number;
7
+ /** 카드코드값입니다. 어떤 카드로 결제할지 카드사코드값을 입력합니다. */
8
+ cardCodes?: CardCode[];
9
+ /** 할부개월 수입니다. 카드 할부개월 수를 입력합니다. */
10
+ installmentMonths?: string[];
11
+ /** 간편결제 코드값입니다. CARDCODE값이 있으면 무시됩니다. */
12
+ easyPayProvider?: string;
13
+ /** 면세금액입니다다. */
14
+ taxFreeAmount?: number;
15
+ /** 봉사료입니다. */
16
+ serviceAmount?: number;
17
+ };
18
+ type CardCode = '0100' | '0200' | '0201' | '0203' | '0204' | '0205' | '0206' | '0207' | '0208' | '0209' | '0210' | '0300' | '0400' | '0500' | '0701' | '0600' | '0601' | '0700' | '0800' | '0906' | '0907' | '0908' | '0909' | '0910' | '0911' | '0912' | '0913' | '0914' | '0915' | '0916' | '0917' | '0918' | '0919' | '0921' | '0922' | '0923' | '0924' | '0925' | '0926' | '0927' | '0928' | '0929' | '0930' | '0931' | '0932' | '0933' | '0934' | '1100' | '1200' | '1300';
19
+
20
+ /** PayMethod를 `MOBILE`로 설정하면 휴대폰결제 통합결제창, 휴대폰결제 자체창을 사용할 수 있어요. */
21
+ type MobilePaymentRequest = {
22
+ /** 휴대폰 타입입니다. */
23
+ itemType: string;
24
+ /** 아이템 코드값입니다. */
25
+ itemCode: string;
26
+ /** 사용자의 통신사 코드입니다 */
27
+ carriers?: Carrier[];
28
+ };
29
+ type Carrier = "SKT" | "KTF" | "LGT" | "SKL" | "KCT" | "CJH";
30
+
31
+ /** PayMethod를 `TRANSFER`로 설정하면 계좌이체 결제수단이 열립니다. */
32
+ type TransferPaymentsRequest = {
33
+ /** 사용자 이름입니다. */
34
+ userName?: string;
35
+ /** 사용자 이메일 입니다 */
36
+ userEmail?: string;
37
+ /** 현금영수증 사용여부입니다. */
38
+ useCashReceipt?: 'Y' | 'N';
39
+ /** 안심결제 사용여부입니다. */
40
+ useEscrow?: 'Y' | 'N';
41
+ };
42
+
43
+ /** PayMethod를 `VACCOUNT`로 설정하면 가상계좌 결제수단이 열립니다. */
44
+ type VirtualAccountPaymentsRequest = {
45
+ /** 예금주명 입니다. */
46
+ accountHolder?: string;
47
+ /** 은행 코드입니다. */
48
+ bankCodes?: BankCode[];
49
+ /** 현금영수증 사용여부입니다. */
50
+ useCashReceipt?: 'Y' | 'N';
51
+ /** 안심결제 사용여부입니다. */
52
+ useEscrow?: 'Y' | 'N';
53
+ };
54
+ type BankCode = '012' | '004' | '088' | '020' | '081' | '003' | '031' | '071' | '032' | '034' | '039' | '045';
55
+
56
+ /** PayMethod를 `BOOK_AND_LIFE`로 설정하면 도서문화상품권 결제창을 사용할 수 있어요. */
57
+ type BookAndLifePaymentsRequest = {
58
+ /** 사용자 이메일입니다. */
59
+ userEmail?: string;
60
+ };
61
+
62
+ /** PayMethod를 `CULTURELAND`로 설정하면 컬쳐랜드 결제창을 사용할 수 있어요. */
63
+ type CulturelandPaymentsRequest = {
64
+ /** 사용자 이메일입니다. */
65
+ userEmail: string;
66
+ };
67
+
68
+ type CommonBaseParams = {
69
+ /** 결제수단입니다. 결제수단을 구분하는 값입니다. */
70
+ paymentsMethod: Paymethod;
71
+ /** 상품명입니다. */
72
+ orderName: string;
73
+ /** 가맹점 주문번호입니다. */
74
+ orderId: string;
75
+ /** 구매하는 사용자의 아이디 입니다. */
76
+ userId: string;
77
+ /** 상품금액입니다. */
78
+ amount: number;
79
+ /** 가맹점 번호입니다. */
80
+ merchantId: string;
81
+ /** 결제 성공시 리다이렉트 될 URL 입니다. */
82
+ successUrl: string;
83
+ /** 결제 종료 시 리다이렉트 될 URL 입니다. */
84
+ failUrl: string;
85
+ /** 할인금액 입니다. */
86
+ discountAmount?: number;
87
+ /** 컵 보증금 입니다. */
88
+ depositAmount?: number;
89
+ /** 통화 입니다. */
90
+ currency?: string;
91
+ /** 부가세 입니다. */
92
+ vatAmount?: number;
93
+ /** 인코딩타입 입니다. */
94
+ charset?: string;
95
+ /** 결제통지 받을 가맹점 측 URL입니다 */
96
+ notiUrl?: string;
97
+ };
98
+
99
+ type OptionParams = {
100
+ customWidth?: string;
101
+ customHeight?: string;
102
+ };
103
+ type PaymentRequestMap = {
104
+ MOBILE: MobilePaymentRequest;
105
+ TRANSFER: TransferPaymentsRequest;
106
+ CARD: CardPaymentsRequest;
107
+ BOOK_AND_LIFE: BookAndLifePaymentsRequest;
108
+ CULTURELAND: CulturelandPaymentsRequest;
109
+ VACCOUNT: VirtualAccountPaymentsRequest;
110
+ NAVERPAY: CardPaymentsRequest;
111
+ KAKAOPAY: CardPaymentsRequest;
112
+ PAYCO: CardPaymentsRequest;
113
+ };
114
+ type RequestPaymentParam<T extends keyof PaymentRequestMap> = CommonBaseParams & OptionParams & PaymentRequestMap[T];
115
+ interface DanalPayments {
116
+ requestPayment<T extends Paymethod>(args: {
117
+ paymentsMethod: T;
118
+ } & RequestPaymentParam<T>): Promise<void>;
119
+ }
120
+ type InitialParams = {
121
+ clientKey: string;
122
+ } | string;
123
+
124
+ declare function loadDanalPayemntsSDK(params: InitialParams, scriptOption?: Partial<Omit<HTMLScriptElement, 'src'>>): Promise<DanalPayments>;
125
+
126
+ export { loadDanalPayemntsSDK };
127
+ export type { DanalPayments, Paymethod, RequestPaymentParam };
@@ -0,0 +1,61 @@
1
+ /******************************************************************************
2
+ Copyright (c) Microsoft Corporation.
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any
5
+ purpose with or without fee is hereby granted.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
+ PERFORMANCE OF THIS SOFTWARE.
14
+ ***************************************************************************** */
15
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
16
+
17
+
18
+ function __rest(s, e) {
19
+ var t = {};
20
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
21
+ t[p] = s[p];
22
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
23
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
24
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
25
+ t[p[i]] = s[p[i]];
26
+ }
27
+ return t;
28
+ }
29
+
30
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
31
+ var e = new Error(message);
32
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
33
+ };
34
+
35
+ const RESOURCE_URL = 'https://static.danalpay.com/d1/sdk/index.js';
36
+ const NAMESPACE = 'DanalPayments';
37
+
38
+ function appendScript(src, options) {
39
+ return new Promise((resolve, reject) => {
40
+ const script = document.createElement('script');
41
+ script.src = src;
42
+ if (options) {
43
+ const { onload, onerror } = options, attrs = __rest(options, ["onload", "onerror"]);
44
+ Object.assign(script, attrs);
45
+ }
46
+ script.onload = () => resolve(window[NAMESPACE]);
47
+ script.onerror = (e) => reject(e);
48
+ document.head.appendChild(script);
49
+ });
50
+ }
51
+
52
+ function loadDanalPayemntsSDK(params, scriptOption) {
53
+ if (typeof window === 'undefined') {
54
+ return Promise.reject('window is undefined');
55
+ }
56
+ return appendScript(RESOURCE_URL, scriptOption).then((danalPayments) => {
57
+ return danalPayments(params);
58
+ });
59
+ }
60
+
61
+ export { loadDanalPayemntsSDK };
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@danalpay/javascript-sdk",
3
+ "description": "Danal ONE API javascript SDK",
4
+ "version": "1.0.1",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "author": "Danal",
9
+ "private": false,
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "homepage": "https://developers.danalpay.com",
14
+ "scripts": {
15
+ "build": "rollup -c",
16
+ "prepack": "pnpm build"
17
+ },
18
+ "license": "MIT",
19
+ "devDependencies": {
20
+ "@babel/core": "^7.26.0",
21
+ "@babel/preset-env": "^7.26.0",
22
+ "@babel/preset-typescript": "^7.26.0",
23
+ "@danalpay/shared": "workspace:*",
24
+ "@rollup/plugin-alias": "^5.1.1",
25
+ "@rollup/plugin-typescript": "^12.1.1",
26
+ "@types/node": "^22.13.14",
27
+ "prettier": "^3.3.3",
28
+ "rollup": "^4.27.3",
29
+ "rollup-plugin-dts": "^6.1.1",
30
+ "tslib": "^2.8.1",
31
+ "typescript": "^5.6.3"
32
+ },
33
+ "engines": {
34
+ "node": ">=12.*"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "types"
39
+ ],
40
+ "keywords": [
41
+ "danal",
42
+ "payments",
43
+ "sdk"
44
+ ]
45
+ }