สร้างตารางเวลา
สร้างตารางเวลาใหม่สำหรับการเรียกเก็บเงินหรือการโอนเงินแบบอัตโนมัติ ตารางเวลาช่วยให้คุณสามารถตั้งค่าการเรียกเก็บเงินแบบสมัครสมาชิก การชำระเงินแบบเป็นงวดๆ และการโอนเงินอัตโนมัติด้วยตัวเลือกความถี่ที่ยืดหยุ่น (รายวัน รายสัปดาห์ หรือรายเดือน)
พารามิเตอร์คำขอ
จำเป็น - 3 ฟิลด์การตั้งค่าตารางเวลา
`every`INTEGER(required)
ตัวคูณความถี่สำหรับช่วงเวลาของตาราง ตัวอย่างเช่น every=2 ร่วมกับ period=week หมายถึงทุก 2 สัปดาห์
`period`STRING(required)
หน่วยเวลาสำหรับความถี่ของตารางเวลา
`on`OBJECT(required)
ระบุว่าตารางเวลาควรทำงานเมื่อใดภายในช่วงเวลา ฟิลด์ที่จำเป็นขึ้นอยู่กับประเภทของช่วงเวลา
ไม่บังคับ - 2 ฟิลด์ระยะเวลาของตารางเวลา
`start_date`STRING(optional)
วันที่เริ่มต้นของตารางเวลาในรูปแบบ ISO 8601 (YYYY-MM-DD) หากไม่ระบุจะใช้วันนี้เป็นค่าเริ่มต้น
`end_date`STRING(optional)
วันที่สิ้นสุดของตารางเวลาในรูปแบบ ISO 8601 (YYYY-MM-DD) ตารางเวลาจะหมดอายุหลังจากวันที่นี้
มีเงื่อนไข - ใช้ charge หรือ transferการตั้งค่าการเรียกเก็บเงิน
`charge`OBJECT(optional)
การตั้งค่าสำหรับการเ รียกเก็บเงินแบบเป็นงวดๆ จำเป็นหากไม่ได้ใช้ transfer
มีเงื่อนไข - ใช้ charge หรือ transferการตั้งค่าการโอนเงิน
การตอบกลับ
200
สร้างตารางเวลาสำเร็จส่งคืนออบเจกต์ตารางเวลาที่สร้างใหม่พร้อมรายละเอียดการตั้งค่าทั้งหมดและวันที่ของการดำเนินการที่จะเกิดขึ้น
ออบเจกต์ตารางเวลาประกอบด้วย:
id- รหัสตารางเวลา (schd_*)livemode- โหมด Live หรือ testlocation- เส้นทาง API ไปยังออบเจ กต์status- สถานะเริ่มต้น (โดยทั่วไปคือ "active")active- ตารางเวลากำลังทำงานอยู่หรือไม่every- ตัวคูณความถี่period- หน่วยเวลา (day, week, month)on- การตั้งค่าระยะเวลาin_words- คำอธิบายของตารางเวลาในรูปแบบที่อ่านง่ายstart_on- วันที่เริ่มต้นตารางเวลาend_on- วันที่สิ้นสุดตารางเวลาnext_occurrences_on- อาร์เรย์ของวันที่ดำเนินการที่จะมาถึงสูงสุด 30 รายการoccurrences- รายการออบเจกต์ occurrencechargeหรือtransfer- พารามิเตอร์การดำเนินการcreated_at- เวลาที่สร้างตารางเวลา (ISO 8601)deleted- ตารางเวลาถูกลบแล้วหรือไม่
400
คำขอไม่ถูกต้องการตรวจสอบคำขอล้มเหลว ตรวจสอบข้อความข้อผิดพลาดเพื่อดูรายละเอียด
สาเหตุที่พบบ่อย:
- ขาดพารามิเตอร์ที่จำเป็น (every, period, on)
- ค่า period ไม่ถูกต้อง
- การตั้งค่า on ไม่ถูกต้องสำหรับ period ที่ระบุ
- ไม่ได้ระบุทั้ง charge และ transfer
- รหัสลูกค้าหรือรหัสผู้รับไม่ถูกต้อง
- วันที่เริ่มต้นอยู่ในอดีต
- วันที่สิ้นสุดอยู่ก่อนวันที่เริ่มต้น
401
ไม่ได้รับอนุญาตการยืนยันตัวตนล้มเหลว API key ไม่ถูกต้องหรือไม่มี
สาเหตุที่พบบ่อย:
- ไม่มี Authorization header
- Secret key ไม่ถูกต้อง
- ใช้ public key แทน secret key
- รูปแบบ HTTP Basic Auth ไม่ถูกต้อง
404
ไม่พบไม่พบทรัพยากรที่อ้างอิง
สาเหตุที่พบบ่อย:
- รหัสลูกค้าไม่ถูกต้องในการตั้งค่า charge
- รหัสผู้รับไม่ถูกต้องในการตั้งค่า transfer
- รหัสบัตรที่ระบุไม่ถูกต้อง
- ลูกค้าไม่มีบัตรเริ่มต้น
5xx
ข้อผิดพลาดของเซิร์ฟเวอร์เกิดข้อผิดพลาดฝั่งเซิร์ฟเวอร์ ข้อผิดพลาดเหล่านี้พบได้น้อยแต่ควรจัดการอย่างเหมาะสม
วิธีจัดการ:
- ส่งคำขอใหม่ด้วย exponential backoff
- ตรวจสอบ status.omise.co สำหรับเหตุการณ์ที่เกี่ยวกับบริการ
- ดู การจัดการข้อผิดพลาด สำหรับคำแนะนำโดยละเอียด
ตัวอย่างโค้ด
สร้างตารางเวลาเรียกเก็บเงิน
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
# ตารางเวลาเรียกเก็บเงินรายเดือนในวันที่ 1 และ 15
curl https://api.omise.co/schedules \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-d every=1 \
-d period=month \
-d "on[days_of_month][]=1" \
-d "on[days_of_month][]=15" \
-d start_date=2025-01-01 \
-d end_date=2025-12-31 \
-d "charge[amount]=100000" \
-d "charge[currency]=THB" \
-d "charge[customer]=cust_test_5xuy4w91xqz7d1w9u0t" \
-d "charge[description]=Monthly subscription"
require 'omise'
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule = Omise::Schedule.create({
every: 1,
period: 'month',
on: {
days_of_month: [1, 15]
},
start_date: '2025-01-01',
end_date: '2025-12-31',
charge: {
amount: 100000,
currency: 'THB',
customer: 'cust_test_5xuy4w91xqz7d1w9u0t',
description: 'Monthly subscription'
}
})
import omise
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule = omise.Schedule.create(
every=1,
period='month',
on={
'days_of_month': [1, 15]
},
start_date='2025-01-01',
end_date='2025-12-31',
charge={
'amount': 100000,
'currency': 'THB',
'customer': 'cust_test_5xuy4w91xqz7d1w9u0t',
'description': 'Monthly subscription'
}
)
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t'
});
const schedule = await omise.schedules.create({
every: 1,
period: 'month',
on: {
days_of_month: [1, 15]
},
start_date: '2025-01-01',
end_date: '2025-12-31',
charge: {
amount: 100000,
currency: 'THB',
customer: 'cust_test_5xuy4w91xqz7d1w9u0t',
description: 'Monthly subscription'
}
});
<?php
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
$schedule = OmiseSchedule::create(array(
'every' => 1,
'period' => 'month',
'on' => array(
'days_of_month' => array(1, 15)
),
'start_date' => '2025-01-01',
'end_date' => '2025-12-31',
'charge' => array(
'amount' => 100000,
'currency' => 'THB',
'customer' => 'cust_test_5xuy4w91xqz7d1w9u0t',
'description' => 'Monthly subscription'
)
));
Client client = new Client.Builder()
.secretKey("skey_test_5xuy4w91xqz7d1w9u0t")
.build();
Schedule schedule = client.schedules().create(new Schedule.CreateParams.Builder()
.every(1)
.period(Period.MONTH)
.on(new Schedule.On.Builder()
.daysOfMonth(Arrays.asList(1, 15))
.build())
.startDate("2025-01-01")
.endDate("2025-12-31")
.charge(new Schedule.ChargeParams.Builder()
.amount(100000)
.currency("THB")
.customer("cust_test_5xuy4w91xqz7d1w9u0t")
.description("Monthly subscription")
.build())
.build());
var client = new Client("skey_test_5xuy4w91xqz7d1w9u0t");
var schedule = await client.Schedules.Create(new CreateScheduleRequest
{
Every = 1,
Period = Period.Month,
On = new ScheduleOn
{
DaysOfMonth = new[] { 1, 15 }
},
StartDate = "2025-01-01",
EndDate = "2025-12-31",
Charge = new ChargeScheduleParams
{
Amount = 100000,
Currency = "THB",
Customer = "cust_test_5xuy4w91xqz7d1w9u0t",
Description = "Monthly subscription"
}
});
client, _ := omise.NewClient(
"pkey_test_5xuy4w91xqz7d1w9u0t",
"skey_test_5xuy4w91xqz7d1w9u0t",
)
schedule, _ := client.CreateSchedule(&operations.CreateSchedule{
Every: 1,
Period: "month",
On: operations.ScheduleOn{
DaysOfMonth: []int{1, 15},
},
StartDate: "2025-01-01",
EndDate: "2025-12-31",
Charge: &operations.ChargeSchedule{
Amount: 100000,
Currency: "THB",
Customer: "cust_test_5xuy4w91xqz7d1w9u0t",
Description: "Monthly subscription",
},
})
สร้างตารางเวลาโอนเงิน
- cURL
- Ruby
- Python
- Node.js
- PHP
- Go
# ตารางเวลาโอนเงินทุกสัปดาห์ - ทุกวันจันทร์ 75% ของยอดคงเหลือ
curl https://api.omise.co/schedules \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-d every=1 \
-d period=week \
-d "on[weekdays][]=monday" \
-d start_date=2025-01-01 \
-d end_date=2025-12-31 \
-d "transfer[recipient]=recp_test_5xuy4w91xqz7d1w9u0t" \
-d "transfer[percentage_of_balance]=75"
# โอนเงินจำนวนคงที่รายเดือนในวันที่ 1
curl https://api.omise.co/schedules \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-d every=1 \
-d period=month \
-d "on[days_of_month][]=1" \
-d start_date=2025-01-01 \
-d "transfer[recipient]=recp_test_5xuy4w91xqz7d1w9u0t" \
-d "transfer[amount]=1000000"
require 'omise'
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
# โอน 75% ของยอดคงเหลือทุกวันจันทร์
schedule = Omise::Schedule.create({
every: 1,
period: 'week',
on: {
weekdays: ['monday']
},
start_date: '2025-01-01',
end_date: '2025-12-31',
transfer: {
recipient: 'recp_test_5xuy4w91xqz7d1w9u0t',
percentage_of_balance: 75
}
})
import omise
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
# โอน 75% ของยอดคงเหลือทุกวันจันทร์
schedule = omise.Schedule.create(
every=1,
period='week',
on={
'weekdays': ['monday']
},
start_date='2025-01-01',
end_date='2025-12-31',
transfer={
'recipient': 'recp_test_5xuy4w91xqz7d1w9u0t',
'percentage_of_balance': 75
}
)
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t'
});
// โอน 75% ของยอดคงเหลือทุกวันจันทร์
const schedule = await omise.schedules.create({
every: 1,
period: 'week',
on: {
weekdays: ['monday']
},
start_date: '2025-01-01',
end_date: '2025-12-31',
transfer: {
recipient: 'recp_test_5xuy4w91xqz7d1w9u0t',
percentage_of_balance: 75
}
});
<?php
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
// โอน 75% ของยอดคงเหลือทุกวันจันทร์
$schedule = OmiseSchedule::create(array(
'every' => 1,
'period' => 'week',
'on' => array(
'weekdays' => array('monday')
),
'start_date' => '2025-01-01',
'end_date' => '2025-12-31',
'transfer' => array(
'recipient' => 'recp_test_5xuy4w91xqz7d1w9u0t',
'percentage_of_balance' => 75
)
));
client, _ := omise.NewClient(
"pkey_test_5xuy4w91xqz7d1w9u0t",
"skey_test_5xuy4w91xqz7d1w9u0t",
)
// โอน 75% ของยอดคงเหลือทุกวันจันทร์
schedule, _ := client.CreateSchedule(&operations.CreateSchedule{
Every: 1,
Period: "week",
On: operations.ScheduleOn{
Weekdays: []string{"monday"},
},
StartDate: "2025-01-01",
EndDate: "2025-12-31",
Transfer: &operations.TransferSchedule{
Recipient: "recp_test_5xuy4w91xqz7d1w9u0t",
PercentageOfBalance: 75,
},
})
รหัสข้อผิดพลาดและผลลัพธ์
รหัสข้อผิดพลาดที่พบบ่อย
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
authentication_failure | API key ไม่ถูกต้อง | ตรวจสอบว่า secret key ของคุณถูกต้อง |
invalid_schedule | การตั้ง ค่าตารางเวลาไม่ถูกต้อง | ตรวจสอบพารามิเตอร์ every, period และ on |
invalid_customer | ไม่พบลูกค้า | ตรวจสอบว่ารหัสลูกค้ามีอยู่จริง |
invalid_recipient | ไม่พบผู้รับ | ตรวจสอบว่ารหัสผู้รับมีอยู่จริง |
invalid_card | ไม่พบบัตรหรือบัตรหมดอายุ | ตรวจสอบรหัสบัตรหรือใช้บัตรเริ่มต้นของลูกค้า |
การตั้งค่าช่วงเวลาของตารางเวลา
| Period | พารามิเตอร์ on ที่จำเป็น | ตัวอย่าง |
|---|---|---|
day | ไม่จำเป็น | ทำงานทุก N วัน |
week | weekdays | {"weekdays": ["monday", "friday"]} |
month | days_of_month หรือ weekday_of_month | {"days_of_month": [1, 15]} |
ข้อมูลยืนยันตัวตน API
ทดลองใช้งาน
จำเป็น - 3 ฟิลด์
IP ของคุณ:
...ก ำลังโหลด...