ãµãã©ã€ã€ãŒAPIã¬ã€ãïŒæåæ³šæã®åŠç
Sarah Johnsonåææ¡ä»¶
éå§ããåã«ã以äžã確èªããŠãã ããïŒ
- APIã¢ã¯ã»ã¹æš©ãæã€ãµãã©ã€ã€ãŒã¢ã«ãŠã³ã
- APIããŒïŒãµãã©ã€ã€ãŒããã·ã¥ããŒãããçæã§ããŸãïŒ
- Admin API v2 ãšã³ããã€ã³ããžã®ã¢ã¯ã»ã¹æš©
ã¹ããã 1: APIããŒãååŸãã
- ãµãã©ã€ã€ãŒããã·ã¥ããŒãã«ãã°ã€ã³ããŸã
- APIèšå®ïŒ
/api-settingsïŒã«ç§»åããŸã - APIããŒããæã¡ã§ãªãå Žåã¯ãGenerate API Keyããã¯ãªãã¯ããŸã
- 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 Followers",
"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',
// ... æ³šææ°éã«äžèŽãããã®ä»ã®ã¢ã«ãŠã³ã
];
// ã¢ã«ãŠã³ãã§æ³šæãæŽæ°ããå®äºãšããŠããŒã¯ãã
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": "Invalid API key" }解決ç: APIããŒãæ£ãããæå¹ã§ããããšã確èªããŠãã ããã
- 泚æãèŠã€ãããŸãã
{ "error": "ORDER_NOT_FOUND", "message": "Order not found" }解決ç: 泚æIDãååšããããªãã«å±ããŠããããšã確èªããŠãã ããã
- ã¢ã¯ã»ã¹ãæåŠãããŸãã
{ "error": "ACCESS_DENIED", "message": "You do not have access to this order" }解決ç: 泚æã«ããªãã«å±ãã補å/ãµãŒãã¹ãå«ãŸããŠããããšã確èªããŠãã ããã
- ç¡å¹ãªã¢ã«ãŠã³ã
{ "error": "INVALID_ACCOUNTS", "message": "No valid accounts provided after deduplication" }解決ç: ã¢ã«ãŠã³ãé åã空ã§ãªããæå¹ãªæååãå«ãŸããŠããããšã確èªããŠãã ããã
ãã¹ããã©ã¯ãã£ã¹
- ããŒãªã³ã°é »åºŠ: é »ç¹ã«ããŒãªã³ã°ããªãã§ãã ããã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ã¹ãããã®ããã»ã¹ã§ã泚æå±¥è¡ã¯ãŒã¯ãããŒãå®å šã«èªååã§ããŸãïŒ
ãããã¯äž¡æ¹ãšããµãã©ã€ã€ãŒåãã®ã³ã¢ããã¥ã¡ã³ãã¬ã€ãã§ãããããããªã³ã¯ããããšã§ããµãã©ã€ã€ãŒã¯è£œåèšå®ããæ³šæåŠçãžãšèªç¶ã«ããã²ãŒãã§ããè«ççãªã¯ãŒã¯ãããŒãæ§ç¯ãããŸãã補å管çã¬ã€ãã

Sarah Johnson
Digital marketing expert with 10+ years of experience in social media strategy. Passionate about helping businesses grow their online presence through effective marketing techniques.


