Schedule API(定期課金)のリトライ機能について
OmiseのSchedule APIにはリトライ機能があります。
上記リンクの内容をまとめると、
課金のためのスケジュールAPI(Charge Schedule API)は、リトライできます。
振込のためのスケジュールAPI(Transfer Schedule API)は、リトライできません。
課金スケジュール(Charge Schedule API)のリトライ
Charge Schedule APIのリトライは例えば以下のシナリオです。
- 顧客Aに対し、あなたが毎月28日に課金をするスケジュールを作成したとする。
- 顧客Aのカードが何らかの理由(盗難カード、残高不足など)で使えないやつだった
- 2.により、例えば1/28の課金が失敗する。
- すると、翌日の1/29日に自動的に課金がリトライされる(1回目のリトライ)
- 4.が失敗した場合、さらに翌日の1/30日にまた課金がリトライされる(2回目のリトライ)
- 5.が失敗した場合、スケジュールは停止される。
2/28が定期課金の日付だったらどうするのか
この場合、3/1, 3/2という風にリトライされます。
注意事項
現時点では、Omiseの Schedule APIは最大28日までしか日付を選ぶことができません。
28日より後を選ぶと、以下のようなレスポンスが返ってきます。
curl -s https://api.omise.co/schedules \
-X POST \
-u skey_test_5b3qimoominjmcm0omin: \
-d "every=1" \
-d "period=month" \
-d "on[days_of_month][]=31" \
-d "start_date=2018-03-05" \
-d "end_date=2118-02-09" \
-d "charge[customer]=cust_test_5bmoominal49amoomin2k" \
-d "charge[amount]=100" \
-d "charge[description]=Membership fee"
{
"object": "error",
"location": "https://www.omise.co/api-errors#bad-request",
"code": "bad_request",
"message": "on [days_of_month] must be an array of integer values (1 - 28)"
}
まとめ
定期課金には最大2回のリトライ機能(なので最大3回の課金トライ)が備わっています。基本、定期課金は28日までしか設定できません。また、リトライは1日間隔で行われ、2/28からのリトライは、3/1, 3/2と繰り越されます。