コンビニ決済、Pay-easy決済、ネットバンク決済
コンビニ決済、Pay-easy決済、ネットバンク決済は、日本国内のユーザーがコンビニエンスストア、ATM、銀行、郵便局など様々な場所で決済を簡単に行うことができるサービスです。 現在対応しているコンビニエンスストアは、ファミリーマート、ローソン、ミニストップ、セイコーマートです。
誠に申し訳ありませんが、個人事業主様はコンビニ決済、Pay-easy決済、ネットバンク決済サービスをご利用いただけません。
有効にする方法
- サポートされる国: 日本
- 最小のAPIバージョン:
2017-11-02
コンビニ決済、Pay-easy決済、ネットバンク決済を有効にするには、この機能をリクエストするメールをsupport@omise.coに送信してください。 新しい利用規約を確認して同意する必要があります。
決済の流れ
顧客は配送先を入力し注文内容をご確認いただいた後に、希望する決済方法を選択することが可能になります。顧客がメールアドレスと電話番号を入力すると、コンビニエンスストア、郵便局、ATMなどで支払いをするためのリンクが表示されます。決済方法はコンビニエンスストア、金融機関ごとに手続きが異なります。 顧客が正しくお手続きを行うことができるように、加盟店はOmiseが提供するリンクをご利用ください。
オンラインでの手続きが完了しますと、顧客はご利用可能なコンビニエンスストア、金融機関などで決済を完了します。
顧客が決済を完了すると、Omiseは、課金が成功したことを示すwebhookイベント(有効な場合)を送信します。
実装
コンビニ決済、Pay-easy決済、ネットバンク決済を使用して課金を作成するには、次のようにAPIリクエストを作成します。
- Omise.jsまたはモバイルSDK (iOSさらにAndroid)のいずれかを使用して、新しい課金ソース (
type
:econtext
) Omise.js を作成します。 - ステップ1で作成したソースの識別子を使用して、新しい課金を作成します。
- webhookイベントの課金完了の通知を受信した後、課金を取得してそのステータス(オプションだが推奨)を確認します。
パブリックキーを利用して、クライアント側(顧客のブラウザーまたは携帯電話)でコンビニ決済、Pay-easy決済、ネットバンク決済ソースを作成します。 シークレットキーを利用して、サーバー側でコンビニ決済、Pay-easy決済、ネットバンク決済課金を作成します。
サーバー側で、ソースの作成と課金の両方を行う必要がある場合は、シークレットキーを使用してシングルAPIリクエストでソースを作成し課金できます。
ソースの作成
お客様がこの方法で決済を希望された場合、amount
, currency
, email
, name
, phone_number
, and type
を指定して新しいソースを作成します。
名前 | タイプ | 属性 |
---|---|---|
amount |
integer | (必須) 制限 |
currency |
string | (必須) JPY |
type |
string | (必須) econtext |
name |
string | (必須)最大10文字の英数字、ひらがな、カタカナ、または漢字。決済方法によってコンビニキオスクまたは領収書に表示される場合があります。 |
email |
string | (必須)最小6文字、最大50文字の数 |
phone_number |
string | (必須)長さが最小10桁、最大11桁 |
次の例は、¥300の新しいコンビニ決済、Pay-easy決済、ネットバンク決済ソースの作成を示しています。
omise_public_key
と$OMISE_PUBLIC_KEY
変数をダッシュボードのテストパブリックキーに置き換えます: https://dashboard.omise.co/test/keys
type
パラメーターはOmise.jsを利用して、createSource
メソッドの最初の引数として提供されます。
Omise.setPublicKey(omise_public_key);
Omise.createSource('econtext', {
"amount": 300,
"currency": "JPY",
"name": "ヤマダタロウ",
"email": "taro.yamada@example.com",
"phone_number": "01234567891"
}, function(statusCode, response) {
console.log(response)
});
テストとして、curlを利用し同じリクエストを作成できます。
curl https://api.omise.co/sources \
-u $OMISE_PUBLIC_KEY: \
-d "amount=300" \
-d "currency=JPY" \
-d "type=econtext" \
-d "name=ヤマダタロウ" \
-d "email=taro.yamada@example.com" \
-d "phone_number=01234567891"
{
"object": "source",
"id": "src_test_5kdpocynnw187o5zym9",
"livemode": false,
"location": "/sources/src_test_5kdpocynnw187o5zym9",
"amount": 300,
"barcode": null,
"created_at": "2020-06-30T03:53:22Z",
"currency": "JPY",
"email": "taro.yamada@example.com",
"flow": "offline",
"installment_term": null,
"name": "ヤマダタロウ",
"mobile_number": "01234567891",
"phone_number": "01234567891",
"scannable_code": null,
"references": null,
"store_id": null,
"store_name": null,
"terminal_id": null,
"type": "econtext",
"zero_interest_installments": null
}
id
属性はソース識別子です(src
で始まります)。
課金を作成する
パラメーターsource
、amount
、およびcurrency
を指定して課金を作成します。
source
はソース識別子を指定します。amount
とcurrency
は、ソースのamount
とcurrency
と一致する必要があります。
次の例は、curlを使用して新しい課金を作成する方法を示しています。
$OMISE_SECRET_KEY
をダッシュボードにあるテストシークレットキーに置き換えます:https://dashboard.omise.co/test/keys。
$SOURCE_ID
をソースのid
に置き換えます。
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=300" \
-d "currency=JPY" \
-d "source=$SOURCE_ID"
{
"object": "charge",
"id": "chrg_test_5kdpod2h44qi91jrzft",
"location": "/charges/chrg_test_5kdpod2h44qi91jrzft",
"amount": 300,
"net": 133,
"fee": 152,
"fee_vat": 15,
"interest": 0,
"interest_vat": 0,
"funding_amount": 300,
"refunded_amount": 0,
"authorized": false,
"capturable": false,
"capture": true,
"disputable": false,
"livemode": false,
"refundable": false,
"reversed": false,
"reversible": false,
"voided": false,
"paid": false,
"expired": false,
"platform_fee": {
"fixed": null,
"amount": null,
"percentage": null
},
"currency": "JPY",
"funding_currency": "JPY",
"ip": null,
"refunds": {
"object": "list",
"data": [],
"limit": 20,
"offset": 0,
"total": 0,
"location": "/charges/chrg_test_5kdpod2h44qi91jrzft/refunds",
"order": "chronological",
"from": "1970-01-01T00:00:00Z",
"to": "2020-06-30T03:53:23Z"
},
"link": null,
"description": null,
"metadata": {},
"card": null,
"source": {
"object": "source",
"id": "src_test_5kdpocqt70lrxkfx25n",
"livemode": false,
"location": "/sources/src_test_5kdpocqt70lrxkfx25n",
"amount": 300,
"barcode": null,
"created_at": "2020-06-30T03:53:21Z",
"currency": "JPY",
"email": "taro.yamada@example.com",
"flow": "offline",
"installment_term": null,
"name": "ヤマダタロウ",
"mobile_number": "01234567891",
"phone_number": "01234567891",
"scannable_code": null,
"references": {
"expires_at": "2020-07-30T03:53:22Z",
"device_id": null,
"customer_amount": null,
"customer_currency": null,
"customer_exchange_rate": null,
"omise_tax_id": null,
"reference_number_1": null,
"reference_number_2": null,
"barcode": null,
"payment_code": "588360",
"va_code": null
},
"store_id": null,
"store_name": null,
"terminal_id": null,
"type": "econtext",
"zero_interest_installments": null
},
"schedule": null,
"customer": null,
"dispute": null,
"transaction": null,
"failure_code": null,
"failure_message": null,
"status": "pending",
"authorize_uri": "https://pay.omise.co/offlines/econtext/instructions/oflp_test_5kdpod2k3edg4bqem7b",
"return_uri": null,
"created_at": "2020-06-30T03:53:22Z",
"paid_at": null,
"expires_at": "2020-07-30T03:53:22Z",
"expired_at": null,
"reversed_at": null,
"zero_interest_installments": false
}
失効日の設定について
この決済方法では、オプションのexpires_at
パラメーターも使用できます。
デフォルトでは、課金は30日で失効します。
課金の失効日を変更したい場合、expires_at
パラメータを指定し、ISO 8601形式の日付をUTC時間で設定してください。
日本時間はUTCより9時間早いためご注意ください。例えば、失効日を日本時間2020年7月1日0時とする場合には、 2020-07-01T15:00:00Z
と設定してください。
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "description=Charge for order 3947" \
-d "amount=300" \
-d "currency=JPY" \
-d "source=$SOURCE_ID" \
-d "expires_at=2020-07-01T15:00:00Z"
ソースと課金の作成
他の方法としてsingle APIリクエストでソースを作成し課金することもできます。
curl https://api.omise.co/charges \
-u $OMISE_SECRET_KEY: \
-d "amount=300" \
-d "currency=JPY" \
-d "source[type]=econtext" \
-d "source[name]=ヤマダタロウ" \
-d "source[email]=taro.yamada@example.com" \
-d "source[phone_number]=01234567891"
課金の完了
この時点で、新しい課金が作成されstatus
がpending
に設定されました。
課金status
のその他の可能な値は successful
(成功)、failed
(失敗),、およびexpired
(期限切れ)です。
次のセクションでは、課金を承認する方法、webhookイベントを受け取る方法、およびステータスを更新する方法について詳しく説明します。
このシーケンス図は、フロー全体を示しています。
課金の承認
課金オブジェクト内の authorize_uri
で指定された場所を顧客に提示します。
顧客はその場で決済指示に従い課金を承認します。
テストモードでこの承認フェーズをシミュレートするには、authorize_uri
にアクセスして、手動で課金をSuccessful
または Failed
としてマークします。
課金完了イベントの受信
課金の完了を通知する一番良い方法は、webhookイベントを利用することです。 サーバー上の場所を設定して、Webhookイベントを受信し、この場所をWebhookエンドポイントとしてダッシュボード上に追加します。
課金が完了すると、課金レスポンスが埋め込まれたPOSTリクエストがこのエンドポイントに送信されます。
イベントオブジェクトのkey
属性にはcharge.complete
が含まれ、data
属性には課金オブジェクトが含まれます。
イベントオブジェクトの構造については、イベントAPIをご覧ください。
課金ステータスの確認
このイベントを受信した後、id
を使用して課金を取得し、このstatus
がイベントに含まれる課金のstatus
と一致することを確認してください。
status
の値が successful
に更新されると決済を受領したことになります。
status
の値がfailed
に更新された場合、課金オブジェクトの failure_code
とfailure_message
から詳細を確認してください。
考えられるエラーコードは以下の通りです。
エラーコード | 説明 |
---|---|
failed_processing |
一般的な決済処理の失敗。 |
payment_cancelled |
購入者が決済をキャンセルしました。 |
timeout |
購入者からのアクションがなかったため、課金は失効しました。 |
無効化と課金の払い戻し
コンビニ決済、Pay-easy決済、およびネットバンク決済で行われた課金は、Omiseで無効化または払い戻しを行うことはできません。
制限
- 最小:
200
(¥200) - 最大:
49999
(¥49,999)