コンビニ決済、Pay-easy決済、ネットバンク決済

このページで扱うトピック

コンビニ決済、Pay-easy決済、ネットバンク決済は、日本国内のユーザーがコンビニエンスストア、ATM、銀行、郵便局など様々な場所で決済を簡単に行うことができるサービスです。 現在対応しているコンビニエンスストアは、ファミリーマート、ローソン、ミニストップ、セイコーマートです。

誠に申し訳ありませんが、個人事業主様はコンビニ決済、Pay-easy決済、ネットバンク決済サービスをご利用いただけません。

有効にする方法

  • サポートされる国: 日本
  • 最小のAPIバージョン: 2017-11-02

コンビニ決済、Pay-easy決済、ネットバンク決済を有効にするには、この機能をリクエストするメールをsupport@omise.coに送信してください。 新しい利用規約を確認して同意する必要があります。

決済の流れ

顧客は配送先を入力し注文内容をご確認いただいた後に、希望する決済方法を選択することが可能になります。顧客がメールアドレスと電話番号を入力すると、コンビニエンスストア、郵便局、ATMなどで支払いをするためのリンクが表示されます。決済方法はコンビニエンスストア、金融機関ごとに手続きが異なります。 顧客が正しくお手続きを行うことができるように、加盟店はOmiseが提供するリンクをご利用ください。

コンビニ決済フロー

オンラインでの手続きが完了しますと、顧客はご利用可能なコンビニエンスストア、金融機関などで決済を完了します。

Convenience Store payment flow

顧客が決済を完了すると、Omiseは、課金が成功したことを示すwebhookイベント(有効な場合)を送信します。

実装

コンビニ決済、Pay-easy決済、ネットバンク決済を使用して課金を作成するには、次のようにAPIリクエストを作成します。

  1. Omise.jsまたはモバイルSDK (iOSさらにAndroid)のいずれかを使用して、新しい課金ソース (type: econtext) Omise.js を作成します。
  2. ステップ1で作成したソースの識別子を使用して、新しい課金を作成します。
  3. 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で始まります)。

課金を作成する

パラメーターsourceamount、およびcurrencyを指定して課金を作成します。

  • sourceはソース識別子を指定します。
  • amountcurrencyは、ソースのamountcurrencyと一致する必要があります。

次の例は、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"

課金の完了

この時点で、新しい課金が作成されstatuspendingに設定されました。 課金statusのその他の可能な値は successful(成功)、failed(失敗),、およびexpired(期限切れ)です。

次のセクションでは、課金を承認する方法、webhookイベントを受け取る方法、およびステータスを更新する方法について詳しく説明します。

このシーケンス図は、フロー全体を示しています。

sequenceDiagram participant customer participant omise.js participant merchant participant api.omise.co participant offline provider customer->>omise.js: Send payment details for purchase omise.js->>api.omise.co: Request source using payment details api.omise.co-->>omise.js: Return source omise.js->>merchant: Merchant gets returned source merchant->>api.omise.co: Request charge using source and purchase details api.omise.co-xmerchant: Send "charge.create" webhook api.omise.co-->>merchant: Return charge customer->>offline provider: Provide payment or charge authorization at offline provider offline provider-->>api.omise.co: Return result of payment or charge authorization api.omise.co-xmerchant: Send "charge.complete" webhook merchant-xcustomer: Send charge result (e.g. via email)

課金の承認

課金オブジェクト内の authorize_uriで指定された場所を顧客に提示します。 顧客はその場で決済指示に従い課金を承認します。

テストモードでこの承認フェーズをシミュレートするには、authorize_uriにアクセスして、手動で課金をSuccessful または Failedとしてマークします。

課金完了イベントの受信

課金の完了を通知する一番良い方法は、webhookイベントを利用することです。 サーバー上の場所を設定して、Webhookイベントを受信し、この場所をWebhookエンドポイントとしてダッシュボード上に追加します。

課金が完了すると、課金レスポンスが埋め込まれたPOSTリクエストがこのエンドポイントに送信されます。

イベントオブジェクトのkey属性にはcharge.completeが含まれ、data属性には課金オブジェクトが含まれます。 イベントオブジェクトの構造については、イベントAPIをご覧ください。

課金ステータスの確認

このイベントを受信した後、idを使用して課金を取得し、このstatusがイベントに含まれる課金のstatusと一致することを確認してください。

statusの値が successfulに更新されると決済を受領したことになります。 statusの値がfailedに更新された場合、課金オブジェクトの failure_codefailure_messageから詳細を確認してください。

考えられるエラーコードは以下の通りです。

エラーコード 説明
failed_processing 一般的な決済処理の失敗。
payment_cancelled 購入者が決済をキャンセルしました。
timeout 購入者からのアクションがなかったため、課金は失効しました。

無効化と課金の払い戻し

コンビニ決済、Pay-easy決済、およびネットバンク決済で行われた課金は、Omiseで無効化または払い戻しを行うことはできません。

制限

  • 最小: 200 (¥200)
  • 最大: 49999 (¥49,999)

次のステップ

Omiseは、お客様のウェブサイト全般における利便性を向上するためにクッキーを利用し、お客様のアクセス、閲覧履歴に関する情報を収集します。 当社のウェブサイトを閲覧し続けることにより、お客様は当社のプライバシーポリシーに同意することとします。 詳細はこちら