connectbase-client 5.1.1 → 5.2.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/dist/index.d.mts +90 -1
- package/dist/index.d.ts +90 -1
- package/dist/index.js +33 -0
- package/dist/index.mjs +33 -0
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -5511,6 +5511,29 @@ interface PreparePaymentRequest {
|
|
|
5511
5511
|
* 상품별로 세금 카테고리를 달리 할 때만 지정한다. Paddle 은 무시한다.
|
|
5512
5512
|
*/
|
|
5513
5513
|
provider_price_ref?: string;
|
|
5514
|
+
/**
|
|
5515
|
+
* 이 결제에 미리 적용할 할인/쿠폰 코드(MoR 전용, 선택).
|
|
5516
|
+
*
|
|
5517
|
+
* 쿠폰은 PG 대시보드(Dodo Discounts / Paddle Discounts)에서 발행한다 — ConnectBase 는 코드를
|
|
5518
|
+
* 전달만 하고 발행/한도/유효기간은 PG 설정이 권위다. Paddle 은 API 가 코드 대신 내부 ID 를
|
|
5519
|
+
* 받으므로 서버가 코드를 조회해 해소한다.
|
|
5520
|
+
*
|
|
5521
|
+
* 실패는 조용히 정가로 넘어가지 않고 400 으로 거절된다:
|
|
5522
|
+
* - `discount_code_invalid` — 없거나 만료/비활성 코드
|
|
5523
|
+
* - `discount_code_unsupported` — 할인 코드를 지원하지 않는 프로바이더(toss/stripe/payapp/paypal)
|
|
5524
|
+
*
|
|
5525
|
+
* 할인이 적용되면 확정 응답의 `amount` 는 **실제 청구액**(할인 후)이고 차감분은
|
|
5526
|
+
* `discount_amount` 로 온다.
|
|
5527
|
+
*/
|
|
5528
|
+
discount_code?: string;
|
|
5529
|
+
/**
|
|
5530
|
+
* 호스티드 결제창에서 **고객이 직접** 쿠폰을 입력하도록 허용할지(선택).
|
|
5531
|
+
*
|
|
5532
|
+
* 미지정이면 프로바이더 기본값을 따른다. Dodo 는 결제창마다 켜고 끌 수 있다.
|
|
5533
|
+
* Paddle 오버레이는 입력칸을 항상 노출해 숨길 수 없으므로 `false` 는 400
|
|
5534
|
+
* `discount_code_entry_unsupported` 로 거절된다.
|
|
5535
|
+
*/
|
|
5536
|
+
allow_discount_code?: boolean;
|
|
5514
5537
|
amount: number;
|
|
5515
5538
|
order_name: string;
|
|
5516
5539
|
order_id?: string;
|
|
@@ -5573,7 +5596,10 @@ interface ConfirmPaymentRequest {
|
|
|
5573
5596
|
interface ConfirmPaymentResponse {
|
|
5574
5597
|
payment_id: string;
|
|
5575
5598
|
order_id: string;
|
|
5599
|
+
/** **실제 청구된** 금액. 할인이 적용되면 준비 금액보다 작다. */
|
|
5576
5600
|
amount: number;
|
|
5601
|
+
/** 할인으로 차감된 금액(준비 금액 − 실제 청구액). 할인이 없으면 생략된다. */
|
|
5602
|
+
discount_amount?: number;
|
|
5577
5603
|
status: PaymentStatus;
|
|
5578
5604
|
method: string;
|
|
5579
5605
|
receipt_url?: string;
|
|
@@ -5610,6 +5636,13 @@ interface PaymentDetail {
|
|
|
5610
5636
|
settlement_currency?: string;
|
|
5611
5637
|
/** 청구 국가 ISO 3166-1 alpha-2 (MoR 제공 시) */
|
|
5612
5638
|
country?: string;
|
|
5639
|
+
/** 적용된 할인 코드 (준비 시 지정한 경우). */
|
|
5640
|
+
discount_code?: string;
|
|
5641
|
+
/**
|
|
5642
|
+
* 할인으로 차감된 금액. `amount` 는 이미 할인이 반영된 실제 청구액이므로,
|
|
5643
|
+
* 정가를 표시하려면 `amount + discount_amount` 로 복원한다.
|
|
5644
|
+
*/
|
|
5645
|
+
discount_amount?: number;
|
|
5613
5646
|
status: PaymentStatus;
|
|
5614
5647
|
payment_provider?: PaymentProvider;
|
|
5615
5648
|
/** 이 결제가 사용한 자격증명 모드 (test | live). */
|
|
@@ -5719,10 +5752,23 @@ declare class PaymentAPI {
|
|
|
5719
5752
|
* if (result.payment_provider === 'payapp' && result.payapp_pay_url) {
|
|
5720
5753
|
* window.location.href = result.payapp_pay_url
|
|
5721
5754
|
* }
|
|
5755
|
+
*
|
|
5756
|
+
* // 할인 코드 (MoR: dodo/paddle) — PG 대시보드에서 발행한 코드를 그대로 넘긴다.
|
|
5757
|
+
* const discounted = await cb.payment.prepare({
|
|
5758
|
+
* amount: 10000,
|
|
5759
|
+
* order_name: '프리미엄 1개월',
|
|
5760
|
+
* discount_code: 'LAUNCH50', // 미리 적용
|
|
5761
|
+
* allow_discount_code: true, // 결제창에서 고객이 직접 입력하는 것도 허용 (Dodo)
|
|
5762
|
+
* })
|
|
5763
|
+
* // 확정 후 confirm 응답의 amount 는 할인이 반영된 실제 청구액,
|
|
5764
|
+
* // discount_amount 는 차감분이다.
|
|
5722
5765
|
* ```
|
|
5723
5766
|
*
|
|
5724
5767
|
* @remarks
|
|
5725
5768
|
* PayApp 은 `customer_phone` 이 필수입니다(결제요청 수신 번호). 미지정 시 서버가 거부합니다.
|
|
5769
|
+
*
|
|
5770
|
+
* 할인 코드는 MoR 프로바이더(dodo/paddle)에서만 지원됩니다. 그 외 프로바이더에 넘기면
|
|
5771
|
+
* 정가로 조용히 청구되지 않고 400 `discount_code_unsupported` 로 거절됩니다.
|
|
5726
5772
|
*/
|
|
5727
5773
|
prepare(data: PreparePaymentRequest): Promise<PreparePaymentResponse>;
|
|
5728
5774
|
/**
|
|
@@ -7687,8 +7733,31 @@ interface CreateSubscriptionRequest {
|
|
|
7687
7733
|
billing_cycle: BillingCycle;
|
|
7688
7734
|
/** 결제일 (monthly: 1-28일, weekly: 0-6 요일) */
|
|
7689
7735
|
billing_day?: number;
|
|
7690
|
-
/**
|
|
7736
|
+
/**
|
|
7737
|
+
* 트라이얼(무료 체험) 기간 (일).
|
|
7738
|
+
*
|
|
7739
|
+
* 빌링키 모델(toss/stripe)에서는 ConnectBase 스케줄러가 체험 종료일에 첫 청구를 건다.
|
|
7740
|
+
* MoR 은 PG 가 정기청구를 소유하므로 결제창 생성 시 체험 일수를 함께 보낸다:
|
|
7741
|
+
* - **Dodo**: 구독마다 지정 가능(0~10000일)
|
|
7742
|
+
* - **Paddle**: 트라이얼이 요금제(price)에 붙는 속성이라 구독마다 지정할 수 없다 →
|
|
7743
|
+
* 400 `trial_days_unsupported`. 체험이 설정된 price 를 Paddle 대시보드에서 따로 만들어 쓴다.
|
|
7744
|
+
*/
|
|
7691
7745
|
trial_days?: number;
|
|
7746
|
+
/**
|
|
7747
|
+
* 첫 결제에 적용할 할인/쿠폰 코드(MoR 전용, 선택).
|
|
7748
|
+
*
|
|
7749
|
+
* 쿠폰은 PG 대시보드에서 발행하며, 몇 주기까지 할인할지도 그쪽 설정이 정한다
|
|
7750
|
+
* (예: Dodo `subscription_cycles` 로 "3개월간 50%"). ConnectBase 는 코드만 전달한다.
|
|
7751
|
+
*
|
|
7752
|
+
* 400 `discount_code_invalid`(없거나 만료) / `discount_code_unsupported`(미지원 프로바이더).
|
|
7753
|
+
*/
|
|
7754
|
+
discount_code?: string;
|
|
7755
|
+
/**
|
|
7756
|
+
* 호스티드 결제창에서 고객이 직접 쿠폰을 입력하도록 허용할지(선택).
|
|
7757
|
+
* Paddle 오버레이는 항상 노출해 숨길 수 없으므로 `false` 는 400
|
|
7758
|
+
* `discount_code_entry_unsupported` 로 거절된다.
|
|
7759
|
+
*/
|
|
7760
|
+
allow_discount_code?: boolean;
|
|
7692
7761
|
/** 고객 이메일 */
|
|
7693
7762
|
customer_email?: string;
|
|
7694
7763
|
/** 고객 이름 */
|
|
@@ -8124,7 +8193,27 @@ declare class SubscriptionAPI {
|
|
|
8124
8193
|
* billing_day: 15, // 매월 15일 결제
|
|
8125
8194
|
* trial_days: 7 // 7일 무료 체험
|
|
8126
8195
|
* })
|
|
8196
|
+
*
|
|
8197
|
+
* // MoR(dodo/paddle) 구독 + 할인 코드
|
|
8198
|
+
* const promo = await client.subscription.create({
|
|
8199
|
+
* plan_name: '프리미엄 플랜',
|
|
8200
|
+
* amount: 9900,
|
|
8201
|
+
* billing_cycle: 'monthly',
|
|
8202
|
+
* provider_price_ref: 'pdt_xxxxx', // PG 카탈로그의 recurring 상품
|
|
8203
|
+
* discount_code: 'LAUNCH50', // 첫 결제에 적용 (몇 주기까지인지는 PG 쿠폰 설정이 결정)
|
|
8204
|
+
* trial_days: 14, // Dodo 만 지원 — Paddle 은 400 trial_days_unsupported
|
|
8205
|
+
* })
|
|
8127
8206
|
* ```
|
|
8207
|
+
*
|
|
8208
|
+
* @remarks
|
|
8209
|
+
* 할인 코드(`discount_code`)와 `trial_days` 의 프로바이더 지원 범위가 다릅니다:
|
|
8210
|
+
* - **Dodo**: 할인 코드 O, 결제창 쿠폰 입력 토글 O, 구독별 체험 일수 O
|
|
8211
|
+
* - **Paddle**: 할인 코드 O(코드→내부 ID 자동 해소), 쿠폰 입력칸은 항상 노출(숨김 불가),
|
|
8212
|
+
* 체험은 요금제(price) 속성이라 구독별 지정 불가
|
|
8213
|
+
* - **toss/stripe/payapp/paypal**: 할인 코드 미지원(400), 체험은 ConnectBase 스케줄러가 처리
|
|
8214
|
+
*
|
|
8215
|
+
* 지원하지 않는 조합은 무시되지 않고 400 으로 거절됩니다 — "쿠폰을 넣었는데 정가 청구",
|
|
8216
|
+
* "체험을 줬는데 즉시 청구" 를 만들지 않기 위함입니다.
|
|
8128
8217
|
*/
|
|
8129
8218
|
create(data: CreateSubscriptionRequest): Promise<SubscriptionResponse>;
|
|
8130
8219
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -5511,6 +5511,29 @@ interface PreparePaymentRequest {
|
|
|
5511
5511
|
* 상품별로 세금 카테고리를 달리 할 때만 지정한다. Paddle 은 무시한다.
|
|
5512
5512
|
*/
|
|
5513
5513
|
provider_price_ref?: string;
|
|
5514
|
+
/**
|
|
5515
|
+
* 이 결제에 미리 적용할 할인/쿠폰 코드(MoR 전용, 선택).
|
|
5516
|
+
*
|
|
5517
|
+
* 쿠폰은 PG 대시보드(Dodo Discounts / Paddle Discounts)에서 발행한다 — ConnectBase 는 코드를
|
|
5518
|
+
* 전달만 하고 발행/한도/유효기간은 PG 설정이 권위다. Paddle 은 API 가 코드 대신 내부 ID 를
|
|
5519
|
+
* 받으므로 서버가 코드를 조회해 해소한다.
|
|
5520
|
+
*
|
|
5521
|
+
* 실패는 조용히 정가로 넘어가지 않고 400 으로 거절된다:
|
|
5522
|
+
* - `discount_code_invalid` — 없거나 만료/비활성 코드
|
|
5523
|
+
* - `discount_code_unsupported` — 할인 코드를 지원하지 않는 프로바이더(toss/stripe/payapp/paypal)
|
|
5524
|
+
*
|
|
5525
|
+
* 할인이 적용되면 확정 응답의 `amount` 는 **실제 청구액**(할인 후)이고 차감분은
|
|
5526
|
+
* `discount_amount` 로 온다.
|
|
5527
|
+
*/
|
|
5528
|
+
discount_code?: string;
|
|
5529
|
+
/**
|
|
5530
|
+
* 호스티드 결제창에서 **고객이 직접** 쿠폰을 입력하도록 허용할지(선택).
|
|
5531
|
+
*
|
|
5532
|
+
* 미지정이면 프로바이더 기본값을 따른다. Dodo 는 결제창마다 켜고 끌 수 있다.
|
|
5533
|
+
* Paddle 오버레이는 입력칸을 항상 노출해 숨길 수 없으므로 `false` 는 400
|
|
5534
|
+
* `discount_code_entry_unsupported` 로 거절된다.
|
|
5535
|
+
*/
|
|
5536
|
+
allow_discount_code?: boolean;
|
|
5514
5537
|
amount: number;
|
|
5515
5538
|
order_name: string;
|
|
5516
5539
|
order_id?: string;
|
|
@@ -5573,7 +5596,10 @@ interface ConfirmPaymentRequest {
|
|
|
5573
5596
|
interface ConfirmPaymentResponse {
|
|
5574
5597
|
payment_id: string;
|
|
5575
5598
|
order_id: string;
|
|
5599
|
+
/** **실제 청구된** 금액. 할인이 적용되면 준비 금액보다 작다. */
|
|
5576
5600
|
amount: number;
|
|
5601
|
+
/** 할인으로 차감된 금액(준비 금액 − 실제 청구액). 할인이 없으면 생략된다. */
|
|
5602
|
+
discount_amount?: number;
|
|
5577
5603
|
status: PaymentStatus;
|
|
5578
5604
|
method: string;
|
|
5579
5605
|
receipt_url?: string;
|
|
@@ -5610,6 +5636,13 @@ interface PaymentDetail {
|
|
|
5610
5636
|
settlement_currency?: string;
|
|
5611
5637
|
/** 청구 국가 ISO 3166-1 alpha-2 (MoR 제공 시) */
|
|
5612
5638
|
country?: string;
|
|
5639
|
+
/** 적용된 할인 코드 (준비 시 지정한 경우). */
|
|
5640
|
+
discount_code?: string;
|
|
5641
|
+
/**
|
|
5642
|
+
* 할인으로 차감된 금액. `amount` 는 이미 할인이 반영된 실제 청구액이므로,
|
|
5643
|
+
* 정가를 표시하려면 `amount + discount_amount` 로 복원한다.
|
|
5644
|
+
*/
|
|
5645
|
+
discount_amount?: number;
|
|
5613
5646
|
status: PaymentStatus;
|
|
5614
5647
|
payment_provider?: PaymentProvider;
|
|
5615
5648
|
/** 이 결제가 사용한 자격증명 모드 (test | live). */
|
|
@@ -5719,10 +5752,23 @@ declare class PaymentAPI {
|
|
|
5719
5752
|
* if (result.payment_provider === 'payapp' && result.payapp_pay_url) {
|
|
5720
5753
|
* window.location.href = result.payapp_pay_url
|
|
5721
5754
|
* }
|
|
5755
|
+
*
|
|
5756
|
+
* // 할인 코드 (MoR: dodo/paddle) — PG 대시보드에서 발행한 코드를 그대로 넘긴다.
|
|
5757
|
+
* const discounted = await cb.payment.prepare({
|
|
5758
|
+
* amount: 10000,
|
|
5759
|
+
* order_name: '프리미엄 1개월',
|
|
5760
|
+
* discount_code: 'LAUNCH50', // 미리 적용
|
|
5761
|
+
* allow_discount_code: true, // 결제창에서 고객이 직접 입력하는 것도 허용 (Dodo)
|
|
5762
|
+
* })
|
|
5763
|
+
* // 확정 후 confirm 응답의 amount 는 할인이 반영된 실제 청구액,
|
|
5764
|
+
* // discount_amount 는 차감분이다.
|
|
5722
5765
|
* ```
|
|
5723
5766
|
*
|
|
5724
5767
|
* @remarks
|
|
5725
5768
|
* PayApp 은 `customer_phone` 이 필수입니다(결제요청 수신 번호). 미지정 시 서버가 거부합니다.
|
|
5769
|
+
*
|
|
5770
|
+
* 할인 코드는 MoR 프로바이더(dodo/paddle)에서만 지원됩니다. 그 외 프로바이더에 넘기면
|
|
5771
|
+
* 정가로 조용히 청구되지 않고 400 `discount_code_unsupported` 로 거절됩니다.
|
|
5726
5772
|
*/
|
|
5727
5773
|
prepare(data: PreparePaymentRequest): Promise<PreparePaymentResponse>;
|
|
5728
5774
|
/**
|
|
@@ -7687,8 +7733,31 @@ interface CreateSubscriptionRequest {
|
|
|
7687
7733
|
billing_cycle: BillingCycle;
|
|
7688
7734
|
/** 결제일 (monthly: 1-28일, weekly: 0-6 요일) */
|
|
7689
7735
|
billing_day?: number;
|
|
7690
|
-
/**
|
|
7736
|
+
/**
|
|
7737
|
+
* 트라이얼(무료 체험) 기간 (일).
|
|
7738
|
+
*
|
|
7739
|
+
* 빌링키 모델(toss/stripe)에서는 ConnectBase 스케줄러가 체험 종료일에 첫 청구를 건다.
|
|
7740
|
+
* MoR 은 PG 가 정기청구를 소유하므로 결제창 생성 시 체험 일수를 함께 보낸다:
|
|
7741
|
+
* - **Dodo**: 구독마다 지정 가능(0~10000일)
|
|
7742
|
+
* - **Paddle**: 트라이얼이 요금제(price)에 붙는 속성이라 구독마다 지정할 수 없다 →
|
|
7743
|
+
* 400 `trial_days_unsupported`. 체험이 설정된 price 를 Paddle 대시보드에서 따로 만들어 쓴다.
|
|
7744
|
+
*/
|
|
7691
7745
|
trial_days?: number;
|
|
7746
|
+
/**
|
|
7747
|
+
* 첫 결제에 적용할 할인/쿠폰 코드(MoR 전용, 선택).
|
|
7748
|
+
*
|
|
7749
|
+
* 쿠폰은 PG 대시보드에서 발행하며, 몇 주기까지 할인할지도 그쪽 설정이 정한다
|
|
7750
|
+
* (예: Dodo `subscription_cycles` 로 "3개월간 50%"). ConnectBase 는 코드만 전달한다.
|
|
7751
|
+
*
|
|
7752
|
+
* 400 `discount_code_invalid`(없거나 만료) / `discount_code_unsupported`(미지원 프로바이더).
|
|
7753
|
+
*/
|
|
7754
|
+
discount_code?: string;
|
|
7755
|
+
/**
|
|
7756
|
+
* 호스티드 결제창에서 고객이 직접 쿠폰을 입력하도록 허용할지(선택).
|
|
7757
|
+
* Paddle 오버레이는 항상 노출해 숨길 수 없으므로 `false` 는 400
|
|
7758
|
+
* `discount_code_entry_unsupported` 로 거절된다.
|
|
7759
|
+
*/
|
|
7760
|
+
allow_discount_code?: boolean;
|
|
7692
7761
|
/** 고객 이메일 */
|
|
7693
7762
|
customer_email?: string;
|
|
7694
7763
|
/** 고객 이름 */
|
|
@@ -8124,7 +8193,27 @@ declare class SubscriptionAPI {
|
|
|
8124
8193
|
* billing_day: 15, // 매월 15일 결제
|
|
8125
8194
|
* trial_days: 7 // 7일 무료 체험
|
|
8126
8195
|
* })
|
|
8196
|
+
*
|
|
8197
|
+
* // MoR(dodo/paddle) 구독 + 할인 코드
|
|
8198
|
+
* const promo = await client.subscription.create({
|
|
8199
|
+
* plan_name: '프리미엄 플랜',
|
|
8200
|
+
* amount: 9900,
|
|
8201
|
+
* billing_cycle: 'monthly',
|
|
8202
|
+
* provider_price_ref: 'pdt_xxxxx', // PG 카탈로그의 recurring 상품
|
|
8203
|
+
* discount_code: 'LAUNCH50', // 첫 결제에 적용 (몇 주기까지인지는 PG 쿠폰 설정이 결정)
|
|
8204
|
+
* trial_days: 14, // Dodo 만 지원 — Paddle 은 400 trial_days_unsupported
|
|
8205
|
+
* })
|
|
8127
8206
|
* ```
|
|
8207
|
+
*
|
|
8208
|
+
* @remarks
|
|
8209
|
+
* 할인 코드(`discount_code`)와 `trial_days` 의 프로바이더 지원 범위가 다릅니다:
|
|
8210
|
+
* - **Dodo**: 할인 코드 O, 결제창 쿠폰 입력 토글 O, 구독별 체험 일수 O
|
|
8211
|
+
* - **Paddle**: 할인 코드 O(코드→내부 ID 자동 해소), 쿠폰 입력칸은 항상 노출(숨김 불가),
|
|
8212
|
+
* 체험은 요금제(price) 속성이라 구독별 지정 불가
|
|
8213
|
+
* - **toss/stripe/payapp/paypal**: 할인 코드 미지원(400), 체험은 ConnectBase 스케줄러가 처리
|
|
8214
|
+
*
|
|
8215
|
+
* 지원하지 않는 조합은 무시되지 않고 400 으로 거절됩니다 — "쿠폰을 넣었는데 정가 청구",
|
|
8216
|
+
* "체험을 줬는데 즉시 청구" 를 만들지 않기 위함입니다.
|
|
8128
8217
|
*/
|
|
8129
8218
|
create(data: CreateSubscriptionRequest): Promise<SubscriptionResponse>;
|
|
8130
8219
|
/**
|
package/dist/index.js
CHANGED
|
@@ -6138,10 +6138,23 @@ var PaymentAPI = class {
|
|
|
6138
6138
|
* if (result.payment_provider === 'payapp' && result.payapp_pay_url) {
|
|
6139
6139
|
* window.location.href = result.payapp_pay_url
|
|
6140
6140
|
* }
|
|
6141
|
+
*
|
|
6142
|
+
* // 할인 코드 (MoR: dodo/paddle) — PG 대시보드에서 발행한 코드를 그대로 넘긴다.
|
|
6143
|
+
* const discounted = await cb.payment.prepare({
|
|
6144
|
+
* amount: 10000,
|
|
6145
|
+
* order_name: '프리미엄 1개월',
|
|
6146
|
+
* discount_code: 'LAUNCH50', // 미리 적용
|
|
6147
|
+
* allow_discount_code: true, // 결제창에서 고객이 직접 입력하는 것도 허용 (Dodo)
|
|
6148
|
+
* })
|
|
6149
|
+
* // 확정 후 confirm 응답의 amount 는 할인이 반영된 실제 청구액,
|
|
6150
|
+
* // discount_amount 는 차감분이다.
|
|
6141
6151
|
* ```
|
|
6142
6152
|
*
|
|
6143
6153
|
* @remarks
|
|
6144
6154
|
* PayApp 은 `customer_phone` 이 필수입니다(결제요청 수신 번호). 미지정 시 서버가 거부합니다.
|
|
6155
|
+
*
|
|
6156
|
+
* 할인 코드는 MoR 프로바이더(dodo/paddle)에서만 지원됩니다. 그 외 프로바이더에 넘기면
|
|
6157
|
+
* 정가로 조용히 청구되지 않고 400 `discount_code_unsupported` 로 거절됩니다.
|
|
6145
6158
|
*/
|
|
6146
6159
|
async prepare(data) {
|
|
6147
6160
|
const prefix = this.getPublicPrefix();
|
|
@@ -9023,7 +9036,27 @@ var SubscriptionAPI = class {
|
|
|
9023
9036
|
* billing_day: 15, // 매월 15일 결제
|
|
9024
9037
|
* trial_days: 7 // 7일 무료 체험
|
|
9025
9038
|
* })
|
|
9039
|
+
*
|
|
9040
|
+
* // MoR(dodo/paddle) 구독 + 할인 코드
|
|
9041
|
+
* const promo = await client.subscription.create({
|
|
9042
|
+
* plan_name: '프리미엄 플랜',
|
|
9043
|
+
* amount: 9900,
|
|
9044
|
+
* billing_cycle: 'monthly',
|
|
9045
|
+
* provider_price_ref: 'pdt_xxxxx', // PG 카탈로그의 recurring 상품
|
|
9046
|
+
* discount_code: 'LAUNCH50', // 첫 결제에 적용 (몇 주기까지인지는 PG 쿠폰 설정이 결정)
|
|
9047
|
+
* trial_days: 14, // Dodo 만 지원 — Paddle 은 400 trial_days_unsupported
|
|
9048
|
+
* })
|
|
9026
9049
|
* ```
|
|
9050
|
+
*
|
|
9051
|
+
* @remarks
|
|
9052
|
+
* 할인 코드(`discount_code`)와 `trial_days` 의 프로바이더 지원 범위가 다릅니다:
|
|
9053
|
+
* - **Dodo**: 할인 코드 O, 결제창 쿠폰 입력 토글 O, 구독별 체험 일수 O
|
|
9054
|
+
* - **Paddle**: 할인 코드 O(코드→내부 ID 자동 해소), 쿠폰 입력칸은 항상 노출(숨김 불가),
|
|
9055
|
+
* 체험은 요금제(price) 속성이라 구독별 지정 불가
|
|
9056
|
+
* - **toss/stripe/payapp/paypal**: 할인 코드 미지원(400), 체험은 ConnectBase 스케줄러가 처리
|
|
9057
|
+
*
|
|
9058
|
+
* 지원하지 않는 조합은 무시되지 않고 400 으로 거절됩니다 — "쿠폰을 넣었는데 정가 청구",
|
|
9059
|
+
* "체험을 줬는데 즉시 청구" 를 만들지 않기 위함입니다.
|
|
9027
9060
|
*/
|
|
9028
9061
|
async create(data) {
|
|
9029
9062
|
const prefix = this.getPublicPrefix();
|
package/dist/index.mjs
CHANGED
|
@@ -6089,10 +6089,23 @@ var PaymentAPI = class {
|
|
|
6089
6089
|
* if (result.payment_provider === 'payapp' && result.payapp_pay_url) {
|
|
6090
6090
|
* window.location.href = result.payapp_pay_url
|
|
6091
6091
|
* }
|
|
6092
|
+
*
|
|
6093
|
+
* // 할인 코드 (MoR: dodo/paddle) — PG 대시보드에서 발행한 코드를 그대로 넘긴다.
|
|
6094
|
+
* const discounted = await cb.payment.prepare({
|
|
6095
|
+
* amount: 10000,
|
|
6096
|
+
* order_name: '프리미엄 1개월',
|
|
6097
|
+
* discount_code: 'LAUNCH50', // 미리 적용
|
|
6098
|
+
* allow_discount_code: true, // 결제창에서 고객이 직접 입력하는 것도 허용 (Dodo)
|
|
6099
|
+
* })
|
|
6100
|
+
* // 확정 후 confirm 응답의 amount 는 할인이 반영된 실제 청구액,
|
|
6101
|
+
* // discount_amount 는 차감분이다.
|
|
6092
6102
|
* ```
|
|
6093
6103
|
*
|
|
6094
6104
|
* @remarks
|
|
6095
6105
|
* PayApp 은 `customer_phone` 이 필수입니다(결제요청 수신 번호). 미지정 시 서버가 거부합니다.
|
|
6106
|
+
*
|
|
6107
|
+
* 할인 코드는 MoR 프로바이더(dodo/paddle)에서만 지원됩니다. 그 외 프로바이더에 넘기면
|
|
6108
|
+
* 정가로 조용히 청구되지 않고 400 `discount_code_unsupported` 로 거절됩니다.
|
|
6096
6109
|
*/
|
|
6097
6110
|
async prepare(data) {
|
|
6098
6111
|
const prefix = this.getPublicPrefix();
|
|
@@ -8974,7 +8987,27 @@ var SubscriptionAPI = class {
|
|
|
8974
8987
|
* billing_day: 15, // 매월 15일 결제
|
|
8975
8988
|
* trial_days: 7 // 7일 무료 체험
|
|
8976
8989
|
* })
|
|
8990
|
+
*
|
|
8991
|
+
* // MoR(dodo/paddle) 구독 + 할인 코드
|
|
8992
|
+
* const promo = await client.subscription.create({
|
|
8993
|
+
* plan_name: '프리미엄 플랜',
|
|
8994
|
+
* amount: 9900,
|
|
8995
|
+
* billing_cycle: 'monthly',
|
|
8996
|
+
* provider_price_ref: 'pdt_xxxxx', // PG 카탈로그의 recurring 상품
|
|
8997
|
+
* discount_code: 'LAUNCH50', // 첫 결제에 적용 (몇 주기까지인지는 PG 쿠폰 설정이 결정)
|
|
8998
|
+
* trial_days: 14, // Dodo 만 지원 — Paddle 은 400 trial_days_unsupported
|
|
8999
|
+
* })
|
|
8977
9000
|
* ```
|
|
9001
|
+
*
|
|
9002
|
+
* @remarks
|
|
9003
|
+
* 할인 코드(`discount_code`)와 `trial_days` 의 프로바이더 지원 범위가 다릅니다:
|
|
9004
|
+
* - **Dodo**: 할인 코드 O, 결제창 쿠폰 입력 토글 O, 구독별 체험 일수 O
|
|
9005
|
+
* - **Paddle**: 할인 코드 O(코드→내부 ID 자동 해소), 쿠폰 입력칸은 항상 노출(숨김 불가),
|
|
9006
|
+
* 체험은 요금제(price) 속성이라 구독별 지정 불가
|
|
9007
|
+
* - **toss/stripe/payapp/paypal**: 할인 코드 미지원(400), 체험은 ConnectBase 스케줄러가 처리
|
|
9008
|
+
*
|
|
9009
|
+
* 지원하지 않는 조합은 무시되지 않고 400 으로 거절됩니다 — "쿠폰을 넣었는데 정가 청구",
|
|
9010
|
+
* "체험을 줬는데 즉시 청구" 를 만들지 않기 위함입니다.
|
|
8978
9011
|
*/
|
|
8979
9012
|
async create(data) {
|
|
8980
9013
|
const prefix = this.getPublicPrefix();
|