分割払い
このページで扱うトピック
分割払いをご利用いただくと、一定期間に少額ずつお支払いただくことが可能になります。Omiseでは、この利便性の高い決済方法をご利用いただけるようAPIを提供しています。現時点では、合計支払金額が2,000THB以上となった場合に、最大36回の分割払いプランをご利用いただけます(利用可能な期間の長さおよび月々の最低支払額は、ご利用のカード毎に異なります)。
利用可能なカード一覧
クレジットカード | ソース type |
installment_term お支払いの期間 (月) |
月ごとの最低支払い額(THB) |
---|---|---|---|
アユタヤ銀行 | installment_bay |
3, 4, 6, 9, 10 | 500 |
バンコク銀行 | installment_bbl |
4, 6, 8, 9, 10 | 500 |
アユタヤ・ファーストチョイス | installment_first_choice |
3, 4, 6, 9, 10, 12, 18, 24, 36 | 300 |
カシコーン銀行 | installment_kbank |
3, 4, 6, 10 | 300 |
クルンタイ銀行 | installment_ktc |
3, 4, 5, 6, 7, 8, 9, 10 | 300 |
決済フロー
顧客が分割支払いを選択すると、支払いページがリダイレクトされます。加盟店のウェブサイトから、銀行が運営するページにリダイレクトされた上で、決済金額の確認が行なわれます。完了すると、顧客は加盟店のWebサイトに再度リダイレクトされます。
次のスクリーンショットは、この決済フローを説明しています。支払い時に、顧客は分割支払いを選択します。
支払い先の銀行を選択した後、銀行が運営するWebページにリダイレクトされます。決済金額ならびに照合番号は、承認ページに既に入力された状態になります。
顧客は、決済情報と支払い金額を確認するだけの状態になります。確認後、顧客は指定されたreturn_uri
を介して、加盟店のウェブサイトに再度リダイレクトされます。
実装
通常、分割払い料金の作成には以下の手順が含まれます。 1. ソースAPIを利用して、新しい決済ソースを作成する。 2. 課金APIを利用して、新しい課金を作成し、最初のステップで作成したソースIDを渡す。
これは、新しい決済ソースの登録(ステップ1)がパブリックキー(公開鍵)を利用してクライアント側(例:ユーザのブラウザまたは携帯電話上)で行われ、課金の作成(ステップ2)がプライベートキー(秘密鍵)を使用してサーバ側で行われると仮定します。
このフローをクライアント側で実装する際は、Omise.jsまたはOmiseのモバイルSDKいずれかを使用することをお勧めします。
また、非推奨ですが、サーバー側でソースの作成と課金の両方が行われる必要がある場合、課金APIを利用してソースの作成と課金を行うことができます。
どちらが分割払いの利息を負担するかを設定する
ソースを作成する前に、どちらが分割払いの利子を負担するかを設定します。これは加盟店 (Merchant
) でも顧客(Customer
)でもかまいません。この設定は管理画面で設定できます。
クライアント側のソースを作成する
分割支払の方法は、ソースの種類として実装されています。上記リストにtype
およびinstallment_term
パラメーターの有効値が記されています。installment_term
の有効な値は、総額と月々の最低支払い額(amount
)によって異なることにご留意ください。新しいソースの作成コードは以下の通りです。
注:以下の例では$ OMISE_PUBLIC_KEY
環境変数をご自身のパブリックキー(公開鍵)が含まれるように設定しておく必要があります。
curl https://api.omise.co/sources \
-X POST \
-u $OMISE_PUBLIC_KEY: \
-d "description=Installment Payment Source" \
-d "amount=500000" \
-d "currency=THB" \
-d "type=installment_kbank" \
-d "installment_term=4" \
-H "Omise-Version: 2019-05-29"
{
"object": "source",
"id": "src_test_5g2hvadpm5ucvap2a6n",
"livemode": false,
"location": "/sources/src_test_5g2hvadpm5ucvap2a6n",
"type": "installment_kbank",
"flow": "redirect",
"amount": 500000,
"currency": "THB",
"installment_term": 4,
"zero_interest_installments": true
}
返されたソースオブジェクトは、zero_interest_installments
属性に加えて、ソース作成時に渡されたパラメータを反映しています。管理画面にて分割払いの利子を負担するようにMerchant
(加盟店)を設定した場合、true
に設定されます。
分割払い手数料の作成
上記の返されたオブジェクトのid
属性の値を使用して、新しい請求用のソース
パラメータの値として渡します。この課金には、課金承認のためにサイトを離れる顧客が含まれるため、パラメータreturn_uri
も渡す必要があります。課金完了時に顧客がリダイレクトされるサイトのURLはこちらです。
注:この例では、ご自身ののシークレットキー(秘密鍵)が含まれるよう、$ OMISE_SECRET_KEY
環境変数を設定しておく必要があります。また、$ SOURCE_ID
には上記のid
属性の値を含める必要があります。
curl https://api.omise.co/charges \
-X POST \
-u $OMISE_SECRET_KEY: \
-d "source=$SOURCE_ID" \
-d "description=Installment Payment Charge" \
-d "amount=500000" \
-d "currency=THB" \
-d "return_uri=https://example.com/orders/345678/complete" \
-H "Omise-Version: 2019-05-29"
{
"object": "charge",
"id": "chrg_test_5g2hvak2zoseiam51ps",
"livemode": false,
"location": "/charges/chrg_test_5g2hvak2zoseiam51ps",
"created_at": "2019-05-30T07:43:46Z",
"amount": 500000,
"currency": "THB",
"funding_amount": 500000,
"funding_currency": "THB",
"fee": 18250,
"fee_vat": 1278,
"interest": 13000,
"interest_vat": 910,
"net": 466562,
"description": "Installment Payment Charge",
"metadata": {
},
"status": "pending",
"capture": true,
"authorized": false,
"schedule": null,
"reversed": false,
"reversed_at": null,
"expires_at": "2019-06-06T07:43:46Z",
"expired": false,
"expired_at": null,
"voided": false,
"paid": false,
"paid_at": null,
"transaction": null,
"refunded_amount": 0,
"refunds": {
"object": "list",
"from": "1970-01-01T00:00:00Z",
"to": "2019-05-30T07:43:47Z",
"offset": 0,
"limit": 20,
"total": 0,
"order": "chronological",
"location": "/charges/chrg_test_5g2hvak2zoseiam51ps/refunds",
"data": [
]
},
"link": null,
"return_uri": "https://example.com/orders/345678/complete",
"failure_code": null,
"failure_message": null,
"card": null,
"customer": null,
"ip": null,
"dispute": null,
"source": {
"object": "source",
"id": "src_test_5g2hv9yy2k9n0640fox",
"livemode": false,
"location": "/sources/src_test_5g2hv9yy2k9n0640fox",
"type": "installment_kbank",
"flow": "redirect",
"amount": 500000,
"currency": "THB"
},
"disputable": false,
"capturable": false,
"reversible": false,
"refundable": false,
"authorize_uri": "https://pay.omise.co/offsites/ofsp_test_5g2hvak9ayf70bg0gm6/pay"
}
サーバー側のソースと課金を作成する
あるいは、課金作成時にソースを指定する必要がある場合(すなわちサーバ側)、課金API を利用してソースの作成と課金を行うことができます。
curl https://api.omise.co/charges \
-X POST \
-u $OMISE_SECRET_KEY: \
-d "amount=500000" \
-d "currency=THB" \
-d "return_uri=http://example.com/orders/345678/complete" \
-d "source[type]=installment_kbank" \
-d "source[installment_term]=4" \
-H "Omise-Version: 2019-05-29"
承認
上記のAPIコールから作成された課金オブジェクトには、属性 authorize_uri
が含まれています 。こちらが、銀行が運営するWebページのURIで、顧客に課金の確認、および承認を依頼します。
テストモードではURIにアクセスし、手動で課金を成功または失敗としてマークすることで、この一連の動作をシミュレートできます。
ステータスを確認する
Webhookを介した自動支払い
課金が完了したときに通知を受け取るには、イベントAPIを使用します。設定が完了すると、分割払いの支払いが完了するたびに、イベントキー
charge.complete
を含むリクエストが、設定済みのWebhookエンドポイントに送信されます。 詳細はWebhooksをご覧ください。
課金オブジェクトのステータスには、課金の失敗
、期限切れ
、保留
、または成功
という値を設定できます。 課金が成功
した場合、承認済み
および支払済み
の値はtrue
となります。
課金状況が失敗
または期限切れ
となった場合は、状況の理由を、課金オブジェクトのfailure_code
およびfailure_message
属性からご確認ください。以下はfailure_code
の可能な値と詳細な説明です。
failure_code |
Description |
---|---|
insufficient_balance |
アカウントの資金不足、もしくはクレジットカードの限度額が上限に達しています。 |
payment_cancelled |
支払いがキャンセルされました。 |
timeout |
決済の有効期限前にユーザーからの応答がありませんでした。 |
failed_processing |
支払い処理に失敗しました。 |
マニュアル
課金APIで説明されているように、id
を使用して取得することで、課金の任意の属性を確認できます。こちらはJSONフィルタツール、jqを使った例です。
curl -s https://api.omise.co/charges/$CHARGE_ID \
-u $OMISE_SECRET_KEY: | jq -M .status
"pending"
返金
分割払い手数料の返金方法については、返金APIドキュメントをご参照ください。
注:分割払いの手数料は全額払い戻しのみで、部分払い戻しには対応していません。
分割払いを有効にする
本番モードでの取引でAPIを使用する前に、利用規約をご確認ください。
利用を開始するにあたって必要なAPIのバージョンは2017-11-02
以降です。APIバージョン の更新に関するガイダンスについては、APIバージョンを参照してください。