サプライヤーAPIガイド:手動注文の処理
仕入先APIを使用して手動注文を取得、アカウントを送信、注文を完了としてマークする方法に関する完全ガイド。コード例とベストプラクティスを含みます。
Sarah Johnson前提条件
始める前に、以下をご用意ください:
- APIアクセス権のあるサプライヤーアカウント
- APIキー(サプライヤーダッシュボードから生成可能)
- Admin API v2エンドポイントへのアクセス
ステップ1:APIキーを取得する
- サプライヤーダッシュボードにログインします
- API設定(
/api-settings)に移動します - APIキーがない場合は「APIキーを生成」をクリックします
- APIキーをコピーし、安全に保管します
重要: APIキーは秘密に保ってください。公開したり、バージョン管理システムにコミットしたりしないでください。
ステップ2:手動注文を取得する
GET /api/admin/v2/orders エンドポイントを使用して、保留中および処理中の手動注文を取得します。
APIリクエスト
curl -X GET "https://your-domain.com/api/admin/v2/orders?status=pending,processing&productType=manual&limit=50&offset=0" \
-H "X-Api-Key: YOUR_API_KEY"
リクエストパラメータ
status(オプション):注文ステータスフィルター。カンマ区切り値をサポート:pending,processingproductType(手動注文には必須):manualに設定entityType(オプション):productまたはsmm_serviceでフィルターsubCategory(オプション):サブカテゴリ名でフィルターlimit(オプション):返す注文数(最大500、デフォルト50)offset(オプション):ページネーションオフセット(デフォルト0)
レスポンス例
{
"orders": [
{
"id": 12345,
"order": 12345,
"status": "pending",
"paymentStatus": "completed",
"quantity": 10,
"user": {
"id": "507f1f77bcf86cd799439011",
"email": "customer@example.com",
"name": "John Doe"
},
"items": [
{
"product": {
"id": "507f1f77bcf86cd799439012",
"name": "Instagram フォロワー",
"type": "product"
},
"quantity": 10,
"unitPrice": 5.00,
"totalPrice": 50.00
}
],
"createdAt": "2024-01-01T10:00:00.000Z"
}
],
"count": 1,
"total": 1
}
重要な注意事項
paymentStatus: "completed"の注文のみが返されます- 重複処理を防ぐために注文はフィルタリングされます(30分間隔)
- サプライヤーとして自分に属する製品/サービスの注文のみ表示できます
ステップ3:注文を処理し、アカウントを提出する
注文を取得したら、処理してアカウント認証情報を準備します。次に、POST /api/admin/v2/orders-update エンドポイントを使用してアカウントを提出し、注文ステータスを更新します。
APIリクエスト
curl -X POST "https://your-domain.com/api/admin/v2/orders-update" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order": 12345,
"status": "completed",
"accounts": [
"username1:password1",
"username2:password2",
"username3:password3"
],
"supplierOrderId": "SUP-ORDER-12345"
}'
リクエストボディパラメータ
order(必須):注文ID(数値)status(オプション):新しい注文ステータス。有効な値:pending、processing、completed、partial、cancelled、erroraccounts(オプション、製品注文の場合):"username:password"または"email:password"形式のアカウント認証情報の配列supplierOrderId(オプション):追跡用の内部注文ID
アカウント形式
製品注文の場合、アカウントは文字列の配列として提供する必要があります。各文字列は1つのアカウントを表します:
- 形式:
"username:password"または"email:password" - 例:
["user1:pass123", "user2:pass456"] - 数量: 注文数量に一致するアカウントを提供します
完全なワークフロー例
JavaScript/Node.jsを使用した完全な例は次のとおりです:
const axios = require('axios');
const API_BASE_URL = 'https://your-domain.com/api/admin/v2';
const API_KEY = 'YOUR_API_KEY';
// ステップ1:保留中および処理中の手動注文を取得
async function getOrders() {
try {
const response = await axios.get(`${API_BASE_URL}/orders`, {
params: {
status: 'pending,processing',
productType: 'manual',
limit: 50,
offset: 0
},
headers: {
'X-Api-Key': API_KEY
}
});
return response.data.orders;
} catch (error) {
console.error('注文の取得中にエラーが発生しました:', error.response?.data || error.message);
throw error;
}
}
// ステップ2:注文を処理し、アカウントを提出
async function updateOrder(orderId, accounts, supplierOrderId) {
try {
const response = await axios.post(
`${API_BASE_URL}/orders-update`,
{
order: orderId,
status: 'completed',
accounts: accounts,
supplierOrderId: supplierOrderId
},
{
headers: {
'X-Api-Key': API_KEY,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('注文の更新中にエラーが発生しました:', error.response?.data || error.message);
throw error;
}
}
// メインワークフロー
async function processOrders() {
try {
// 注文を取得
const orders = await getOrders();
console.log(`処理する注文が ${orders.length} 件見つかりました`);
// 各注文を処理
for (const order of orders) {
console.log(`注文 ${order.id} を処理中...`);
// アカウントを準備(ここでシステムから取得します)
const accounts = [
'user1:pass1',
'user2:pass2',
// ... order.quantity に一致するアカウント
];
// アカウントで注文を更新し、完了としてマーク
const updatedOrder = await updateOrder(
order.id,
accounts,
`SUP-${order.id}`
);
console.log(`注文 ${order.id} が正常に完了しました`);
}
} catch (error) {
console.error('ワークフローでエラーが発生しました:', error);
}
}
// ワークフローを実行
processOrders();
エラーハンドリング
一般的なエラー
- 無効なAPIキー
{ "error": "INVALID_API_KEY", "message": "無効なAPIキーです" }解決策:APIキーが正しく、有効であることを確認してください。
- 注文が見つからない
{ "error": "ORDER_NOT_FOUND", "message": "注文が見つかりません" }解決策:注文IDが存在し、自分に属していることを確認してください。
- アクセス拒否
{ "error": "ACCESS_DENIED", "message": "この注文へのアクセス権がありません" }解決策:注文に自分に属する製品/サービスが含まれていることを確認してください。
- 無効なアカウント
{ "error": "INVALID_ACCOUNTS", "message": "重複排除後に有効なアカウントが提供されていません" }解決策:アカウント配列が空でなく、有効な文字列が含まれていることを確認してください。
ベストプラクティス
- ポーリング頻度: 頻繁にポーリングしないでください。APIは30分間隔で重複処理を防ぎます。
- エラーハンドリング: 適切なエラーハンドリングとリトライロジックを常に実装してください。
- アカウント検証: 提出前にアカウントが正しい形式であることを検証してください。
- 注文追跡:
supplierOrderIdを使用してシステム内の注文を追跡してください。 - ステータス更新: ステータスを段階的に更新できます:
- 作業を開始するときに最初に
processingに設定 - アカウントの準備ができたら
completedに設定
- 作業を開始するときに最初に
- 部分注文: 注文の一部しか履行できない場合は、ステータスを
partialに設定し、利用可能なアカウントを提出してください。
まとめ
完全なワークフローは次のとおりです:
- 注文を取得:
GET /api/admin/v2/orders?status=pending,processing&productType=manual - 注文を処理: 各注文のアカウントを準備
- アカウントを提出: アカウントと
status: "completed"を指定してPOST /api/admin/v2/orders-update
このシンプルな3ステップのプロセスで、注文フルフィルメントワークフローを完全に自動化できます!
どちらもサプライヤー向けの主要なドキュメントガイドです。これらをリンクすることで、サプ



