クレジットカード決済
このページで扱うトピック
- クレジットカードへの請求
クレジットカードへの請求
この記事では、Omise APIを使用してクレジットカードに請求する方法について説明します。
直接請求の例では、最初にトークンとしてカード情報を収集する必要があります。トークンはすべて一度しか使用できません。そのため、カードに直接請求するか、将来の使用に備えてそのカードを顧客に紐付けるかを慎重に選択してください。
カードを顧客に紐付ける主な利点は、同じカードに複数回請求できる点です。リピート顧客は、購入のたびにカード情報を繰り返し入力する手間が省けます。
カードへの直接請求
これはカードに請求する最も簡単な方法です。カードトークンを受け取ったら、請求する金額とともにCharges APIに送信してください。数秒以内にカードへの請求が完了します。
注意: トークンは使用後に無効化されます。同じトークンで再度カードに請求したり、顧客を作成したりすることはできません。
Omise Rubyライブラリを使用した例を以下に示します。
charge = Omise::Charge.create({
amount: 100025,
currency: "thb",
description: "Order-345678",
return_uri: "http://localhost/orders/345678/complete",
card: params[:omise_token]
})
return_uri — 3-Dセキュアが有効な場合に、顧客をリダイレクトするURLです。
顧客への請求
トークンを使用して顧客を作成すると、必要に応じて同じカードに複数回請求できます。Customers APIを利用することで、顧客がカード情報を毎回入力しなくて済むチェックアウトフローを構築できます。これにより、カート放棄率を大幅に低減できます。
顧客に請求する方法は2つあります。
デフォルトカードへの請求
デフォルトカードに請求する場合は、顧客IDのみを渡します。この方法は、顧客1人につきカードを1枚のみ管理する場合に最適です。
charge = Omise::Charge.create({
amount: 100025,
currency: "thb",
description: "Order-345678",
return_uri: "http://localhost/orders/345678/complete",
customer: user.omise_customer_id
})
特定カードへの請求
顧客のアカウントに複数のカードが紐付いている場合は、顧客IDと特定のカードIDの両方を渡します。
注意: トークンを使用したカードへの直接請求とは異なり、請求を作成する際にはトークンIDではなく実際のカードIDを渡す必要があります。顧客のカード一覧を取得する方法については、全カードの一覧取得およびページネーションのドキュメントを参照してください。
charge = Omise::Charge.create({
amount: 100025,
currency: "thb",
description: "Order-345678",
return_uri: "http://localhost/orders/345678/complete",
customer: customer.omise_id,
card: customer.cards.find_by(id: params[:id]).omise_id
})
請求ステータス
3-Dセキュアが有効な場合
| ステータス | 説明 |
|---|---|
successful |
カードへの請求が正常に完了しました(authorized = true かつ paid = true)。 |
pending |
カード保有者による承認が完了していない(authorized = false)、または請求は承認済みだが手動キャプチャ待ちの状態です(authorized = true かつ capture = false)。 |
reversed |
承認済みの請求が取り消され、保留中の金額が解放されました。 |
expired |
手動キャプチャ待ちの請求に対して、保留期間内に何も操作が行われませんでした。 |
failed |
請求が失敗しました。請求結果の failure_code および failure_message で失敗の理由を確認してください。 |
3-Dセキュアが無効な場合
| ステータス | 説明 |
|---|---|
successful |
カードへの請求が正常に完了しました(authorized = true かつ paid = true)。 |
pending |
請求は承認済みですが、手動キャプチャ待ちの状態です(authorized = true かつ capture = false)。 |
reversed |
承認済みの請求が取り消され、保留中の金額が解放されました。 |
expired |
手動キャプチャ待ちの請求に対して、保留期間内に何も操作が行われませんでした。 |
failed |
請求が失敗しました。請求結果の failure_code および failure_message で失敗の理由を確認してください。 |
請求限度額
タイ
| 金額 | |
|---|---|
| 最小 | 2000(THB 20.00) |
| 最大 | 15000000(THB 150,000.00) |
シンガポール
| 金額 | |
|---|---|
| 最小 | 100(SGD 1.00) |
| 最大 | 2000000(SGD 20,000.00) |
マレーシア
| 金額 | |
|---|---|
| 最小 | 100(MYR 1.00) |
| 最大 | 10000000(MYR 100,000.00) |
日本
| 金額 | |
|---|---|
| 最小 | 100(JPY 100) |
| 最大 | 6000000(JPY 6,000,000) |
よくある質問
Q: カードトークンは再利用できますか?
いいえ。トークンは1回限りの使用です。トークンが請求または顧客の作成に使用されると、即座に無効化され、再利用することはできません。
Q: カードへの直接請求と顧客への請求の違いは何ですか?
トークンを使用したカードへの直接請求は1回限りの取引です。顧客への請求では、カードが顧客レコードに紐付けられるため、顧客が再度カード情報を入力しなくても、同じカードに複数回請求することができます。
Q: 顧客に複数のカードを登録できますか?
はい。1人の顧客に複数のカードを紐付けることができます。請求を作成する際に、顧客IDとともにカードIDを指定することで、特定のカードに請求できます。カードIDを指定しない場合は、デフォルトカードに請求されます。
Q: 請求が失敗した場合はどうすればよいですか?
請求オブジェクトに返される failure_code および failure_message フィールドを確認してください。残高不足やカードの拒否など、失敗の原因が記載されています。
Q: 3-Dセキュアとは何ですか?またいつ発動しますか?
3-Dセキュア(3DS)は、一部のカード発行会社が請求を承認する前に要求する追加の認証ステップです。発動すると、顧客は銀行の認証ページにリダイレクトされ、その後指定した return_uri に戻されます。詳細については、3-Dセキュアのドキュメントを参照してください。
Q: 請求が pending ステータスのままになった場合はどうなりますか?
手動キャプチャ待ちの請求は、保留期間内にキャプチャ操作が行われないと期限切れになります。請求は expired ステータスに移行し、保留中の金額が解放されます。
Q: 顧客のカード一覧を取得するにはどうすればよいですか?
全カードの一覧取得エンドポイントを使用してください。ページネーション結果の処理方法については、ページネーションのドキュメントを参照してください。
Q: 請求金額に最小・最大の制限はありますか?
はい。制限は国および通貨によって異なります。地域別の値については、上記の請求限度額セクションを参照してください。