지식 베이스

WHMCS에서 Zinn® 호스팅 판매

WHMCS에 무료 Zinn Digital® 프로비저닝 모듈을 설치하십시오. API 키와 필요한 7가지 권한, 모듈 디렉터리의 위치 및 이름이 중요한 이유, 제품 필드, 각 WHMCS 버튼의 실제 작동 방식을 안내합니다.

Zinn Digital® 모듈은 WHMCS 자체 버튼을 당사 플랫폼의 실제 작업으로 전환합니다. 주문이 들어오면 고객의 호스팅이 프로비저닝됩니다. WHMCS의 연체 인보이스 자동화 기능은 호스팅을 정지시킵니다. 인보이스를 결제 완료로 표시하면 정지가 해제됩니다. 취소하면 삭제가 예약됩니다. 그리고 고객은 고객 영역에서 바로 로그인할 수 있는 호스팅 패널에 로그인 버튼을 이용할 수 있게 됩니다.

이 모듈은 무료이며, GPL-2.0-or-later 라이선스가 적용되고, 당사 플랫폼에 대한 어떠한 특권 경로도 갖지 않습니다. 즉, 모듈이 호출하는 모든 엔드포인트는 문서화되어 있어 귀하가 직접 자체 API 키를 사용해 호출할 수도 있습니다.

시작하기 전에

두 가지 사항이 필요하며, 두 번째 사항에서 많은 분들이 실수를 겪습니다.

  1. 활성화된 프로그램이 있는 Zinn® 리셀러 계정. zinndigital.com에서
  2. 가입하고 리셀링 기능을 켜십시오.

  3. 사이트 허용량이 남아 있는 리셀러 플랜. 고객이 주문하는 사이트는 귀하의
  4. 플랜 허용량에서 차감되므로, 여유 공간이 있는 플랜이 필요합니다.

⚠️ Test Connection 기능은 주문의 성공 여부를 알려주지 못합니다. 이 기능은 리셀러 프로그램을 조회하기만 하고 아무것도 프로비저닝하지 않으므로, 아직 아무것도 판매할 수 없는 계정이더라도 정상적인 active 상태로 보고합니다. 첫 주문이 "This organization has no hosting plan, so it cannot host a site yet" 오류와 함께 실패한다면 바로 이 상황에 해당합니다. 리셀러 플랜을 구매하거나 연장한 후 주문을 다시 진행하십시오. 모듈에는 아무런 문제가 없습니다.

1. API 키 생성

Zinn® 대시보드에서 API 키를 열고 정확히 다음 11개 권한을 가진 키를 생성하십시오.

권한필요한 이유
org.create고객의 첫 주문 시 해당 고객의 Zinn® 계정을 개설합니다.
org.read고객 계정을 조회합니다.
sites.create사이트를 프로비저닝합니다.
sites.view서비스 및 사용량을 조회합니다.
sites.delete종료합니다.
reseller.view판매 내역을 나열하고 디스크 및 대역폭을 조회합니다.
reseller.provision정지, 정지 해제, 고객 로그인, 플랜 설정 및 패키지 변경을 수행합니다.
billing.view업그레이드를 수행하기 전에 비용이 얼마인지 확인합니다.
sites.manage버튼을 통해 캐시를 삭제하고 백업을 생성합니다.
sites.panel_accessWordPress 관리자 비밀번호를 변경합니다.
hosting.php.manage업그레이드 또는 다운그레이드 시 PHP 버전을 전환합니다.

⛔ reseller.manage 권한은 부여하지 마십시오. 결제 패널에 붙여넣는 키는 미납 고객을 이용 정지시키고 로그인시키는 기능만 수행하면 됩니다. 귀하의 자체 결제 게이트웨이 자격 증명을 읽고 수정할 수 있어서는 안 됩니다. 더 큰 권한을 부여할 필요가 없도록 reseller.provision이 제공되는 것입니다. ⛔ org.create는 필수 항목입니다. 이 권한이 없으면 모듈이 계정을 읽을 수는 있지만 개설할 수는 없으므로, Test Connection은 통과하더라도 첫 주문에서 403 응답이 반환됩니다. ⛔⛔ 표의 모든 권한을 부여하십시오. 권한이 누락되었더라도 Test Connection에서는 이를 확인할 수 없습니다. 이 기능은 리셀러 프로그램을 조회할 뿐 아무것도 프로비저닝하지 않으므로, 이 중 어떤 권한이 누락된 키라 하더라도 정상 상태로 표시됩니다. 대신 몇 달 후 고객이 해당 누락된 권한이 필요한 단 하나의 작업을 수행할 때 403 오류를 마주하게 됩니다.

2. 모듈 설치

  1. 모듈을 다운로드하고 압축을 풉니다.
  2. 모듈 파일이 modules/servers/zinn/zinn.php에 위치하도록 zinn 디렉터리를
  3. 귀하의 WHMCS 설치 경로에 업로드하십시오.

⛔ 디렉터리 이름은 반드시 zinn이어야 합니다. WHMCS는 디렉터리 이름에서 프로비저닝 모듈의 함수 이름을 파생시키므로, 이름을 zinn-whmcs나 zinndigital로 변경하면 WHMCS 목록에 표시되고 선택할 수는 있지만 아무런 오류 표시 없이 전혀 호출되지 않는 모듈이 생성됩니다. zip 파일은 이미 올바른 이름으로 압축 해제되므로 이름을 변경하지 마십시오.

3. 서버 추가

WHMCS에서 환경설정 → 시스템 설정 → 서버 → 새 서버 추가로 이동합니다.

  • 이름: 임의의 이름(예: Zinn Digital®)
  • 호스트 이름: api.zinndigital.com
  • 유형: Zinn Digital®
  • 비밀번호: 1단계에서 생성한 API 키

⛔ API 키는 WHMCS가 암호화하여 저장하는 비밀번호 필드에 입력해야 합니다. 제품 구성 옵션에 넣지 마십시오. 해당 옵션은 데이터베이스에 평문으로 저장되어 모든 관리자에게 노출되며, 이 자격 증명은 고객의 호스팅을 생성하고 삭제할 수 있는 권한을 가집니다.

Test Connection을 누르십시오. 이 기능은 단순히 필드가 채워져 있는지만 확인하는 것이 아니라, 실제 호출을 수행하여 당사 플랫폼의 응답 결과를 보고합니다.

4. 제품 생성

환경설정 → 시스템 설정 → 제품/서비스로 이동한 후, 모듈 설정을 방금 추가한 서버로 지정하십시오. 필드 목록은 다음과 같습니다.

필드필수 여부설명
Product line예판매할 Zinn® 제품군 — mainstream(매니지드 WordPress), footprint_free, wordpress, linux, cloud, agency, app_hosting, ai_hosting, lms_hosting, managed_database, vector_hosting, zinn_compute, fleet_linux, fleet_enterprise, mail 또는 reseller.
Stack예구축할 환경: wordpress(기본값), woocommerce, php, static, node, one_click, headless_cms, nextcloud 또는 owncloud.
Application아니요one_click 및 headless_cms 스택 전용 — 설치할 애플리케이션입니다. 다른 스택에서는 이미 무엇을 설치할지 결정되어 있으므로 애플리케이션을 지정하면 거부됩니다.
PHP version아니요예: 8.3. 제품군의 기본값을 사용하려면 비워 두십시오. 해당 제품군에서 제공하지 않는 버전을 입력하면 지원되는 목록과 함께 거부됩니다.
Plan code예이 제품이 판매하는 Zinn® 플랜입니다. GET /v1/reseller/prices에서 귀하의 플랜 목록을 확인할 수 있습니다. 이 항목이 없는 주문은 거부됩니다 — 아래 경고를 참조하십시오.
Billing interval아니요monthly(기본값) 또는 annual — 해당 고객에 대해 귀하의 도매 청구 내역이 발행되는 주기입니다. 귀하가 자체 고객에게 청구하는 금액은 WHMCS 제품에서 설정되며 영향을 받지 않습니다.

⛔⛔ Plan code는 필수이며, 플랜 코드가 없는 주문은 의도적으로 거부됩니다. 2026-09-01 이전까지는 이 필드가 형식적이었고 아무것도 이를 읽지 않았기 때문에, 모듈이 플랜이 전혀 적용되지 않은 호스팅을 주문했으며 그에 따른 모든 결과는 아무런 경고 없이 발생했습니다. 도매 청구서는 고객의 활성 구독을 기반으로 작성되므로 해당 서비스에 대한 항목이 없었고 서비스가 유지되는 동안 귀하에게 아무런 비용도 청구되지 않았습니다. 또한 고객은 아무런 허용량도 상속받지 못해 사이트에 디스크나 파일 할당량이 적용되지 않았으며, Change Package 기능으로 변경할 대상이 없었기 때문에 판매된 업그레이드를 수행할 수 없었습니다. 사이트는 그동안 완벽하게 프로비저닝되어 서비스되었습니다.

이제 모듈은 주문을 대신 거부합니다. 모듈이 안전하게 추측할 수 있는 플랜이 없기 때문입니다. 임의로 추측할 경우 귀하가 선택하지 않았고 가격을 책정하지 않았을 수도 있는 플랜으로 호스팅이 프로비저닝되며, 즉시 확인할 수 있는 거부 알림과 달리 청구서가 도착해야만(그마저도 발견되지 않을 수 있음) 드러나게 됩니다.

Auto Setup은 원하는 방식으로 설정하십시오. 모듈은 WHMCS 서비스 ID에 대해 멱등성을 유지하므로, 프로비저닝을 다시 시도해도 두 번째 비용이 청구되지 않고 동일한 사이트가 반환됩니다.

각 WHMCS 작업의 동작 방식

WHMCS 작업당사 시스템에서의 처리 내용
Create고객의 Zinn® 계정을 생성(또는 기존 계정을 재사용)하고 사이트를 프로비저닝합니다.
Suspend미납으로 인해 사이트를 이용 정지 처리합니다. 콘텐츠는 보존되며 아무것도 삭제되지 않습니다.
Unsuspend귀하의 정지 조치를 해제합니다.
Terminate유예 기간을 두고 사이트 삭제를 예약합니다. 날짜는 고객 영역에 표시됩니다.
Usage update하루에 한 번, 모든 서비스의 디스크 및 대역폭을 갱신합니다.
Log in to hosting panel고객 패널로 바로 연결되는 1회용 단일 접속 링크를 엽니다.
Change Package서비스를 업그레이드 또는 다운그레이드합니다. 패키지를 이전하며, 새 제품에 PHP 버전이 지정된 경우 해당 버전으로 변경합니다.
Change PasswordWordPress 관리자 비밀번호를 설정합니다. 해당 계정이 없는 스택에서는 이 상자가 표시되지 않습니다.
Renew서비스가 여전히 존재하는지 확인합니다. Zinn® 호스팅은 연속적이므로 연장할 원격 기간이 없습니다.
Sync Usage / Purge Cache / Take Backup관리자 서비스 페이지의 버튼입니다. 고객은 고객 영역에서 Purge Cache 및 Take Backup을 이용할 수 있습니다.
Service 탭상태, 플랜, 디스크, 대역폭, 예약된 삭제 일정 및 정지 조치를 취한 주체를 표시합니다.
ImportListAccounts가 모든 페이지를 읽으므로 가져오기가 첫 페이지에서 조용히 중단되지 않습니다.

업그레이드: 비용 청구 주체

주문 시나 업그레이드 시 모두 고객에게 Zinn®이 인보이스를 직접 청구하지 않습니다. 귀하는 WHMCS를 통해 고객에게 요금을 청구하고, 당사는 도매 청구서를 통해 귀하에게 요금을 청구합니다. 따라서 Change Package는 고객의 권한과 귀하의 다음 청구서 항목만 이동시키며 카드 결제에는 관여하지 않습니다. 고객에 대한 결제 처리 및 일할 계산은 이미 WHMCS에서 완료되었기 때문입니다.

고객의 두 번째 서비스. 동일한 플랜인 경우 해당 플랜 자체의 사이트 허용량에 속하는 또 다른 사이트가 되며 추가 권한은 부여되지 않습니다. 서로 다른 플랜인 경우 거부됩니다. 사용 중인 플랜을 교체하면 두 서비스 중 하나는 요금이 청구되지 않은 상태로 남기 때문입니다. 두 서비스를 동일한 플랜으로 판매하거나, WHMCS에서 해당 고객을 별도의 고객 레코드로 설정하십시오.

Change Password는 WordPress에만 제공됩니다. Zinn® 호스팅에는 단일 "서비스 비밀번호"가 없으며(고객은 로그인 버튼을 통해 패널에 접속함), php 또는 static 사이트에는 변경할 애플리케이션 계정이 없습니다. WHMCS는 동작하지 않는 입력창을 보여주는 대신 완전히 숨깁니다.

둘로 단순화해서는 안 되는 세 가지 응답

  • Unsuspend가 거부 응답을 반환할 수 있습니다. 이는 귀하가 아닌 당사의 어뷰징 대응팀에
  • 의해 사이트가 정지되었음을 의미하며, 어떠한 결제 패널로도 이를 해제할 수 없습니다. 메시지에 해당 내용이 안내되어 있으니, 재시도하지 마시고 관리자에게 보여주십시오.

  • Terminate는 삭제를 즉시 실행하지 않고 일정을 예약합니다. 날짜는
  • pending_deletion_at으로 반환되며 고객 영역에 표시됩니다. 데이터가 아직 남아 있는데 이미 삭제되었다고 고객에게 알리는 것은 아무 말도 하지 않는 것보다 더 나쁩니다.

  • 디스크 및 대역폭은 알 수 없음 상태일 수 있으며, 알 수 없음은 0이 아닙니다. 측정값을
  • 가져올 수 없을 때 모듈은 0을 쓰는 대신 값을 그대로 둡니다. 그렇지 않으면 WHMCS가 측정값이 없는 사이트에 대해 고객에게 안도감을 주는 빈 사용량 표시 막대를 보여주게 됩니다.

문제 해결

Test Connection은 통과하지만 첫 주문이 권한 오류로 실패합니다. API 키에 org.create 권한이 누락되었습니다. 모듈이 사이트를 생성하려면 먼저 고객의 계정을 개설할 수 있어야 합니다.

조직에 호스팅 플랜이 없다는 메시지와 함께 주문이 실패합니다. 리셀러 플랜의 사이트 허용량이 남아 있지 않거나, 아직 플랜을 보유하고 있지 않은 상태입니다. 위의 시작하기 전에를 참조하십시오.

스택 관련 메시지가 표시되며 주문이 실패합니다. 제품의 Stack 필드가 비어 있거나 당사에서 구축하지 않는 항목이 지정되었습니다. 다른 스택을 판매하는 것이 아니라면 wordpress로 설정하십시오.

취소가 실패합니다. 모듈 버전이 1.0.0 이상인지 확인하십시오. 이전 빌드에서는 삭제 확인을 전송하지 않아 모든 종료 요청이 거부되었고, 이로 인해 서비스가 계속 실행되어 요금이 청구되었습니다.

특정 필드를 지정하는 거부 메시지가 표시됩니다. 당사의 유효성 검사 오류는 메시지 뒤의 대괄호 안에 필드와 이유를 표시합니다(예: (php_version: 7.2 is not offered on this product line)). 이것이 조치 가능한 핵심 정보이며, 그 앞의 문장은 의도적으로 일반적인 안내 문구로 구성되어 있습니다.

다운로드 검증

모든 압축 파일은 당사 호스트 이름에서 TLS를 통해 제공되며 타사 호스트로 절대 리디렉션되지 않습니다. SHA-256 체크섬은 다운로드 페이지의 다운로드 링크 옆에 기재되어 있습니다. 다운로드 후 다음 명령어로 비교하십시오.

  • macOS 또는 Linux: shasum -a 256 zinn-whmcs-1.0.0.zip
  • Windows: certutil -hashfile zinn-whmcs-1.0.0.zip SHA256

WHMCS를 사용하지 않으시나요?

HostBill 모듈과 기타 시스템을 위한 단일 파일 PHP 클라이언트가 모두 무료로 제공되며, 동일한 다운로드 페이지에서 확인할 수 있습니다. 모듈이 사용하는 모든 엔드포인트는 API 참조 문서에 안내되어 있습니다.

블로그 최신 글

호스팅, SEO 및 대규모 사이트 운영에 대해 작성한 글입니다.

호스팅 계층에서의 SEO 및 링크 빌딩: 2026년 운영자의 관점

2026년 호스팅이 색인 생성과 링크 자산에 미치는 영향: 페이지의 색인 상태 유지, 구축 전 기존 도메인 검증, 검색 엔진 흔적 없는 링크 빌딩, 그리고 인프라가 SEO를 위해 할 수 있는 것과 할 수 없는 것에 대한 솔직한 분석.

게시물 읽기 →

WordPress를 빠르고 안전하게 만들기: 성능 및 플러그인 체크리스트

빠르고 안전한 WordPress를 위한 실용적인 체크리스트: 서버 수준 캐싱, 사이트별 객체 캐시, 사용할 가치가 있는 소수의 플러그인, 최신 스택 유지, 그리고 절대 캐시해서는 안 되는 WooCommerce 페이지.

게시물 읽기 →

2026년 관리형 웹 호스팅을 선택하는 방법: 구매자 가이드

제어판이 있는 저렴한 서버와 우수한 매니지드 호스팅을 실제로 구분 짓는 요소(마이그레이션, 백업, 격리, 진정한 캐싱 및 정직한 확장성), 그리고 계약하기 전에 이를 평가하는 방법.

게시물 읽기 →

블로그 읽기 →

아직 해결되지 않았나요?

모든 요금제에 지원 서비스가 포함되어 있으며, 고객센터는 하루 24시간 열려 있습니다. 또한 58개의 지원 언어 중 편하신 언어로 문의해 주시면 고객님의 언어로 답변해 드립니다.

지원팀에 문의 → 모든 글 →