forked from SeungpilPark/uEngine-bill
-
Notifications
You must be signed in to change notification settings - Fork 7
서브스크립션 생성 및 청구 금액 정산 분석서
SeungpilPark edited this page Mar 20, 2017
·
1 revision
이 섹션에 기술하는 내용은 과금 규칙에 대한 오퍼레이팅 및 코드 디버깅 결과를 조합하여,
- 테넌트 별 과금 규칙 셀프 서비스를 제공하고,
- 동적카달로그 배포시 저장된 과금 규칙을 테넌트 별로 제공하여 오리지널 킬빌의 카달로그 xml rule 과 동일한 기능을 제공하고,
- ui 로 이를 제어할 수 있는 화면을 제공함을 위함이다.
- 버젼1 제공목표 : 테넌트 별 과금 규칙을 생성, 적용한다.
- 버전2 제공목표 : 프로덕트별 과금 규칙을 별도 생성, 적용한다.
- 버젼2 는 killbill 의 언다큐먼트(다큐먼트로 제공되지 않고 소스코드로 존재) 요소이다.
아래의 코드는 킬빌로의 Rest 통신을 인터셉트하여, 서브스크립션의 버젼별 가격을 제공하기 위한 로직처리의 일부분이다.
//서브스크립션 추가
if (requestURI.equals("/rest/v1/subscriptions") && request.getMethod().toLowerCase().equals("post")) {
Map map = new ObjectMapper().readValue(request.getInputStream(), Map.class);
body = JsonUtils.marshal(map);
plan_names.add(map.get("planName").toString());
accountId = map.get("accountId").toString();
command = "createSubscription";
}
//서브스크립션 변경
else if (requestURI.startsWith("/rest/v1/subscriptions/") && request.getMethod().toLowerCase().equals("put") && occurance == 4) {
Map map = new ObjectMapper().readValue(request.getInputStream(), Map.class);
body = JsonUtils.marshal(map);
plan_names.add(map.get("planName").toString());
accountId = map.get("accountId").toString();
command = "updateSubscription";
}
//createEntitlementWithAddOns
else if (requestURI.equals("/rest/v1/subscriptions/createEntitlementWithAddOns") && request.getMethod().toLowerCase().equals("post")) {
List<Map> list = new ObjectMapper().readValue(request.getInputStream(), List.class);
body = JsonUtils.marshal(list);
for (Map map : list) {
accountId = map.get("accountId").toString();
plan_names.add(map.get("planName").toString());
}
command = "createEntitlementWithAddOns";
}
//createEntitlementsWithAddOns
else if (requestURI.equals("/rest/v1/subscriptions/createEntitlementsWithAddOns") && request.getMethod().toLowerCase().equals("post")) {
List<Map> list = new ObjectMapper().readValue(request.getInputStream(), List.class);
body = JsonUtils.marshal(list);
for (Map map : list) {
List<Map> baseEntitlementAndAddOns = (List<Map>) map.get("baseEntitlementAndAddOns");
for (Map entitlementAndAddOn : baseEntitlementAndAddOns) {
plan_names.add(entitlementAndAddOn.get("planName").toString());
accountId = entitlementAndAddOn.get("accountId").toString();
}
}
command = "createEntitlementsWithAddOns";
}
- POST /rest/v1/subscriptions
- PUT /rest/v1/subscriptions
- POST /rest/v1/subscriptions/createEntitlementWithAddOns
- POST /rest/v1/subscriptions/createEntitlementsWithAddOns