
この出版物の前提条件はずっと前に登場しました。 多数の仮想サーバーを持つクライアントの1つが、請求APIを使用できるかどうかを尋ねました。 当時、正直なところ、私たちはそのような対話の準備ができておらず、既成のソリューションを提供できませんでした。
夏の初め以来、私たちはこのような質問をさらにいくつか受け取っており、それらを未回答のままにしておくことはできないことに気付きました。 今日は、当社の請求APIを使用して、任意の数量の仮想サーバーを注文する方法を説明します。
請求システムとして、ロシアの会社ISPsystemの製品-BILLmanager4を使用します。 すべてのISPsystem製品用のオープンAPIがあり、公式ドキュメントサイトispdoc.comで多少説明されています
コマンドラインからAPIを操作し、mgrctlインタープリターに直接アクセスするか、ブラウザーのアドレスバー(またはWebサーバーにリクエストを送信する他のアプリケーション:curl、wgetなど)にアクセスできます。
ドキュメントに基づいて、任意の製品にリクエストを行うことができますが、請求を処理する場合、一定量の情報が必要になります。これはホスティングプロバイダーの側からのみ利用できます。
仮想サーバーを注文するためのリクエストは、たとえば、KVM Ferrumを1か月間自動更新し、ISPmanagerライセンスを使用しないCentos-6.7-x86_64-minimal OSテンプレートは次のようになります。
https://billing.ihor.ru/billmgr?authinfo=<USER>:<PASS>&addon_1101=20&addon_1103=1&addon_1104=1&addon_1110=1&addon_1791=4&enum_1112=21&enum_1106=25&agree=on&domain=test-for.habr&ostempl= Centos-6.7-x86_64-minimal&period=1210&price=1100&autoprolong=1210&payfrom=neworder&func=vds.order.7&sok=ok
次に、この変数と数値のヒープをすべて解読してみましょう。
リクエスト自体は、条件付きで2つの部分に分けることができます。これらは、請求URLと請求に送信されるリクエストパラメータです。
パラメータ自体は次のように配布できます。
パラメータの説明
- 承認-authinfo
認証データとして、請求書に登録されているユーザーのログイン名とパスワードが表示されます。
- 料金プラン-価格
各料金プランには、表「料金プラン」から取得した請求書に固有の識別子があります。
- 料金プランのパラメーター-addon_
料金プランのパラメーターには、仮想サーバーのパラメーターとそのリソースが含まれます。 料金プランの各パラメータには、ディスクのサイズ、プロセッサコアとRAMの数、およびIPv6とIPv4アドレスに対応する独自の識別子と独自のデフォルト値があります。
- 追加サービス-enum_
追加のサービスには、DNSサーバーとISPmanangerライセンスの使用が含まれます。

(KVM Ferrumのデフォルトオプション)
- 注文期間-期間
- 自動更新-自動延長
各サービスの注文期間の識別子と自動更新はまったく同じです。
- サーバーのドメイン名-ドメイン
ドメイン名は一意である必要があります。 そうしないと、エラーが表示されます。
エラー:ドメインは既に使用されています。 別のドメイン名を指定してください。
仮想サーバーを一括で追加する場合は、フォーマット+ <シリアル番号>を使用することをお勧めします。
- OSテンプレート-ostempl
テンプレートの不完全なリストは、以下のこのテキストに記載されています。 ISPmanagerなしでOSテンプレートを注文する場合、追加サービスの値を設定する際に、ISPmanagerコントロールパネルの使用を無効にする必要があることに注意してください(すべての料金プランでは、この識別子は同じです-25)
- 支払いオプション-payfrom
この例では、支払いパラメーターの値-neworderを引用しました。これは、サーバーごとに支払いを行う個別の注文に対応します。 payfrom = neworder 。
- 注文の支払い-func
仮想サーバーの順序全体が7つのステップで構成されているため、一見あまり明らかではないAPIは、vds.order関数自体だけでなく、最後のステップの番号も指定する必要があります-7。 func = vds.order.7
- ユーザー同意の確認-同意する
いずれかのサービスを注文する場合、ユーザー契約に慣れて同意する(その後、注文がアクティベーションに進む)か、受け入れない(注文がキャンセルされる)ことをお勧めします。 APIでは、この項目も必要です: agree = on 。
パラメーターの一部は固定されており、説明で値を指定しました。その他の値は、 ホスティングの操作に関する参照情報とともにサイトページに完全に表示される表から取得できます。
すべての料金プランで大きなテーブルでテキストが乱雑にならないように、KVM Ferrum料金プランで仮想サーバーを注文するためのラインがどのように作成されたかを理解するのに役立つ部分のみを提供します。 また、他の2つの下関税計画では、SSDとOVZ
料金プラン
価格 | 期間/自動延長 | ||||
---|---|---|---|---|---|
関税 | ID | 1ヶ月 | 3ヶ月 | 6ヶ月 | 1年 |
KVMフェラム | 1100 | 1210 | 1213 | 1214 | 1211 |
SSDフェラム | 1033 | 1180 | 1183 | 1184 | 1181 |
Ovz ferrum | 2061 | 1758 | 1761 | 1762 | 1759 |
料金プランのオプション
addon_ | enum_ | ||||||
---|---|---|---|---|---|---|---|
関税/価値 | 運転 | RAM | CPU | IPv4 | IPv6 | NS | ISPmgr |
KVMフェラム | 1101
/ 20 | 1103
/ 1 | 1104
/ 1 | 1110
/ 1 | 1791
/ 4 | 1112
/ 21 | 1106
/(1/25) |
SSDフェラム | 1034
/ 20 | 1037
/ 1 | 1043
/ 1 | 1036
/ 1 | 1404
/ 4 | 1045
/ 21 | 1039
/(1/25) |
Ovz ferrum | 2062
/ 20 | 2065
/ 1 | 2071
/ 1 | 2064
/ 1 | 2074
/ 4 | 2073
/ 21 | 2067
/(1/25) |
テンプレートリスト
- FreeBSD-11-amd64-minimal
- Centos-6.7-x86_64-minimal
- Debian-7-x86_64-minimal
- Debian-8-x86_64-ispconfig
- Ubuntu-16.04-x86_64-minimal
- CentOS-7-x86_64-ispmgr5
要求が正しく行われ、新しいサービスのアクティベーションの申請が受け入れられた場合、次のような応答が返されます。
<script language='JavaScript'>fr_master('startpage=vds', 'top.');</script>
以下では、ボーナスとして、いくつかのスクリプトを適用して、LinuxおよびWindowsコンソール用の任意の数の仮想サーバーを注文します。
コメントが課金のAPIを使用するというテーマの開発に関心を示している場合、さまざまなプログラミング言語と統合用のソフトウェア製品を使用して、より詳細に説明しようとします。
BASHの例
#/bin/bash # # USER=user PASS=password # 10 for i in {1..10} do /usr/bin/curl https://billing.ihor.ru/billmgr?authinfo=$USER:$PASS&addon_1101=20&addon_1103=1&addon_1104=1&addon_1110=1&addon_1791=4&enum_1112=21&enum_1106=25&agree=on&domain=$USER-$i.ru&ostempl= Centos-6.7-x86_64-minimal&period=1210&price=1100&autoprolong=1210&payfrom=neworder&func=vds.order.7&sok=ok" done
残念ながら、Windowsで動作するようにコンパイルされたcurlを使用して前のサイクルを複製する方法を除いて、適切なオプションを考え出すことはできませんでした。 ただし、Windowsのスクリプト作成/プログラミングの経験がある読者がいる場合は、コメントでより合理的なスクリプトを共有してください。
PowerShellの例、curl.exeファイルは、スクリプトが実行されるディレクトリと同じディレクトリにある必要があります
USER=user PASS=password for ($i=1; $i -lt 10; $i++) { .\curl.exe https://billing.ihor.ru/billmgr?authinfo=$USER:$PASS&addon_1101=20&addon_1103=1&addon_1104=1&addon_1110=1&addon_1791=4&enum_1112=21&enum_1106=25&agree=on&domain=$USER-$i.ru&ostempl= Centos-6.7-x86_64-minimal&period=1210&price=1100&autoprolong=1210&payfrom=neworder&func=vds.order.7&sok=ok" }