메타모델 생성 및 가상계좌 테스트(달러) 설계서 - SeungpilPark/uEngine-bill GitHub Wiki

Plans

각 플랜에는 이름이 있으며 단일 제품 구매를 나타낸다. 그 외에도 계획 매개 변수는 단계별로 정렬된다. 위의 그림에서는 30 일 평가판과 무제한 반복되는 EVERGREEN 단계가 있는 계획을 보여준다. 계획의 각 단계마다 다음을 지정해야 한다.

  • Phase Type: TRIAL, DISCOUNT, FIXEDTERM, EVERGREEN 중 하나 일 수 있다.
  • Duration: 일, 월, 년 단위의 단계 길이 또는 UNLIMITED
  • Billing Period: 청구 할 빈도. 일일, 주간, 월간, 수요일, 월간, 분기 별, 연수, 연례, BIENNIAL 또는 NO_BILLING_PERIOD가 될 수 있다.
  • Recurring Price: 결제 기간마다 지불해야하는 가격. 가격은 카탈로그가 지원하는 모든 통화에 대해 숫자 값을 지정해야한다.
  • Fixed Price: 정기 가격 이외에 기간의 시작 부분에 부과되는 고정 가격. 이것은 다중 통화 가격이기 때문에 모든 통화에 대해 지정해야한다.
  • Usage Sections: 사용량 기반 과금 플랜
<plan name="discount-standard-monthly">
    <product>Standard</product>
    <initialPhases>
        <phase type="TRIAL">
            <duration>
                <unit>DAYS</unit>
                <number>30</number>
            </duration>
        <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
            <fixedPrice> <!-- empty price implies $0 -->
            </fixedPrice>
        </phase>
        <phase type="DISCOUNT">
            <duration>
                <unit>MONTHS</unit>
                <number>3</number>
            </duration>
            <billingPeriod>MONTHLY</billingPeriod>
            <recurringPrice>
                <price>
                    <currency>GBP</currency>
                    <value>50.00</value>
                </price>
                <price>
                    <currency>USD</currency>
                    <value>66.00</value>
                </price>
            </recurringPrice>
        </phase>
    </initialPhases>
    <finalPhase type="EVERGREEN">
        <duration>
            <unit>UNLIMITED</unit>
        </duration>
        <billingPeriod>MONTHLY</billingPeriod>
        <recurringPrice>
            <price>
                <currency>GBP</currency>
                <value>75.00</value>
            </price>
            <price>
                <currency>USD</currency>
                <value>100.00</value>
            </price>
        </recurringPrice>
    </finalPhase>
</plan>

Price list

가격 목록은 선택 또는 교환을 위해 그룹화 된 계획 모음이다. 특정 고객 그룹에게 제시 할 할인 가격을 식별하는 데 사용된다.

<priceLists>
    <defaultPriceList name="DEFAULT">
        <plans>
            <plan>standard-monthly</plan>
            <plan>sports-monthly</plan>
            <plan>super-monthly</plan>
        </plans>
    </defaultPriceList>
</priceLists>

Rules

카탈로그의 Rules 에서는 계획 작성, 취소 및 변경에 대한 빌링 프레임워크의 대응을 명시한다. 여기서는 가능한 가장 간단한 규칙 집합을 제공한다.

Change Policy [IMMEDIATE] - 계획 변경을 적용 할 시기를 결정하는 데 사용되는 정책. IMMEDIATE 정책은 모든 계획 변경 사항이 계획 변경 요청시 즉시 적용될 것이라고 명시한다.

Change Alignment [START_OF_BUNDLE] - 변경 정렬은 새 계획 단계가 이전 계획 단계와 어떻게 정렬되어야 하는지를 결정한다. 이 정책은 계획 단계가 항상 번들의 시작과 일치해야한다고 말한다. 예를 들어, 모든 계획에 대해 30 일 평가판을 사용하는 경우 고객은 여러 plan 간에 여러 번 앞뒤로 이동할 수 있지만 plan 시작은 항상 번들의 시작 부분에 맞춰야하기 때문에 plan은 원래 시작으로부터 30 일 동안 같은 시간에 종료된다.

Cancel Policy [IMMEDIATE] - 계획 취소시기를 결정한다. 여기서 선택된 정책은 요청을 받는 시점에 즉시 취소된다는 것을 의미한다.

Create Alignment [START_OF_BUNDLE] - 새로 생성 된 애드온 계획의 단계를 조정하는 방법을 결정한다. 선택할 수있는 START_OF_BUNDLE 은 추가 계획과 관련된 모든 평가판이 기본 계획의 평가판과 일치 함을 의미한다.

Billing Alignment [ACCOUNT] - 다른주기에 따라 다른 요금이 청구될 수 있습니다. 결제 정렬 ACCOUNT는 결제가 항상 고객 계정의 청구주기 날짜와 일치한다는 것을 의미한다.

Price List [DEFAULT] - 고객이 계획을 변경함에 따라 새로운 계획을 결정하기 위해 어떤 가격표를 사용해야하는지에 대한 비즈니스 규칙이 있을 수 있다. 이 규칙 세트를 사용하면 이러한 규칙을 표현할 수 있다.

<rules>
    <changePolicy>
        <changePolicyCase>
            <policy>IMMEDIATE</policy>
        </changePolicyCase>
    </changePolicy>
    <changeAlignment>
       <changeAlignmentCase>
            <alignment>START_OF_BUNDLE</alignment>
        </changeAlignmentCase>
    </changeAlignment>
    <cancelPolicy>
        <cancelPolicyCase>
            <policy>IMMEDIATE</policy>
        </cancelPolicyCase>
    </cancelPolicy>
    <createAlignment>
        <createAlignmentCase>
            <alignment>START_OF_BUNDLE</alignment>
        </createAlignmentCase>
    </createAlignment>
    <billingAlignment>
        <billingAlignmentCase>
            <alignment>ACCOUNT</alignment>
        </billingAlignmentCase>
    </billingAlignment>
    <priceList>
       <priceListCase>
            <toPriceList>DEFAULT</toPriceList>
       </priceListCase>
    </priceList>
</rules>
phaseType EVERGREEN
fromProduct Sports
fromProductCategory BASE
fromBillingPeriod MONTHLY
fromPriceList DEFAULT
toProduct Standard
toProductCategory BASE
toBillingPeriod MONTHLY
toPriceList DEFAULT
<rules>
...
    <changePolicy>
        <changePolicyCase>
            <phaseType>TRIAL</phaseType>
            <policy>IMMEDIATE</policy>
        </changePolicyCase>
        <changePolicyCase>
            <phaseType>EVERGREEN</phaseType>
            <fromProduct>Sports</fromProduct>
            <toProduct>Standard</toProduct>
            <policy>END_OF_TERM</policy>
        </changePolicyCase>
        <changePolicyCase>
            <policy>END_OF_TERM</policy>
        </changePolicyCase>
    </changePolicy>
...
</rules>

컨텍스트에는 세 가지 유형이 있다.

  • 생성 컨텍스트: 새 구독에 대한 컨텍스트를 제공.
  • 구독 컨텍스트: 계획, 단계, 가격 목록, 제품 등의 세부 정보를 포함하여 기존 구독의 컨텍스트를 제공.
  • 컨텍스트 변경: 계획 변경의 경우에 사용되는 것으로 올바른 구독 단계뿐만 아니라 새로운 대상 계획의 세부 사항에 대한 컨텍스트를 제공.
Creation Context Subscription Context Change Context
product product phaseType
productCategory productCategory fromProduct
billingPeriod billingPeriod fromProductCategory
priceList priceList fromBillingPeriod
phaseType fromPriceList
toProduct
toProductCategory
toBillingPeriod
toPriceList

Add-ons

<products>
    <product name="Standard">
        <category>BASE</category>
    </product>
    <product name="Sports">
        <category>BASE</category>
        <available>
            <addonProduct>OilSlick</addonProduct>
            <addonProduct>RemoteControl</addonProduct>
        </available>
    </product>
    <product name="Super">
        <category>BASE</category>
        <included>
            <addonProduct>OilSlick</addonProduct>
        </included>
        <available>
            <addonProduct>RemoteControl</addonProduct>
        </available>
    </product>
    <product name="OilSlick">
        <category>ADD_ON</category>
    </product>
    <product name="RemoteControl">
        <category>ADD_ON</category>
    </product>
</products>
⚠️ **GitHub.com Fallback** ⚠️