実売上化
このページで扱うトピック
本ドキュメントでは、カード決済処理における2つのステップであるオーソリ(Authorization)とキャプチャ(Capture)について説明し、Omiseが提供するキャプチャの種類(Automatic Capture、Full Manual Capture、Single Partial Captureを含む)を紹介します。なお、Single Partial CaptureはOmise Thailandと契約している加盟店のみご利用いただけます。
📖 オーソリとキャプチャについて
オーソリとキャプチャは、カード決済を完了させるための2つのステップです。
オーソリは、加盟店がチェックアウト時に顧客のカードに対してchargeを開始したときに行われます。この過程で、決済処理会社はカード発行会社に問い合わせ、口座に十分な残高があり、正常な状態であることを確認します。条件を満たしている場合、取引金額は決済完了まで保留された状態になります。事前にカードのオーソリを行うことで、実際に金額を引き落とすことなく、支払い方法が有効であることとカード保有者が本人であることを確認でき、チャージバックの防止にも役立ちます。
オーソリ有効期間、すなわちオーソリが有効な状態を維持する期間は、金額をキャプチャする必要がある期限を定めます。この期間は国によって異なりますが、通常は7日間です。オーソリ有効期間内に金額がキャプチャされなかった場合、その金額は自動的に解除され、chargeのステータスはreversedに変わります。
キャプチャとは、取引を完了させるプロセスです。顧客の口座から資金が引き落とされ、加盟店の口座に送金されることで、取引のステータスが保留中(pending)から完了(complete)に変わります。
🧾 キャプチャの種類
キャプチャの方法には、自動と手動の2種類があります。
Automatic Capture
Automatic Captureでは、キャプチャディレイ(capture delay、オーソリからキャプチャまでの時間)と呼ばれる設定可能な遅延時間の経過後に、支払いが自動的にキャプチャされます。デフォルトではこの遅延時間は0であるため、オーソリの直後に支払いがキャプチャされます。
Manual Capture
Manual Captureでは、オーソリの有効期限が切れる前に、加盟店が支払いごとに明示的にキャプチャをリクエストする必要があります。
Manual Captureには、次の種類があります。
- Full Manual Capture
- Single Partial Capture (Omise Thailandと契約している加盟店のみご利用いただけます。詳細は下記の注記を参照してください)
- Multiple Partial Capture (現在サポートされていません。詳細は下記のMultiple Partial Captureを参照してください)
オーソリタイプの選択
Manual Captureのchargeでは、オーソリした金額とキャプチャしようとする金額の関係を示すために authorization_type パラメータを使用します。
authorization_type=final_auth(デフォルト) — オーソリした金額が最終的な金額であることを示します。一般的なManual Captureで使用し、chargeは一度だけ、全額でキャプチャできます。authorization_type=pre_auth— オーソリした金額が見積もりであり、実際にキャプチャする金額より多い可能性があることを示します。Single Partial Captureのように、オーソリした全額より少ない金額をキャプチャする見込みがある場合に使用します。
⚠️ 警告: 加盟店が商品やサービスを提供しなかった場合、そのchargeをキャプチャしないでください。THB 0でのキャプチャリクエストはサポートされていません。capture_amount=0 を送信すると、0ではなくオーソリした金額全額がキャプチャされます。回収するつもりのないオーソリをキャプチャしてしまうことを避けるため、金額0でのキャプチャリクエストを送信するのではなく、オーソリを期限切れにして自動的に解除させてください。
Full Manual Capture
Full Manual Captureでは、オーソリした金額の全額がキャプチャされます。
処理の流れは次のとおりです。
Full Manual Capture: chargeのオーソリ
次の例は、カードトークンを使用してTHB 70のchargeをオーソリする例です。Full Manual Captureでは常に全額をキャプチャするため、この例ではデフォルト値である authorization_type=final_auth を明示的に指定しています。
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=7000" \
-d "currency=THB" \
-d "capture=false" \
-d "card=$TOKEN_ID" \
-d "authorization_type=final_auth"
Full Manual Capture: オーソリ金額全額のキャプチャ
次の例は、THB 70の全額キャプチャを示しています。
curl https://api.omise.co/charges/$FULL_UNCAPTURED_CHARGE_ID/capture \
-u $OMISE_SECRET_KEY: \
-d "capture_amount=7000"
Single Partial Capture
🔒 重要: Single Partial Captureは、Omise Thailandと契約している加盟店のみご利用いただけます。
次の例は、Single Partial Captureを示しています。
顧客がTHB 70相当の商品を購入するとします。このときカードはTHB 70でオーソリされます。しかし、加盟店がTHB 40相当の商品しか配送できなかったとします。最終的な請求額はTHB 40となり、これが顧客のカードに請求される金額です。オーソリされたもののキャプチャされなかった残りのTHB 30は、確保が解除され顧客に返却されます。
ℹ️ 注: 顧客のカードにTHB 40を請求するこのtransactionが、Single Partial Captureです。
処理の流れは次のとおりです。
Single Partial Capture: 有効化
Single Partial Captureは、対象となる加盟店であればデフォルトで有効になっており、特別な設定は必要ありません。ただし、Omise Thailandと契約している加盟店のみご利用いただけます。ご自身のアカウントが対象かどうか不明な場合は、Omiseの担当営業チームにお問い合わせください。
Single Partial Capture: chargeのオーソリ
次の例は、カードトークンを使用してTHB 70のchargeをオーソリする例です。加盟店はこの金額の一部のみをキャプチャする見込みであるため、この例では authorization_type=pre_auth を指定しています。
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=7000" \
-d "currency=THB" \
-d "capture=false" \
-d "card=$TOKEN_ID" \
-d "authorization_type=pre_auth"
Single Partial Capture: 一部金額のキャプチャ
次の例は、THB 40のSingle Partial Captureを示しています。
curl https://api.omise.co/charges/$PARTIAL_UNCAPTURED_CHARGE_ID/capture \
-u $OMISE_SECRET_KEY: \
-d "capture_amount=4000"
Multiple Partial Capture
現時点では、OmiseはMultiple Partial Captureをサポートしていません。
❓ よくある質問
Single Partial Captureはデフォルトで有効になっていますか?それともリクエストが必要ですか? 対象となる加盟店であればデフォルトで有効になっており、特別な設定は必要ありません。ただし、Omise Thailandと契約している加盟店のみご利用いただけます。ご自身のアカウントが対象かどうか不明な場合は、Omiseの担当営業チームにお問い合わせください。
1つのchargeに対して複数回キャプチャする(複数回の部分キャプチャを行う)ことはできますか? 現時点ではできません。OmiseはまだMultiple Partial Captureをサポートしていないため、オーソリされた各chargeは、全額または一部の金額のいずれかで一度だけキャプチャできます。
Single Partial Captureの後、キャプチャされなかった残額は手動で解除する必要がありますか? いいえ。オーソリした全額より少ない金額をキャプチャした場合、Omiseが残りの金額の確保を自動的に解除します。別途対応する必要はありません。
オーソリ有効期間内にchargeをキャプチャしなかった場合、どうなりますか?
キャプチャされなかった金額は自動的に解除され、chargeのステータスはreversedに変わります。
authorization_type=pre_auth と authorization_type=final_auth の違いは何ですか?
オーソリした金額が見積もりであり、実際にキャプチャする金額より多い可能性がある場合は pre_auth を使用します。これは主にSingle Partial Captureで使用します。一般的なManual Captureでは、デフォルトの final_auth を使用します。この場合、オーソリした金額は最終的な金額であり、一度だけ全額でキャプチャできます。
加盟店が何も配送しなかった場合など、THB 0でキャプチャしようとするとどうなりますか?
想定とは異なる動作になります。THB 0でのキャプチャはサポートされていません。capture_amount=0 を送信すると、0ではなくオーソリした金額全額がキャプチャされます。加盟店が代金を回収するつもりがない場合は、キャプチャを試みず、オーソリを期限切れにして自動的に解除させてください。