ナレッジベース

WHMCSでZinn®のホスティングを販売する

WHMCSに無料の Zinn Digital プロビジョニングモジュールをインストールする方法:APIキーと必要な7つの権限、モジュールディレクトリの配置場所と名前が重要である理由、プロダクトフィールド、および各WHMCSボタンの実際の機能について説明します。

Zinn Digital® モジュールは、WHMCS 自身のボタンを当プラットフォーム上での実際の操作に変換します。注文によってクライアントのホスティングがプロビジョニングされます。WHMCS の未払い請求書自動化機能により、ホスティングが停止されます。請求書を支払済みにマークすると、停止が解除されます。キャンセルすると、削除がスケジュールされます。また、クライアントはクライアントエリアで ホスティングパネルにログイン ボタンをクリックするだけで、直接ログインできます。

このモジュールは無料で、GPL-2.0-or-later ライセンスに基づいて提供されており、当プラットフォームへの特権的な経路はありません。このモジュールが行うすべての呼び出しは、ご自身の API キーを使用してご自身で行うことができる文書化されたエンドポイントです。

開始する前に

2つの準備が必要ですが、2つ目の項目でつまづく人が多くいます。

  1. アクティブなプログラムを持つ Zinn® リセラーアカウント。 zinndigital.com でサインアップし、リセラー機能を有効にしてください。
  2. サイトの割り当て枠があるリセラープラン。 クライアントが注文したサイトはお客様のプランの枠を消費するため、十分な空き容量のあるプランが必要です。

⚠️ 接続テストでは、注文が成功するかどうかを判断することはできません。 この機能はプログラムを読み取るだけで何もプロビジョニングしないため、現時点では何も販売できない状態であっても、正常な active アカウントとしてレポートされます。最初のご注文が 「この組織にはホスティングプランがないため、まだサイトをホストできません」 というエラーで失敗した場合は、まさにこの状況が発生しています。リセラープランを購入または拡張してから、再度注文を行ってください。モジュールに問題はありません。

1. API キーの作成

Zinn® ダッシュボードで API keys を開き、正確に11個の権限を持つキーを作成します。

| 権限 | 必要な理由 | | -------------------- | ----------------------------------------------------------- | | org.create | 最初のご注文時にクライアントの Zinn® アカウントを開設します。 | | org.read | クライアントのアカウントを読み取ります。 | | sites.create | サイトをプロビジョニングします。 | | sites.view | サービスとその使用量を読み取ります。 | | sites.delete | サービスを終了します。 | | reseller.view | 販売実績の一覧表示、およびディスク使用量と帯域幅を読み取ります。 | | reseller.provision | 停止、解除、クライアントのサインイン、プランの設定、およびパッケージの変更を行います。 | | billing.view | アップグレードを実行する前に、その費用を読み取ります。 | | sites.manage | ボタンからキャッシュの消去とバックアップの取得を行います。 | | sites.panel_access | WordPress 管理者のパスワードを変更します。 | | hosting.php.manage | アップグレードまたはダウングレッジ時に PHP バージョンを切り替えます。 |

reseller.manage を付与しないでください。 課金パネルに貼り付けられたキーは、未払いによるクライアントの停止とサインインの実行が可能であるべきです。ご自身のお支払いゲートウェイの認証情報を読み取ったり書き換えたりすることはできないようにする必要があります。より大きな権限を付与しなくて済むように reseller.provision が用意されています。 ⛔ org.create は必須です。 この権限がないと、モジュールはお使いのアカウントを読み取ることはできてもアカウントを開設できないため、接続テストは合格するものの、最初のご注文に対して 403 エラーが返されます。 ⛔⛔ テーブル内のすべての権限を付与してください。また、接続テストでは権限の不足を検知できないことに注意してください。 接続テストはリセラープログラムを読み取るだけで何もプロビジョニングしないため、これらの権限のいずれかが欠けているキーであっても緑色の正常ステータスを表示します。その代わり、数ヶ月後に顧客からの操作で不足している権限が必要になった際、その単一の操作に対して 403 エラーが発生することになります。

2. モジュールのインストール

  1. モジュールをダウンロード し、解凍します。
  2. zinn ディレクトリを WHMCS のインストール先にアップロードし、モジュールファイルが modules/servers/zinn/zinn.php に配置されるようにします。

ディレクトリ名は zinn である必要があります。 WHMCS はプロビジョニングモジュールの関数名をディレクトリ名から取得するため、zinn-whmcszinndigital に名前を変更すると、WHMCS の一覧に表示されて選択できるようになるにもかかわらず、実際には一度も呼び出されなくなります(エラーは一切表示されません)。zip ファイルは既に正しい名パターンの名前で解凍されるため、名前を変更しないでください。

3. サーバーの追加

WHMCS で: Configuration → System Settings → Servers → Add New Server の順に移動します。

  • Name: 任意(例: Zinn Digital®
  • Hostname: api.zinndigital.com
  • Type: Zinn Digital®
  • Password: ステップ 1 で取得した API キー

⛔ キーは WHMCS が暗号化して保存する Password フィールドに入力します。プロダクトの設定オプションに入力しないでください。それらはデータベース内でプレーンテキストとして保存され、すべての管理者に表示されてしまいます。この認証情報はクライアントのホスティングを作成および削除する権限を持っています。

Test Connection をクリックします。この操作は単なるフィールドの入力チェックではなく、実際の呼び出しを行って当プラットフォームからの応答をレポートします。

4. プロダクトの作成

Configuration → System Settings → Products/Services に移動し、Module Settings を先ほど追加したサーバーに設定します。フィールドは以下の通りです。

| フィールド | 必須 | 説明 | | ------------------ | -------- | -------------------------------------------------------------------------- | | Product line | はい | 販売する Zinn® のライン — mainstream (マネージド WordPress)、footprint_freewordpresslinuxcloudagencyapp_hostingai_hostinglms_hostingmanaged_databasevector_hostingzinn_computefleet_linuxfleet_enterprisemail、または reseller。 | | Stack | はい | ビルドする内容: wordpress (デフォルト)、woocommercephpstaticnodeone_clickheadless_cmsnextcloud、または 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 に対してべき等であるため、再試行されたプロビジョニングでは 2 つ目の請求が発生する代わりに同じサイトが返されます。

WHMCS の各アクションの動作

| WHMCS のアクション | プラットフォーム側での動作 | | --------------------------- | ---------------------------------------------------------------------------------------- | | Create | クライアントの Zinn® アカウントを作成(または既存のアカウントを再利用)し、サイトをプロビジョニングします。 | | Suspend | 未払いによりサイトを保留状態にします。コンテンツは保持され、削除はされません。 | | Unsuspend | お客様による保留を解除します。 | | Terminate | 猶予期間を設けて、サイトの削除をスケジュールします。日付はクライアントエリアに表示されます。 | | Usage update | 1 日に 1 回、すべてのサービスのディスク使用量と帯域幅を更新します。 | | Log in to hosting panel | クライアントのパネルへ直接アクセスできる、1 回限りの使い捨てサインインリンクを開きます。 | | Change Package | サービスをアップグレードまたはダウングレッジします。パッケージを移動し、新しいプロダクトで指定されている場合は PHP バも変更します。 | | Change Password | WordPress 管理者のパスワードを設定します。該当するアカウントを持たないスタックでは、このボックスは表示されません。 | | Renew | サービスが継続して存在することを確認します。Zinn® ホスティングは継続的であるため、延長すべきリモートの契約期間はありません。 | | Sync Usage / Purge Cache / Take Backup | 管理者サービスページのボタンです。クライアントはクライアントエリアで「キャッシュの消去」と「バックアップの取得」を利用できます。 | | Service tab | ステータス、プラン、ディスク、帯域幅、スケジュールされた削除、および誰が停止を実行したかを表示します。 | | Import | ListAccounts がすべてのページを読み取るため、最初のページでインポートが勝手に停止することはありません。 |

アップグレード: 誰が誰に請求するか

Zinn® が注文やアップグレードに関してクライアントに直接請求することはありません。 お客様が WHMCS を通じてクライアントに請求し、当社はお客様に対して卸売明細書に基づいて請求します。したがって、Change Package はクライアントの権利と次回の明細書の請求行を移動させるだけで、クレジットカードの決済には触れません。WHMCS がすでにクライアントから支払いを受け取り、独自の按分計算を行っています。

クライアントの 2 つ目のサービス。 同じプラン内の場合は、そのプラン自体のサイト割り当て枠内の別のサイトとなり、追加の枠は付与されません。異なるプランの場合は拒否されます。現在のプランを置き換えると、2 つのサービスのうちの一方が請求対象外になってしまうためです。両方を同じプランで販売するか、WHMCS 内で別々のクライアントレコードとして設定してください。

Change Password は WordPress 専用です。 Zinn® ホスティングには単一の「サービスパスワード」が存在せず(クライアントはサインインボタンでパネルにアクセスします)、phpstatic サイトには変更対象のアカウントが存在しません。そのため、機能しないボックスを表示する代わりに、WHMCS はボックス自体を非表示にします。

2つにまとめることのできない3つの回答

  • Unsuspend が拒否応答を返す場合があります。 これは、お客様ではなく当社の不正対策チームによってサイトが停止されたことを意味し、どの課金パネルからも解除することはできません。メッセージにその旨が表示されるため、再試行する代わりに管理者にご確認ください。
  • Terminate は削除をスケジュールするものであり、実行するものではありません。 日付は pending_deletion_at として返され、クライアントエリアに表示されます。データがまだ削除されていないにもかかわらず、顧客にデータがすでに削除されたと伝えることは、何も伝えないことよりも悪影響を及ぼします。
  • ディスク使用量と帯域幅が不明になる場合がありますが、不明はゼロではありません。 読み取りが取得できなかった場合、モジュールは 0 と書き込む代わりに数値をそのまま維持します。そうしないと、当社側で読み取りデータがないサイトに対しても、WHMCS が顧客に対して安心させるような空の使用量バーを表示してしまうためです。

トラブルシューティング

接続テストは成功するが、最初のご注文が権限エラーで失敗する。 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 リファレンスに記載されています。

まだ解決しませんか?

すべてのプランにサポートが含まれており、お客様の母国語でお答えします。

サポートに連絡 すべての記事