빌링 서비스 및 오픈소스 도구 분석 분석서 - SeungpilPark/uEngine-bill GitHub Wiki
KillBill
Kill Bill은 2010 년에 시작된 오픈 소스 프로젝트입니다. 청구 및 지불을위한 견고하고 유연한 플랫폼을 제공하는 목적으로 제작되었으며, groupon 에서 이 오픈소스를 사용중입니다. groupon 이외에 몇개의 중소기업에서 사용중임을 명시하고 있지만, 레퍼런스는 많지 않습니다.
그러나 kill-bill 은 composite plan 생성에서 invoice,payment,payment gateway integration 까지의 실제 결제에 필요한 full cycle 을 제공하는 빌링 플랫폼 중 거의 유일한 오픈소스입니다.
따라서 kill-bill 을 오퍼레이팅 하는 과정중에 실제 소스코드의 디버깅을 통해 빌링 플랫폼의 모델구조와 동작원리를 알 수 있는 귀중한 리소스라고 할 수 있습니다.
KillBill 주요 기능
서브스크립션 플랫폼
- 인보이스 및 일할 청구
- 카달로그 다중 단계 계획 및 계획 변경 규칙
- 카달로그 애드온 및 계획 계층 구조
- 카달로그 가격 목록 정책 지원
- Event Based Billing
- Internationalization
- 플러그인 기반 Customized Business Logic
- 지불 기한 초과 집행 (독촉)
- Reporting and Analytics
- API 지원
페이먼트 플랫폼
- Payment Flows
- Payment Routing
- Real-Time Push Notifications
- 플러그인 기반 Payment Provider Support
Zoho Subscription
Zoho Subscriptions는 Killbill 과 마찬가지로 결제에 관련한 full cycle 을 제공하는 Sass 서비스입니다. 오픈소스는 아니지만, Killbill 과 달리 UI 를 제공하기 때문에 오퍼레이팅 과정중에 실제 사용자와 어떻게 대화하여야 하는지 시각적으로 살펴볼 수 있습니다. 또한 무료계정으로도 기능의 제한 없이 서비스 운영 중 일어날 수 있는 다양한 상황에 시뮬레이팅을 해 볼 수 있기 때문에 빌링 플랫폼을 개발하는 데 있어서 중요한 참조 모델이 될 수 있습니다.
Forcs market-place billing
아래와 같은 글로벌 마켓플레이스 플랫폼의 요구사항 있다고 가정합니다.
그외,
- 멀티 통화정책이 가능해야 한다.
- Tax 적용이 가능해야 한다.
- 구매자의 지정 청구일에 구독건들에 대한 일할 청구가 가능해야 한다.
- 환불이 발생할 경우 구독자의 가상화폐(Credit) 가 먼저 생성되고, 관리자 승인이 있을 경우 PG 를 통한 환불이 진행된다.
- 각 상품은 서비스 프로바이더가 존재하며, 최종 수익금 대비 서비스 프로바이더와의 수익 분배를 정할 수 있어야 한다.
- IAM 을 통한 통합인증 토큰을 통해 통신이 가능해야 한다.
위의 포시에스 플랜 요구사항과, 통합시스템 연동의 관점, 그리고 기본적인 빌링 플랫폼이 제공해야 할 기능들을 고려해 볼 때, 최종적으로 아래와 같은 기능 리스트가 필요합니다.
- 통합 인증 토큰 기반 Authorize
- 멀티 테넌시
- 플랜 관리
- 일회성 구매
- 월 구독, 년 구독 설정
- 구매자 관리
- 구독 관리
- 개별 구독건마다 청구일
- 구매자 일할 청구일 지정
- 가상화폐를 통한 환불 처리
- 사용량 기반(Usage) 과금
- 사용량 Log Bulk loading
- 기간제 쿠폰 적용
- 온라인,오프라인 과금 청구 구분
- 과금 기한 초과 대응 정책 및 독촉
- 인보이스 템플릿
- 독촉 템플릿
- 국가별 통화
- 국가별 환율 지정
- Tax
- PG 인티그레이션
- 국가법령에 따른 Payment flow 제한
- 서비스 프로바이더 관리
- 서비스 프로바이더 수익배분률
- Analytics
- API 클라이언트
- UI 제공
다음은 이 기능들이 killbill 과 zoho subscriptions 에서 제공하는지에 대한 비교표입니다.
Feature | killbill | Zoho subscription | uEngine billing | 설명 |
---|---|---|---|---|
- 통합 인증 토큰 기반 Authorize | X | O | O | IAM 을 통하여 토큰 발급 및 밸리데이션을 수행한다. |
- 멀티 테넌시 | O | O | O | 빌링 서비스의 Organization 당 하나의 독립된 영역을 보장한다.Organization 에 접속 가능한 사용자 리스트는 IAM 의 통합인증 유저이다.통합인증 유저가 ADMIN,MEMBER 인지에 따라 ROLE 수행 |
- 플랜 관리 | xml | database | database | 플랜 관리 UI 를 제공하고, database 에 정형화 한다. |
- 일회성 구매 | 트랜잭션 기록 | X | one-time-payment plan 을 통해 구매 | one-time-payment 플랜을 통해 구매할 수 있도록 한다. |
- 월 구독, 년 구독 설정 | O | O | O | 플랜에 billing period 를 지정할 수 있도록 한다. |
- 구매자 관리 | O | O | O | 구매자 관리 API 를 제공한다. |
- 구독 관리 | O | O | O | Subscription 관리 API 를 제공한다. |
- 개별 구독건마다 청구일 | O | O | O | Subscription 마다 billing cycle day 를 지정할 수 있도록 한다. |
- 구매자 일할 청구일 지정 | O | X | O | 구매자 마다 billing cylce day 를 지정하고, 구매자들의 subscription 들이 합산 처리될 수 있도록 한다. |
- 가상화폐를 통한 환불 처리 | X | O | O | Subscription 취소 또는 변경으로 인해 환불 금액이 발생하였을 떄, Credit 를 구매자에게 부여하도록 한다.관리자는 생성된 Credit 에 대해 환불을 완료시킬 수 있다. |
- 사용량 기반(Usage) 과금 | O | O | O | Tier,Volume,Unit 타입의 Usage 기반 과금을 설정할 수 있다.Usage 과금은 현재 구독건에 합산 처리된다. |
- 사용량 Log Bulk loading | X | X | O | 지정된 형식의 Log Event 파일을 읽어들여 Usage 과금을 처리할 수 있다. |
- 기간제 쿠폰 적용(discount,promotion) | X | O | O | 지정된 날짜동안 적용되는 discount 쿠폰을 생성하고, 현존하는 Subscription 에 적용시킬 수 있다. |
- 온라인,오프라인 과금 청구 구분 | X | O | O | 온라인: 구매자와 PG 를 통해 청약을 맺고, 매 결제 텀시 구매자의 의사결정 없이 청약토큰으로 PG 사에 결제요청을 한다. 오프라인: 매 결제 텀시 구매자에게 결제를 요청하고, 구매자는 원하는 결제방식으로 결제를 진행한다. |
- 과금 기한 초과 대응 정책 및 독촉 | O | O | O | 미결제 횟수에 따라 Subscription 의 정지, 또는 삭제 규칙을 정할 수 있다. 미결제에 대한 연제율을 발생시킬 수 있다. 미결제 건에 대한 독촉 메일을 발송한다. |
- 인보이스 템플릿 | O | O | O | 인보이스 템플릿을 등록할 수 있따. |
- 독촉 템플릿 | X | O | O | 톡촉 템플릿을 등록할 수 있다. |
- 국가별 통화 | O | O | O | 국가별 통화 코드, 통화 심볼을 등록하고, Organization 의 기본 통화를 등록시킬 수 있다. 또한 구매자에게 기본 통화로 등록시킬 수 있다. |
- 국가별 환율 지정 | X | O | O | Organization 의 기본 통화를 기준으로 한 국가별 환율을 지정할 수 있다. 구매자의 기본 통화와 제품의 통화가 틀릴경우, 지정해 놓은 환율대로 과금을 집행한다. |
- Tax | Plugin | O | O | Tax 관리 API 를 제공한다. Subscription 마다 Tax 를 적용시킬 수 있다. |
- PG 인티그레이션 | Plugin | O | O | Hosted base pament flow 와 Api base payment flow 두가지 타입에 대비해 개발하도록 한다. |
- 국가법령에 따른 Payment flow 제한 | X | 테넌트 옵션을 통해 지정 | 테넌트 옵션을 통해 지정 | 카드 정보 수집 금지, 오프라인 결제만 허용 등의 옵션을 제공하여, 국가법령에 따른 Payment flow 를 제한할 수 있도록 한다. |
- 서비스 프로바이더 관리 | X | X | O | 프로덕트 별로 서비스 프로바이더를 지정할 수 있다. |
- 서비스 프로바이더 수익배분률 | X | X | O | 프로덕트에 과금이 발생할 경우 서비스 프로바이더와의 수익분배율을 설정 할 수 있다. |
- Analytics | Plugin | O | O | 프로덕트별, 플랜별, 서비스 프로바이더 별 판매현황 API 를 제공한다. |
- API 클라이언트 | X | O | O | Java,Javascript Api Client 를 제공한다. |
- UI 제공 | X | O | O | UI 제공 |
참고표 (기타 빌링 서비스 비교)
Subscription Billing service | |||||||
---|---|---|---|---|---|---|---|
Zoho | Paymentwall | Zuora | Chargify | KillBill | ChedderGetter | Moonclerk | |
가격 정책 | $49/month | 커뮤니케이션 안됨 | Set up fee 별도 $50,000 정도, $1,500~2,000/month | 기본가격$65 small business: $129/month 고객 수 500, 추가 시 $0.99 small business plus: $169/month growing business: $459/month 고객 2000, 추가 시 인당 $0.69 | no fee. Open source. | $79/month + $0.2. | 수익금에따라 자동으로 가격 매겨지며 매 월 변동함. $50 (월 매출$4,000~7,500) |
가격&plan 변동이나 취소 가능 | √ | √ | √ | √ | √ | ||
연동하는 PG사 (한국지원가능만) | 2checkout, paypal express checkout | 자체 PG 제공. | Adyen, bluesnap, paypal express co, | paypal standard | Stripe만 연동함. | ||
API documentation 제공 | √ | √ | √ | √ | |||
특징 | 고객 invoice 발행 날짜의 유연성. | 결제 보안 유지 | plan 기반의 가격 카탈로그 | recurring billing system | plan의 중간변경의 유연성. | 고객별 사용량 tracking 가능 | portable 데이터 |
결제 보안 유지 | 통합 결제 platform 제공 | AR 관리 / 과세 | 이메일 자동화 | plan의 중간변경의 유연성. | 자동 통화전환 계산 | ||
자동 이메일 공지 | 자동 이메일 공지 | 단계별 대기업 billing | 고객 포털 | 자동 이메일 공지 | 자동 이메일 공지 | ||
비즈니스 대시보드 제공 | 사용량을 측정하는 기능은 없음. | 매출 식별 보고서 | 멀티-Gateway 지원 | 자체 PG제공, $40/month + $0.15 | 결제 보안 유지 | ||
과금정책 plan 개수 생성 제한 없음. | plan의 중간변경의 유연성. | CRM상의 견적과 구독 관리 | 사용하기 쉬운 인터페이스 | 연 단위로 계약시 10% 할인적용 | |||
추후에 plan 추가 설정 가능 | CRM상의 구독 통찰과 분석 | PayPal | 추후에 plan 추가 설정 가능 | ||||
시험판 제공 | invoice 생성 자동화 | iPhone App | 시험판 제공 | ||||
사용자당 월 별 판매금 모니터링 | 전자결제 자동화 | recurring billing API | |||||
실시간 조회 가능 | 선불과 연체료 billing | PCI 준수 보안 | |||||
언제든 subscription 계약 해지 가능 | pre-built gateway 통합 | ||||||
기타 내용 | 더 자세한 문의는 한국인 담당자에게 문의 가능 | Adyen-->0.3유로(=$0.33) | Tax rate는 하나의 product당 한 번 정할 수 있다. 더 다양한 tax 기능을 원하면 subscription billable Hook를 사용하여 지연시킨 후에 API로 설정하여 추가 청구 할 수 있다. | 여러 currency의 과금을 받고 싶다면 다른 currency의 갯수에 따라 여러 계정을 만들어야 한다 (예.유로&달러-->계정 2개 생성) |