ナレッジベース
自身のシステムからのZinn®ホスティングの販売
独自の請求パネル、WordPressサイト、またはスクリプトからZinnのホスティングを管理しましょう。APIキーを取得して最初の呼び出しを行うだけで、統合全体を構成する6つの呼び出しが完了します。
あなたは私たちのホスティングを再販しています。クライアントはあなたのものです。あなたの価格、あなたの請求書、あなたの決済プロバイダを使用してください。これは、課金パネル、独自のWordPressサイト、スクリプトなど、現在お使いのシステムから当社のプラットフォームを動かす仕組みです。
クライアントが実際に目にするもの
仕組みの前に:クライアントが当社を目にすることは一切ありません。3つのサーフェスがあり、どれを使うかをお選びいただけます。
| サーフェス | 所有者 | |---|---| | 独自のホスティングパネル(独自ホスト名) | 再販 → あなたのブランドでパネルのホスト名を設定すると、クライアントは panel.yourcompany.com にあなたのおよそのロゴとカラーでサインインします。パネルは同じですが、アドレスはあなたのものです。 | | 独自のウェブサイト | WordPressプラグインにより、ドメイン検索と1クリックのサインインリンクがあなたのサイトに設置され、独自のWooCommerceチェックアウトで注文を受け付けます。 | | お使いの課金パネル | WHMCSまたはHostBillがフロントエンドとして機能し、その背後でモジュールがプロビジョニングを行い、クライアントエリアのボタンから直接ホスティングにサインインします。 |
⛔ どちらを選択する場合でも、クライアントの代金決済業者(マーチャント・オブ・レコード)はあなたです: あなたの価格、あなたの請求書、あなたのVAT番号、あなたの決済プロバイダを使用します。当社は月に1回、卸売価格であなたに請求します。
パネルのホスト名を設定したら、それをWordPressプラグインのパネルアドレスフィールドにのみ入力してください。このAPIが生成するサインインリンクはそれに従います。
4つの導入方法
導入方法には4つあり、内部ではすべて同じ処理を行います:
| | 用途 | |---|---| | WHMCSモジュール | WHMCSショップ | | HostBillモジュール | HostBillショップ | | WordPressプラグイン | 独自のWordPressまたはWooCommerceサイトでの販売 | | API | その他(Blesta、自社システム、cronスクリプトなど) |
1. APIキーを取得する
ダッシュボードのAPIキーに移動し、キーを作成します。必要な権限のみを付与してください:
| 権限 | 理由 | |---|---| | org.read | クライアントアカウントの読み取り | | sites.create | サイトのプロビジョニング | | sites.view | サービスの読み取り | | sites.delete | 解約 | | reseller.view | サービスの一覧表示と使用量の読み取り | | reseller.provision | クライアントのサスペンド、リリース、サインイン |
⛔ 統合機能に reseller.provision 以外の reseller.manage を付与しないでください。 その権限は価格表や自社の決済ゲートウェイの認証情報を編集するためのものです。reseller.provision は、まさに課金パネルやウェブサイトに貼り付けるキーがその権限を必要としないために存在します。
キーは一度だけ表示されます。ウェブサーバーが配信するファイル内には絶対に保存せず、他の認証情報を保管する場所に保管してください。
2. 最初の呼び出しを行う
curl https://api.zinndigital.com/v1/reseller/services \
-H "Authorization: Bearer zdk_live_…"
これにより、プロビジョニングしたすべてのサービスがサイトごとに1行ずつ、属するクライアント、ステータス、および請求額とともに返されます。新規アカウントの場合は空のリストが返されますが、これはエラーではなく正しい結果です。
3. 6つの呼び出しによる完全な統合
WHEN CALL
an order is paid POST /v1/orgs once per CUSTOMER
POST /v1/sites once per SERVICE
they have not paid POST /v1/reseller/services/{siteId}/suspend
they pay POST /v1/reseller/services/{siteId}/unsuspend
they cancel DELETE /v1/sites/{siteId}
"log in to hosting" POST /v1/reseller/services/{siteId}/sso
プロビジョニングは2回の呼び出しで行われ、キーが重要となります:
# 1. 顧客のアカウント - あなたの顧客IDをキーとします
curl -X POST https://api.zinndigital.com/v1/orgs \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: account-4211" \
-d '{"type":"customer","name":"Acme Ltd"}'
# 2. 顧客のサイト - あなたのサービスIDをキーとします
curl -X POST https://api.zinndigital.com/v1/sites \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: service-9915" \
-d '{"org_id":"<from step 1>","product_line":"mainstream","primary_domain":"acme.com"}'
間違えるとコストが発生する2つのルール
- アカウントのキーにはあなたの顧客(CUSTOMER)を、サイトのキーにはあなたのサービス(SERVICE)を使用する。 顧客の2回目の注文は、すでに持っているアカウントに紐づけなければなりません。両方をサービスでキー設定すると、1人の顧客が3つの無関係なアカウントと3つの別々のパネルを持つことになってしまいます。
- すべての
POSTリクエストに、その対象に対する自身のIDから生成したIdempotency-Keyを送信する。 すべての課金システムは再試行を行います(ゲートウェイのコールバックが2回届く、管理者が失敗したプロビジョニングを再実行する、顧客がダブルクリックするなど)。キーがない場合、2回目の試行によって2つ目のサイトが作成され、その料金が請求されます。
単一にまとめてはならない3つの応答
unsuspendが409を返すことがある。 これはあなたではなく、当社の不正対策チームがサイトを保留していることを意味します。メッセージを表示し、再試行しないでください。- **解約のスケジュールは設定されますが、即座に削除されるわけではありません。** 日付は
pending_deletion_atとして返されます。データがまだ削除されていないのに、顧客にデータがすでに消去されたと伝えるのは、何も伝えないことよりも悪いです。 disk_used_bytesはnullになることがあり、nullはゼロではありません。 これは使用量がなかったのではなく、計測できなかったことを意味します。スキップしてください。独自のレコードに0を書き込んではいけません。さもないと、読み取りデータがないサイトに対して緑色の使用量バーを顧客に表示することになります。
4. クライアントをサインインさせる
POST /v1/reseller/services/{siteId}/sso は、クライアントを自分のアカウントにそのままサインイン状態で直接導く、使い捨てのURLを返します。
⛔ ページをレンダリングするときではなく、クリックされたときに生成してください。 このリンクは使い捨てであり、数分以内に有効期限が切れるため、ページ内に書き込まれたリンクは最初のページビューで消費され、あなたとブラウザの間のすべてのキャッシュに残ってしまいます。
5. 代わりにモジュールをインストールする
- WHMCS — モジュールを
modules/servers/zinn/にコピーし、パスワードがAPIキーであるサーバーを追加し、プロダクトに対してプロダクトラインを設定します。接続テストを押すと、実際の呼び出しを行い、プラットフォームからの応答が表示されます。 - HostBill —
includes/modules/Hosting/zinn/にコピーし、同様の方法で接続します。 - WordPress — Zinn® Reseller Toolkit(ドメイン検索、クライアントのホスティングへのサインインリンク、注文支払時のWooCommerceプロビジョニング)を使用します。オープンソース版は <https://github.com/Zinn-Digital/zinn-reseller-toolkit> から、またはダッシュボードのプラグインからダウンロードできます。
6. 本番稼働を開始する
実際の注文を受け付ける前に以下を確認してください:
- モジュールの接続テストが成功するか、最初の
curlがリストを返すこと。 - 価格表が設定されていること(再販 → あなたの価格)。
- 決済ゲートウェイが接続されていること(再販 → 決済ゲートウェイ) — クライアントはあなたのアカウントを通じてあなたに支払います。
- 会社の詳細情報が入力されていること(再販 → 会社情報)。これにより、クライアントの請求書に当社の法人の代わりにあなたの法人名とVAT番号が記載されます。
- 実際の注文を最初から最後まで1件完了させ、サイトが表示されることを確認したこと。
その他の情報
完全なAPIリファレンス(すべてのエンドポイント、仕様から生成されたドキュメント、それぞれに必要な権限を含む)は <https://zinndigital.com/developers/api> にあります。