เปิดใช้งานกำหนดการต่อแบบกลุ่ม
เปิดใช้งานกำหนดการเรียกเก็บเงินที่หยุดชั่วคราวหนึ่งรายการหรือหลายรายการในคำขอเดียว กำหนดการที่เปิดใช้งานต่อจะกลับสู่สถานะ active และเริ่มทำงานในรอบถัดไปที่กำหนดไว้ ฟังก์ชันนี้มีประโยชน์สำหรับการเปิดใช้งานกำหนดการอีกครั้งหลังจากการระงับชั่วคราวหรือการหยุดตามฤดูกาล
ข้อมูลยืนยันตัวตน API
พารามิเตอร์คำขอ
จำเป็น - 1 ฟิลด์พารามิเตอร์ที่จำเป็น
`schedule_ids`ARRAY(required)
อาร์เรย์ของ Schedule IDs ที่จะเปิดใช้งานต่อ แต่ละ ID ต้องเริ่มต้นด้วย schd_ สูงสุด 100 IDs ต่อคำขอ
การตอบกลับ
200
เปิดใช้งานกำหนดการต่อสำเร็จส่งคืนสรุปการดำเนินการเปิดใช้งานต่อแบบกลุ่มพร้อมรายละ เอียดของแต่ละกำหนดการ
การตอบกลับประกอบด้วย:
object- เป็น "bulk_operation" เสมอoperation- "resume"total_count- จำนวน Schedule IDs ทั้งหมดที่ระบุsuccessful_count- จำนวนกำหนดการที่เปิดใช้งานต่อสำเร็จfailed_count- จำนวนกำหนดการที่เปิดใช้งานต่อล้มเหลวresults- อาร์เรย์ของออบเจกต์ผลลัพธ์สำหรับแต่ละกำหนดการ
schedule_id- Schedule IDstatus- "success" หรือ "failed"schedule- ออบเจกต์กำหนดการที่อัปเดต (หากสำเร็จ)error_code- รหัสข้อผิดพลาด (หากล้มเหลว)error_message- คำอธิบายข้อผิดพลาด (หากล้มเหลว)
400
คำขอไม่ถูกต้องการตรวจสอบคำขอล้มเหลว ตรวจสอบข้อความข้อผิดพลาดสำหรับรายละเอียด
สาเหตุทั่วไป:
- พารามิเตอร์ schedule_ids หายไป
- schedule_ids ไม่ใช่อาร์เรย์
- อาร์เรย์ schedule_ids ว่างเปล่า
- ระบุ Schedule IDs มากกว่า 100 รายการ
- รูปแบบ Schedule ID ไม่ถูกต้อง
401
ไม่ได้รับอนุญาตการยืนยันตัวตนล้มเหลว API key ไม่ถูกต้องหรือหายไป
สาเหตุทั่วไป:
- ไม่มี Authorization header
- Secret key ไม่ถูกต้อง
- ใช้ public key แทน secret key
- รูปแบบ HTTP Basic Auth ไม่ถูกต้อง
404
ไม่พบไม่พบ endpoint หรือฟีเจอร์ไม่ได้เปิดใช้งาน
สาเหตุทั่วไป:
- ฟีเจอร์การดำเนินการแบบกลุ่มไม่ได้เปิดใช้งานสำหรับบัญชี
- URL ของ API endpoint ไม่ถูกต้อง
5xx
ข้อผิดพลาดเซิร์ฟเวอร์เกิดข้อผิดพลาดฝั่งเซิร์ฟเวอร์ เหตุการณ์เหล่านี้หายากแต่ควรจัดการอย ่างเหมาะสม
วิธีจัดการ:
- ลองคำขอใหม่ด้วย exponential backoff
- ตรวจสอบ status.omise.co สำหรับเหตุการณ์บริการ
- ดู การจัดการข้อผิดพลาด สำหรับคำแนะนำโดยละเอียด
ตัวอย่างโค้ด
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
# เปิดใช้งานกำหนดการที่หยุดชั่วคราวหลายรายการต่อ
curl https://api.omise.co/schedules/bulk_resume \
-X PATCH \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-H "Content-Type: application/json" \
-d '{
"schedule_ids": [
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
]
}'
require 'omise'
require 'net/http'
require 'uri'
require 'json'
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
]
uri = URI('https://api.omise.co/schedules/bulk_resume')
request = Net::HTTP::Patch.new(uri)
request.basic_auth(Omise.api_key, '')
request['Content-Type'] = 'application/json'
request.body = { schedule_ids: schedule_ids }.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
result = JSON.parse(response.body)
puts "Resumed: #{result['successful_count']} / #{result['total_count']}"
import omise
import requests
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
]
response = requests.patch(
'https://api.omise.co/schedules/bulk_resume',
auth=(omise.api_secret, ''),
json={'schedule_ids': schedule_ids}
)
result = response.json()
print(f"Resumed: {result['successful_count']} / {result['total_count']}")
# ตรวจสอบความล้มเหลว
for item in result['results']:
if item['status'] == 'failed':
print(f"Failed: {item['schedule_id']} - {item['error_message']}")
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t'
});
const axios = require('axios');
const scheduleIds = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
];
const response = await axios.patch(
'https://api.omise.co/schedules/bulk_resume',
{ schedule_ids: scheduleIds },
{
auth: {
username: 'skey_test_5xuy4w91xqz7d1w9u0t',
password: ''
}
}
);
console.log(`Resumed: ${response.data.successful_count} / ${response.data.total_count}`);
// ตรวจสอบความล้มเหลว
response.data.results.forEach(item => {
if (item.status === 'failed') {
console.log(`Failed: ${item.schedule_id} - ${item.error_message}`);
}
});
<?php
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
$schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.omise.co/schedules/bulk_resume',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_USERPWD => OMISE_SECRET_KEY . ':',
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['schedule_ids' => $schedule_ids])
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
echo "Resumed: {$result['successful_count']} / {$result['total_count']}\n";
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;
HttpClient client = HttpClient.newHttpClient();
String auth = Base64.getEncoder().encodeToString("skey_test_5xuy4w91xqz7d1w9u0t:".getBytes());
String jsonBody = """
{
"schedule_ids": [
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.omise.co/schedules/bulk_resume"))
.header("Authorization", "Basic " + auth)
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
var client = new HttpClient();
var credentials = Convert.ToBase64String(
Encoding.ASCII.GetBytes("skey_test_5xuy4w91xqz7d1w9u0t:")
);
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", credentials);
var scheduleIds = new[] {
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
};
var content = new StringContent(
JsonSerializer.Serialize(new { schedule_ids = scheduleIds }),
Encoding.UTF8,
"application/json"
);
var request = new HttpRequestMessage(new HttpMethod("PATCH"),
"https://api.omise.co/schedules/bulk_resume")
{
Content = content
};
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
scheduleIds := []string{
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r",
}
body, _ := json.Marshal(map[string][]string{
"schedule_ids": scheduleIds,
})
req, _ := http.NewRequest("PATCH",
"https://api.omise.co/schedules/bulk_resume",
bytes.NewBuffer(body))
req.SetBasicAuth("skey_test_5xuy4w91xqz7d1w9u0t", "")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Resumed: %.0f / %.0f\n",
result["successful_count"], result["total_count"])
}
รหัสข้อผิดพลาดและผลลัพธ์
รหัสข้อผิดพลาดทั่วไป
| รหัส | คำอธิบาย | การแก้ไข |
|---|---|---|
authentication_failure | API key ไม่ถูกต้อง | ตรวจสอบว่า secret key ของคุณถูกต้อง |
invalid_schedule_ids | schedule_ids ไม่ถูกต้องหรือหายไป | ระบุอาร์เรย์ที่ถูกต้องของ Schedule IDs |
too_many_ids | ระบุมากกว่า 100 IDs | แบ่งเป็นหลายคำขอ |
รหัสข้อผิดพลาดต่อกำหนดการ
| รหัส | คำอธิบาย | การแก้ไข |
|---|---|---|
schedule_not_found | ไม่มี Schedule ID | ตรวจสอบว่า Schedule ID ถูกต้อง |
schedule_not_suspended | กำหนดการไม่อยู่ในสถานะ suspended | เฉพาะกำหนดการที่หยุดชั่วคราวเท่านั้นที่เปิดใช้งานต่อได้ |
schedule_already_active | กำหนดการ active อยู่แล้ว | ไม่ต้องดำเนินการ |
schedule_deleted | กำหนดการถูกลบแล้ว | ไม่สามารถเปิดใช้งานกำหนดการที่ถูกลบต่อได้ |
schedule_expired | กำหนดการผ่านวันที่สิ้นสุดแล้ว | สร้างกำหนดการใหม่ |
สถานะกำหนดการหลังเปิดใช้งานต่อ
| ฟิลด์ | ค่า |
|---|---|
status | active |
active | true |
ลองใช้งาน
จำเป็น - 1 ฟิลด์
IP ของคุณ:
...กำลังโหลด...