メインコンテンツへスキップ

テスト

全支払い方法をサポートするテストモード、テストカード、シミュレートされた支払いシナリオを使用したOmise統合のテストに関する包括的なガイド。

概要

Omiseは、実際のトランザクションを処理せずに本番環境の動作をミラーリングする完全なテスト環境を提供します。テストモードにより、統合を検証し、エラー処理をテストし、本番環境に移行する前にさまざまな支払いシナリオをシミュレートできます。

主な機能:

  • 独立したテストキー - テスト専用の専用APIキー
  • テストカード - 成功、拒否、エラーシナリオをシミュレート
  • すべての支払い方法 - QR、ウォレット、銀行などをテスト
  • Webhookテスト - テストWebhookを受信
  • 実際のお金なし - 安全なテスト環境
  • 完全機能パリティ - テスト環境が本番環境をミラーリング

テストモード対ライブモード

機能テストモードライブモード
APIキーpkey_test_..., skey_test_...pkey_..., skey_...
実際のお金いいえはい
テストカード受け入れ済み拒否
実際のカード拒否受け入れ済み
Webhook配信済み配信済み
ダッシュボードテストデータのみライブトランザクション
重要

テストモードとライブモードは完全に分離されています。テストキーは実際のトランザクションを処理できず、ライブキーはテストデータを使用できません。

テストAPIキーの取得

ダッシュボードから

  1. Omiseダッシュボードにログイン
  2. テストモードに切り替えるためにトグルを使用
  3. 設定 → APIキーに移動
  4. テストキーをコピー:
    • 公開キー: pkey_test_... (クライアント側)
    • 秘密キー: skey_test_... (サーバー側)

テストキー形式

# 公開キー (クライアント側で安全に使用)
pkey_test_5rt6s9vah5lkvi1rh9c

# 秘密キー (サーバー側のみ、決してExposeしない)
skey_test_5rt6s9vah5lkvi1rh9c
セキュリティ

テストキーを公開リポジトリにコミットしたり、クライアント側のコードにExposeしたりしないでください。テストキーは実際のお金を処理しませんが、機密テストデータにアクセスできます。

テストカード

成功シナリオ

カード番号ブランド3DS結果
4242 4242 4242 4242Visaいいえ成功
4242 4242 4242 4242Visaはい成功 (3DS)
5555 5555 5555 4444Mastercardいいえ成功
5555 5555 5555 4444Mastercardはい成功 (3DS)
3566 1111 1111 1111JCBいいえ成功
3782 822463 10005Amexいいえ成功

拒否シナリオ

カード番号エラーコードメッセージ
4000 0000 0000 0002payment_rejectedチャージが拒否されました
4000 0000 0000 0010insufficient_fund資金不足
4000 0000 0000 0028stolen_or_lost_cardカードが盗まれた/紛失
4000 0000 0000 9995failed_processing処理エラー

不正検出

カード番号不正結果動作
4000 0000 0000 0101フラグ付き手動レビュー対象としてマーク
4000 0000 0000 0044ブロックトランザクションがブロック

3D Secureテスト

注記

3DSテストでは3DS対応テストアカウントが必要です。有効にするにはsupport@omise.coにお問い合わせください。

カード番号3DS動作結果
4242 4242 4242 4242フリクションレス (チャレンジなし)成功
4111 1111 1115 0002登録失敗拒否
4111 1111 1114 0003認証失敗拒否

3DS認証のテスト:

  • 将来の有効期限は機能します
  • 任意の3-4桁のCVVを使用
  • 任意のカードホルダー名を使用

テスト用カード詳細

// 成功カード
{
name: "John Doe",
number: "4242424242424242",
expiration_month: 12,
expiration_year: 2027,
security_code: "123"
}

// 拒否カード
{
name: "Jane Smith",
number: "4000000000000002",
expiration_month: 12,
expiration_year: 2027,
security_code: "123"
}
有効期限

テストカードでは有効期限を使用できます。少なくとも1年先の日付を使用することをお勧めします。

支払い方法のテスト

クレジット/デビットカード

// Omise.jsを使用
Omise.setPublicKey("pkey_test_YOUR_KEY");

Omise.createToken("card", {
name: "Test Card",
number: "4242424242424242",
expiration_month: 12,
expiration_year: 2027,
security_code: "123"
}, function(statusCode, response) {
if (statusCode === 200) {
console.log('Token created:', response.id);
// チャージを作成するためにトークンを使用
}
});

QR支払い (PromptPay、PayNowなど)

// テスト用PromptPayソースを作成
const source = await omise.sources.create({
type: 'promptpay',
amount: 35000,
currency: 'THB'
});

// QRコードが生成されます
console.log('QR Code URL:', source.scannable_code.image.download_uri);

// ダッシュボードで支払いをシミュレート
// 1. ダッシュボード → チャージに移動
// 2. 保留中のチャージを検索
// 3. [成功にマーク] または [失敗にマーク] をクリック

電子ウォレット (TrueMoney、GrabPayなど)

// テストウォレットソースを作成
const source = await omise.sources.create({
type: 'truemoney',
amount: 50000,
currency: 'THB',
phone_number: '+66876543210' // テストではタイ番号を使用可能
});

// ダッシュボードでシミュレート
// ダッシュボード → チャージ → 成功にマーク

モバイルバンキング

// テスト用モバイルバンキングソースを作成
const source = await omise.sources.create({
type: 'mobile_banking_kbank',
amount: 100000,
currency: 'THB'
});

// ダッシュボードでシミュレート
// ダッシュボード → チャージ → アクション → 成功にマーク

支払い結果のシミュレート

ダッシュボード経由

  1. テストダッシュボードにログイン
  2. テストモードが有効になっていることを確認
  3. チャージに移動
  4. 保留中のチャージを検索
  5. アクションドロップダウンをクリック
  6. 以下を選択:
    • 成功にマーク - 成功した支払いをシミュレート
    • 失敗にマーク - 支払い失敗をシミュレート

API経由 (テストWebhook)

// チャージは自動的にWebhookをトリガー
// Webhookエンドポイントログを確認

app.post('/webhooks/omise', (req, res) => {
const event = req.body;

console.log('Test webhook received:', event.key);
console.log('Charge ID:', event.data.id);
console.log('Status:', event.data.status);

res.sendStatus(200);
});

Webhookのテスト

ngrokを使用したローカルテスト

# ngrokをインストール
npm install -g ngrok

# ローカルサーバーを起動
node server.js # ポート3000で実行

# トンネルを作成
ngrok http 3000

# 出力:
# Forwarding https://abc123.ngrok.io -> http://localhost:3000

ダッシュボードでWebhookを構成:

  1. ngrok HTTPS URLをコピー
  2. 設定 → Webhookに移動
  3. エンドポイントを追加: https://abc123.ngrok.io/webhooks/omise
  4. テストイベントを選択
  5. 保存

テストWebhook配信

// Webhookハンドラー
app.post('/webhooks/omise', (req, res) => {
const event = req.body;

// デバッグ用にログ
console.log('=== Webhook受信 ===');
console.log('Event:', event.key);
console.log('Object:', event.object);
console.log('Data:', JSON.stringify(event.data, null, 2));

// シグネチャを検証 (重要!)
if (!verifyWebhookSignature(req)) {
console.error('Invalid signature!');
return res.sendStatus(401);
}

// イベントを処理
switch (event.key) {
case 'charge.complete':
handleChargeComplete(event.data);
break;
case 'charge.failed':
handleChargeFailed(event.data);
break;
}

res.sendStatus(200);
});

手動Webhookテスト

# cURLを使用してWebhookをシミュレート
curl -X POST http://localhost:3000/webhooks/omise \
-H "Content-Type: application/json" \
-d '{
"object": "event",
"id": "evnt_test_123",
"key": "charge.complete",
"data": {
"object": "charge",
"id": "chrg_test_123",
"status": "successful",
"amount": 100000
}
}'

払戻のテスト

全額払戻

// テストモードでチャージを作成
const charge = await omise.charges.create({
amount: 100000,
currency: 'THB',
card: testTokenId
});

// 成功ステータスを待機
// その後払戻
const refund = await omise.charges.refund(charge.id, {
amount: 100000
});

console.log('Refund status:', refund.status);

部分払戻

// 部分払戻 (50%)
const partialRefund = await omise.charges.refund(charge.id, {
amount: 50000
});

// 複数の部分払戻 (チャージあたり最大15)
const refund2 = await omise.charges.refund(charge.id, {
amount: 25000
});

無効化対払戻

// 無効化 (24時間以内) - 即座にキャンセル
const voidRefund = await omise.charges.refund(charge.id, {
amount: 100000
});

if (voidRefund.voided) {
console.log('Charge was voided (no settlement)');
} else {
console.log('Charge was refunded (settled then refunded)');
}

3D Secureのテスト

テストで3DSを有効化

// return_uriを含めて3DSをトリガー
const charge = await omise.charges.create({
amount: 100000,
currency: 'THB',
card: tokenId,
return_uri: 'http://localhost:3000/payment/callback'
});

if (charge.authorize_uri) {
console.log('3DS required, redirect to:', charge.authorize_uri);
// ブラウザで: window.location = charge.authorize_uri
}

3DSフローのテスト

// フリクションレスフロー (チャレンジなし)
const token = await Omise.createToken("card", {
number: "4242424242424242", // チャレンジなしでパス
// ... その他の詳細
});

// チャレンジフロー (認証が必要)
const token2 = await Omise.createToken("card", {
number: "4000000000003220", // 認証が必要
// ... その他の詳細
});

// 認証失敗
const token3 = await Omise.createToken("card", {
number: "4000000000003238", // 3DSに失敗
// ... その他の詳細
});

エラー処理のテスト

ネットワークエラー

async function createChargeWithRetry(chargeData, maxRetries = 3) {
let attempt = 0;

while (attempt < maxRetries) {
try {
const charge = await omise.charges.create(chargeData);
return charge;
} catch (error) {
attempt++;

if (error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT') {
console.log(`Network error, retry ${attempt}/${maxRetries}`);
await sleep(1000 * attempt); // 指数バックオフ
} else {
throw error; // 他のエラーは再試行しない
}
}
}

throw new Error('Max retries exceeded');
}

APIエラー

try {
const charge = await omise.charges.create({
amount: 100000,
currency: 'THB',
card: invalidToken
});
} catch (error) {
// 特定のエラーを処理
switch (error.code) {
case 'authentication_failure':
console.error('Invalid API key');
break;
case 'invalid_card':
console.error('Card declined');
showCardError(error.message);
break;
case 'insufficient_fund':
console.error('Insufficient funds');
offerAlternativeMethod();
break;
default:
console.error('Payment error:', error.message);
}
}

検証エラー

// 必須フィールドが見つからないテスト
try {
const charge = await omise.charges.create({
amount: 100000
// 通貨と支払いソースが見つかりません
});
} catch (error) {
console.log('Validation error:', error.message);
// Error: currency is required
}

// 無効な金額をテスト
try {
const charge = await omise.charges.create({
amount: -100, // 負の金額
currency: 'THB',
card: tokenId
});
} catch (error) {
console.log('Invalid amount:', error.message);
}

Customers APIのテスト

テスト顧客を作成

// テストカードで顧客を作成
const customer = await omise.customers.create({
email: 'test@example.com',
description: 'Test Customer',
card: testTokenId
});

console.log('Customer ID:', customer.id);
console.log('Default card:', customer.default_card);

顧客カードを更新

// 新しいテストカードで更新
const updatedCustomer = await omise.customers.update(customer.id, {
card: newTestTokenId
});

console.log('New default card:', updatedCustomer.default_card);

保存済みカードをチャージ

// トークンなしで顧客をチャージ
const charge = await omise.charges.create({
amount: 100000,
currency: 'THB',
customer: customer.id
});

console.log('Charged saved card:', charge.card.last_digits);

テストチェックリスト

本番環境に移行する前に、以下をテストしていることを確認:

基本統合

  • テストカード (4242...) で成功したチャージを作成
  • 拒否されたチャージを作成 (4000 0000 0000 0002)
  • 拒否されたカードを正常に処理
  • ユーザーに明確なエラーメッセージを表示
  • API経由でチャージステータスを確認
  • Webhook配信と処理をテスト

支払い方法

  • すべての有効な支払い方法をテスト
  • QRコード表示 (該当する場合)
  • モバイルバンキングリダイレクトフロー
  • 電子ウォレット統合
  • リダイレクト方式の戻るURL処理

3D Secure (有効な場合)

  • フリクションレスフロー (チャレンジなし)
  • チャレンジフロー (認証が必要)
  • 認証失敗
  • return_uri処理を確認
  • Webhookが正しくトリガーされたことを確認

払戻

  • 全額払戻を作成
  • 部分払戻を作成
  • 無効化をテスト (24時間以内)
  • 払戻Webhookを確認
  • ダッシュボードで払戻ステータスを確認

エラー処理

  • 無効なAPIキー
  • 期限切れのトークン
  • 資金不足
  • ネットワークタイムアウト
  • 無効なチャージ金額
  • 必須フィールドが見つかりません

セキュリティ

  • Webhookシグネチャを確認
  • HTTPSのみでテスト
  • ユーザー入力を検証
  • PCIコンプライアンスをチェック (サーバー上にカードデータなし)
  • レートリミットをテスト

カスタマーエクスペリエンス

  • モバイル対応チェックアウト
  • 明確な支払い指示
  • 処理中のローディング状態
  • 成功確認ページ
  • 失敗処理と再試行オプション
  • メール確認 (テストメール)

テストデータベストプラクティス

1. 現実的なテストデータを使用

// よい - 現実的なテストデータ
{
email: 'test.customer@example.com',
name: 'Test Customer',
description: 'Test order #12345'
}

// 悪い - フラグが立つ可能性があるテストデータ
{
email: 'test@test.com',
name: 'Test',
description: 'test'
}

2. テストデータを定期的にクリーンアップ

// 古いテストチャージを削除 (ダッシュボード経由)
// またはテストデータとライブデータを分離

3. テストトランザクションにタグを付ける

const charge = await omise.charges.create({
amount: 100000,
currency: 'THB',
card: tokenId,
metadata: {
environment: 'test',
test_scenario: 'successful_payment',
tester: 'john@company.com'
}
});

4. テストシナリオを文書化

// テストシナリオドキュメント
const TEST_SCENARIOS = {
successful_payment: {
card: '4242424242424242',
expected: 'successful',
description: 'Standard successful payment'
},
declined_payment: {
card: '4000000000000002',
expected: 'failed',
description: 'Card declined by bank'
},
insufficient_funds: {
card: '4000000000000010',
expected: 'failed',
description: 'Insufficient funds'
}
};

トラブルシューティング

一般的なテストの問題

問題: ダッシュボードにテストチャージが表示されない

症状:

  • API経由でチャージを作成したがダッシュボードに表示されない
  • ダッシュボードはテストデータを表示しません

原因:

  • ライブキーの代わりにテストキーを使用している
  • ダッシュボードで間違ったモードを表示している
  • キャッチされていないAPIエラー

解決策:

// 1. テストキーを使用していることを確認
const omise = require('omise')({
secretKey: 'skey_test_...' // Must start with skey_test_
});

// 2. APIエラーをチェック
try {
const charge = await omise.charges.create({
amount: 100000,
currency: 'THB',
card: tokenId
});
console.log('Charge created:', charge.id);
} catch (error) {
console.error('API Error:', error.message);
console.error('Error code:', error.code);
}

// 3. ダッシュボードがテストモードであることを確認
// ダッシュボード → トップで「テストモード」トグル

問題: テストカードが拒否されます

症状:

  • テストカード番号が機能していません
  • 「無効なカード」エラーが発生しています
  • テストモードでチャージが失敗しています

原因:

  • テストモードで実際のカード番号を使用している
  • テストカード番号形式が正しくない
  • 無効な有効期限またはCVV

解決策:

// ✓ 正しい: テストカード番号を使用
const testToken = await Omise.createToken("card", {
number: "4242424242424242", // テストカード
expiration_month: 12,
expiration_year: 2027, // 将来の日付
security_code: "123"
});

// ✗ 不正: テストモードでは実際のカード番号は機能しません
const realCard = await Omise.createToken("card", {
number: "5555111122223333", // 実際のカード = 拒否
// ...
});

// テストモードを確認
if (!Omise.getPublicKey().includes('test')) {
console.error('Not using test public key!');
}

有効なテストカード:

const TEST_CARDS = {
visa_success: '4242424242424242',
mastercard_success: '5555555555554444',
declined: '4000000000000002',
insufficient_funds: '4000000000000010'
};

問題: Webhookがテストモードで受信されません

症状:

  • エンドポイントへのWebhook配信なし
  • Webhookイベントが見つかりません
  • ダッシュボードでタイムアウトエラー

原因:

  • エンドポイントが公開されていません
  • HTTPS証明書が無効です
  • Webhookシグネチャ検証が失敗しています
  • ファイアウォールがリクエストをブロックしています

解決策:

// 1. ngrokをローカルテスト用に使用
// ターミナル1: サーバーを起動
node server.js // ポート3000

// ターミナル2: ngrokを起動
ngrok http 3000
// 使用: https://abc123.ngrok.io/webhooks/omise

// 2. エンドポイントアクセス可能性をチェック
curl https://your-domain.com/webhooks/omise
// 返す: 405 メソッドが許可されていません (POSTが必要)

// 3. SSL証明書を確認
// 使用: https://www.ssllabs.com/ssltest/

// 4. ローカルでWebhookハンドラーをテスト
curl -X POST http://localhost:3000/webhooks/omise \
-H "Content-Type: application/json" \
-d '{"object":"event","key":"charge.complete"}'

// 5. シグネチャ検証をチェック
app.post('/webhooks/omise', (req, res) => {
console.log('Webhook received');
console.log('Signature:', req.headers['omise-signature']);
console.log('Body:', req.body);

// 初期テスト中はシグネチャ検証をスキップしないでください
// if (!verifyWebhookSignature(req)) {
// return res.sendStatus(401);
// }

res.sendStatus(200);
});

問題: APIキー認証失敗

症状:

  • 「authentication_failure」エラー
  • 401無許可レスポンス
  • 「無効なAPIキー」メッセージ

原因:

  • 間違ったAPIキー形式
  • 秘密キーの代わりに公開キーを使用している
  • 別の環境のキーから
  • APIキーが正しくエンコードされていません

解決策:

// ✓ 正しい: サーバー側に秘密キーを使用
const omise = require('omise')({
secretKey: process.env.OMISE_SECRET_KEY // skey_test_...
});

// ✗ 不正: サーバー上の公開キー
const omise = require('omise')({
secretKey: 'pkey_test_...' // 間違い! 公開キー
});

// キー形式を確認
function validateApiKey(key) {
if (key.startsWith('skey_test_')) {
return 'test_secret';
} else if (key.startsWith('skey_')) {
return 'live_secret';
} else if (key.startsWith('pkey_test_')) {
return 'test_public';
} else if (key.startsWith('pkey_')) {
return 'live_public';
}
return 'invalid';
}

// .envファイルで確認
console.log('Key type:', validateApiKey(process.env.OMISE_SECRET_KEY));

// 認証をテスト
try {
const balance = await omise.balance.retrieve();
console.log('Authentication successful');
console.log('Available:', balance.available / 100);
} catch (error) {
console.error('Auth failed:', error.message);
}

問題: テストカード支払い失敗

症状:

  • すべてのテストカードが失敗しています
  • 予期しないエラーコード
  • 不一貫なテスト結果

原因:

  • 間違ったチャージパラメータ
  • 無効な金額形式
  • 必須フィールドが見つかりません
  • トークンが期限切れまたは既に使用されています

解決策:

// よくある間違いと修正

// ✗ 不正: 小数としての金額
const charge = await omise.charges.create({
amount: 100.00, // 間違い!
currency: 'THB'
});

// ✓ 正しい: 最小単位での金額 (サタン)
const charge = await omise.charges.create({
amount: 10000, // ฿100.00
currency: 'THB',
card: tokenId
});

// ✗ 不正: トークンを再利用
const token = 'tokn_test_123';
await omise.charges.create({ amount: 10000, currency: 'THB', card: token });
await omise.charges.create({ amount: 10000, currency: 'THB', card: token }); // 失敗!

// ✓ 正しい: 各チャージに新しいトークンを作成
const token1 = await createNewToken();
await omise.charges.create({ amount: 10000, currency: 'THB', card: token1 });

const token2 = await createNewToken();
await omise.charges.create({ amount: 10000, currency: 'THB', card: token2 });

// ✗ 不正: 必須フィールドが見つかりません
await omise.charges.create({
amount: 10000
// 見つかりません: 通貨、支払いソース
});

// ✓ 正しい: すべての必須フィールド
await omise.charges.create({
amount: 10000,
currency: 'THB',
card: tokenId // またはcustomer、またはsource
});

問題: Webhookテストの問題

症状:

  • Webhookシグネチャ検証が常に失敗します
  • Webhookイベントが重複しています
  • Webhookイベントが見つかりません

原因:

  • ボディパーサーがリクエストボディを変更しています
  • 処理済みイベントIDを保存していません
  • ネットワーク問題が再試行を引き起こします

解決策:

// 問題1: シグネチャ検証に失敗
// ✗ 不正: ボディがすでに解析されています
app.use(express.json()); // ボディを解析
app.post('/webhooks', (req, res) => {
verifySignature(req.body); // ボディが変更されました!
});

// ✓ 正しい: 生ボディを保存
app.use(express.json({
verify: (req, res, buf) => {
req.rawBody = buf.toString('utf8');
}
}));

app.post('/webhooks', (req, res) => {
verifySignature(req.rawBody); // 生ボディを使用
});

// 問題2: 重複イベント
// ✓ 正しい: 処理済みイベントを追跡
const processedEvents = new Set();

app.post('/webhooks', (req, res) => {
const event = req.body;

// すでに処理済みかどうかを確認
if (processedEvents.has(event.id)) {
console.log('Duplicate event:', event.id);
return res.sendStatus(200); // それでも200を返す
}

// イベントを処理
handleEvent(event);

// 処理済みとしてマーク
processedEvents.add(event.id);

res.sendStatus(200);
});

// 問題3: Webhookをデバッグ
app.post('/webhooks', (req, res) => {
console.log('=== WEBHOOK DEBUG ===');
console.log('Headers:', req.headers);
console.log('Body:', JSON.stringify(req.body, null, 2));
console.log('Raw Body:', req.rawBody);
console.log('Event ID:', req.body.id);
console.log('Event Key:', req.body.key);
console.log('====================');

res.sendStatus(200);
});

クイックトラブルシューティングチェックリスト

問題が発生した場合は、以下を確認してください:

APIキー:

  • テストキーを使用している (開始時にtest_)
  • サーバーでシークレットキーを使用している (公開キーではない)
  • キーが環境変数から読み込まれている
  • ダッシュボードが正しいモード (テスト/ライブ) になっている

テストカード:

  • 有効なテストカード番号を使用している
  • 将来の有効期限
  • 有効なCVV (任意の3-4桁)
  • トークンを再利用していない

Webhook:

  • エンドポイントが有効な証明書を持つHTTPSです
  • エンドポイントが公開アクセス可能です
  • 200 OKステータスを返している
  • シグネチャ検証が正しい
  • 重複イベントを処理している

一般的なエラー:

  • 金額が正しい形式です (最小単位)
  • すべての必須フィールドが提供されている
  • 有効な通貨コード
  • トークンが期限切れではありません

ヘルプを取得する

問題が解決しない場合:

  1. APIログをチェック:
// デバッグログを有効化
const omise = require('omise')({
secretKey: process.env.OMISE_SECRET_KEY,
debug: true
});
  1. ダッシュボードログを確認:

    • ダッシュボード → APIログに移動
    • リクエスト/レスポンスの詳細を確認
    • エラーメッセージを探す
  2. cURLでテスト:

curl https://api.omise.co/charges \
-u skey_test_YOUR_KEY: \
-d "amount=100000" \
-d "currency=THB" \
-d "card=tokn_test_..."
  1. サポートに連絡:
    • メール: support@omise.co
    • 含める: テストチャージID、エラーメッセージ、コードサンプル
    • 指定: テストモード、SDKバージョン、プログラミング言語

FAQ

テストモードで実際のカードを使用できますか?

いいえ、テストモードはテストカード番号のみを受け入れます。実際のカードは拒否されます。これは開発中に誤って実際のチャージが発生するのを防ぐための予防措置です。

テストモードWebhookは実際に配信されますか?

はい! テストWebhookはライブWebhookと同じようにエンドポイントに配信されます。ngrokをローカルテストに使用するか、ステージングサーバーにデプロイします。

テストカードなしで支払い方法をテストするにはどうすればよいですか?

QRコード、電子ウォレット、モバイルバンキングテストモードでの場合:

  1. ソース/チャージを作成
  2. テストダッシュボードに移動
  3. 保留中のチャージを検索
  4. [成功にマーク] または [失敗にマーク] をクリック
テストAPIキーをgitにコミットしても安全ですか?

テストキーは実際のお金を処理していませんが、環境変数に保管し、公開リポジトリにコミットしないようにしてください。テストデータにアクセスし、テストチャージを作成するために使用できます。

テストモードとライブモードを簡単に切り替えられますか?

はい、環境変数を使用:

const omise = require('omise')({
secretKey: process.env.OMISE_SECRET_KEY // 環境経由で切り替え
});
テストチャージはダッシュボードにどのくらい残りますか?

テストデータは無期限に残りますが、手動で削除できます。テストダッシュボードをきれいに保つために、古いテストデータを定期的にクリーンアップすることを検討してください。

テストトランザクションはライブ分析に影響しますか?

いいえ、テストおよびライブモードは完全に分離されています。テストトランザクションはライブ分析または決済レポートに表示されません。

関連リソース

次のステップ

  1. テストAPIキーを取得
  2. 成功カードでテスト
  3. 拒否シナリオをテスト
  4. Webhookテストをセットアップ
  5. テストチェックリストを完成
  6. 本番環境に移行