Test vs Live Mode
Omiseは、実際の取引を処理したり実際のお金を使用したりすることなく、統合を開発およびテストできる完全なテスト環境を提供します。
2つの独立した環境
Omiseは2つの完全に隔離された環境で動作します:
Test Mode (Sandbox)
- ✅ 無料で使用 - 料金や手数料なし
- ✅ 完全に機能的 - すべての機能と決済方法をテスト
- ✅ 実際のお金なし - シミュレートされたトランザクションのみ
- ✅ 検証不要 - サインアップ後すぐにアクセス
- ✅ テストカード - 異なるシナリオをシミュレートする特別なカード番号を使用
- ✅ 独立したダッシュボード - dashboard.omise.coのTest Dashboard
Live Mode (本番環境)
- 💰 実際のトランザクション - 実際のお金が処理される
- 💰 実際のカード - 顧客が実際の決済方法を使用
- 💰 手数料が適用 - 標準の取引手数料が適用
- 💰 検証が必要 - ビジネス検証が必要
- 💰 独立したダッシュボード - dashboard.omise.coのLive Dashboard
TestとLiveモードは完全に分離されています。テストデータがライブデータに影響することはなく、テストchargeが実際のお金を処理することも ありません。
モード間の切り替え
TestとLiveモードの唯一の違いは、使用するAPI keyです:
| モード | Public Key | Secret Key |
|---|---|---|
| Test | pkey_test_... | skey_test_... |
| Live | pkey_... | skey_... |
統合コードはまったく同じままです。本番環境に移行する準備ができたら、API keyを交換するだけです!
コード例
// 開発/テスト
const omise = require('omise')({
secretKey: 'skey_test_5xp6c8n0jvds5mmjizz' // Test key
});
// 本番環境
const omise = require('omise')({
secretKey: 'skey_5xp6c8n0jvds5mmjizz' // Live key ("_test_"なし)
});
Test Dashboardの機能
Test modeを使用する際、特別なテスト機能にアクセスできます:
1. 自動Transfer
Test modeでは、転送された資金が自動的に「Transferable」残高に表示されます:
- Test Mode: 即時、待機期間なし
- Live Mode: 7日(タイ)、21日(日本)
2. 手動ステータス制御
特定の決済方法では、chargeを手動で成功または失敗としてマークできます:
- ダッシュボードのchargeに移動
- Actionsをクリック
- Mark as SuccessfulまたはMark as Failedを選択
これは、銀行振込やQR決済などの代替決済方法をテストするのに便利です。
3. Webhookテスト
Test webhookは、テストデータを使用してライブwebhookと同じように発火します:
- 設定されたwebhookエンドポイントに配信
- Test modeデータを含む
- 本番環境に移行する前にwebhookハンドラーの開発を支援
4. Transferシミュレーション
完全なtransferフローをテスト:
- Chargeを作成
- 資金がtransferableになるまで待つ(testでは即時)
- Transferを作成
- Mark as sentとMark as paidを使用して銀行処理をシミュレート
テストカード
Test modeで異なるシナリオをシミュレートするには、これらの特別なカード番号を使用します:
成功する決済
| カード番号 | ブランド | 3DS |
|---|---|---|
4242 4242 4242 4242 | Visa | いいえ |
5555 5555 5555 4444 | Mastercard | いいえ |
3530 1113 3330 0000 | JCB | いいえ |
3782 822463 10005 | American Express | いいえ |
3600 666633 3344 | Diners Club | いいえ |
6011 1111 1111 1117 | Discover | いいえ |
Test modeでは、将来の有効期限と任意の3-4桁のCVVコードを使用します。特定の値は重要ではありません。
失敗する決済
これらのカードで特定のエラーシナリオをテスト:
| カード番号 | エラーコード | エラーメッセージ |
|---|---|---|
4000 0000 0000 0002 | insufficient_fund | 残高不足 |
4000 0000 0000 0069 | stolen_or_lost_card | カード盗難報告 |
4000 0000 0000 0101 | failed_processing | 決済処理失敗 |
4000 0000 0000 0119 | payment_rejected | 発行者による決済拒否 |
4000 0000 0000 0127 | failed_fraud_check | 不正チェック失敗 |
4000 0000 0000 0010 | invalid_account_number | 無効なカード番号 |
例:
curl https://vault.omise.co/tokens \
-X POST \
-u pkey_test_YOUR_KEY: \
-d "card[number]=4000000000000002" \
-d "card[name]=John Doe" \
-d "card[expiration_month]=12" \
-d "card[expiration_year]=2027" \
-d "card[security_code]=123"
# これは"insufficient_fund"で失敗するchargeを作成します
3D Secureテスト
3D Secure(3DS)認証をテストするには:
- 3DSを有効化 - テストアカウントで(support@omise.coにお問い合わせ)
- 3DSテストカードを使用(下表参照)
- モック認証ページが表示されます
- CompleteまたはFailを選択して異なる結果をテスト
3D Secureテストカード
3DSテストには、3DS対応のテストアカウントが必要です。テストアカウントで3D Secureを有効にするには、support@omise.coにお問い合わせください。
登録失敗カード(設定の問題):
| カード番号 | ブランド | 結果 |
|---|---|---|
4111 1111 1115 0002 | Visa | 3DS登録失敗 |
5555 5511 1112 0002 | Mastercard | 3DS登録失敗 |
3530 1111 1110 0002 | JCB | 3DS登録失敗 |
認証失敗カード(検証の問題):
| カード番号 | ブランド | 結果 |
|---|---|---|
4111 1111 1114 0003 | Visa | 3DS認証失敗 |
5555 5511 1111 0003 | Mastercard | 3DS認証失敗 |
3771 3816 1111 003 | Amex | 3DS認証失敗 |
テストフロー:
# 1. 3DSカードでtokenを作成
curl https://api.omise.co/tokens \
-u pkey_test_YOUR_PUBLIC_KEY: \
-d "card[name]=John Doe" \
-d "card[number]=4111111111150002" \
-d "card[expiration_month]=12" \
-d "card[expiration_year]=2027" \
-d "card[security_code]=123"
# 2. 3DSリダイレクト用のreturn_uriでchargeを作成
curl https://api.omise.co/charges \
-u skey_test_YOUR_SECRET_KEY: \
-d "amount=100000" \
-d "currency=thb" \
-d "card=TOKEN_ID" \
-d "return_uri=https://example.com/3ds-return"
# 3. Chargeステータスはauthorize_uriと共に"pending"になります
# 4. 認証のために顧客をauthorize_uriにリダイレクト
# 5. 顧客が3DSチャレンジを完了
# 6. Chargeステータスが"successful"または"failed"に変更
決済方法のテスト
クレジット/デビットカード
上記のテストカード番号をpublic keyと共に使用してtokenを作成:
Omise.setPublicKey('pkey_test_YOUR_KEY');
Omise.createToken('card', {
name: 'John Doe',
number: '4242424242424242', // テストカード
expiration_month: 12,
expiration_year: 2027,
security_code: '123'
}, callback);
代替決済方法
代替決済方法(PromptPay、TrueMoney、モバイルバンキングなど)の場合:
- Test keyを使用してsource/chargeを作成
- Test modeでは、シミュレートされた決済ページが表示されます
- 異なるシナリオをテストするために決済を完了またはキャンセル
- またはダッシュボードでMark as Successful/Failedを使用
例 - PromptPay:
curl https://api.omise.co/sources \
-X POST \
-u skey_test_YOUR_KEY: \
-d "type=promptpay" \
-d "amount=100000" \
-d "currency=THB"
# テストQRコードと決済ページを返します
Webhookのテスト
Test Webhookの設定
- Test Dashboard → 設定 → Webhooksに移動
- WebhookエンドポイントのURLを追加
- 受信するイベントを選択
- 設定を保存
Test Webhookの要件
- ✅ 公開アクセス可能なURL(
localhost不可) - ✅ 有効なSSL証明書を持つHTTPS
- ✅ 200ステータスコードを返す
- ✅ 10秒以内に応答
Webhook テストのためにローカル開発サーバーを公開するには、ngrokやlocaltunnelなどのツールを使用してください。
Webhook配信のテスト
- イベントをトリガー(charge、refundなどを作成)
- Webhookエンドポイントのログを確認
- ダッシュボードで確認: 設定 → Webhooks → Delivery Logs
Webhookペイロードの例(Test Mode):
{
"object": "event",
"id": "evnt_test_5xp6ch5pmx5c5zzfjc3",
"livemode": false,
"location": "/events/evnt_test_5xp6ch5pmx5c5zzfjc3",
"key": "charge.complete",
"created_at": "2024-01-15T08:00:00Z",
"data": {
"object": "charge",
"id": "chrg_test_5xp6ccfmecft4zxrb7p",
"livemode": false,
"status": "successful",
"amount": 100000,
"currency": "thb"
}
}
Test modeを示す"livemode": falseフィールドに注意してください。
テストチェックリスト
本番環境に移行する前に、これらのシナリオをテストしてください: