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

テスト

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

概要

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

主な機能:

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

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

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

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

テスト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経由 (テストウェブフック)

// チャージは自動的にウェブフック をトリガー
// ウェブフック エンドポイント ログを確認

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);
});

ウェブフック のテスト

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

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

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

# トンネルを作成
ngrok http 3000

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

ダッシュボードで ウェブフック を構成:

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

テスト ウェブフック 配信

// ウェブフック ハンドラー
app.post('/webhooks/omise', (req, res) => {
const event = req.body;

// デバッグ用にログ
console.log('=== ウェブフック 受信 ===');
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);
});

手動 ウェブフック テスト

# cURL を使用してウェブフック をシミュレート
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 経由でチャージ ステータスを確認
  • ウェブフック 配信と処理をテスト

支払い方法

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

3D Secure (有効な場合)

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

払戻

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

エラー処理

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

セキュリティ

  • ウェブフック シグネチャを確認
  • 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'
};

問題: ウェブフック がテストモード で受信されません

症状:

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

原因:

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

解決策:

// 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. ローカル でウェブフック ハンドラーをテスト
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
});

問題: ウェブフック テスト の問題

症状:

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

原因:

  • ボディ パーサー がリクエスト ボディ を変更しています
  • 処理済みイベント 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: ウェブフック をデバッグ
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 桁)
  • トークン を再利用していない

ウェブフック:

  • エンドポイント が有効な証明書 を持つ 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

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

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

テストモード ウェブフック は実際に配信されますか?

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

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

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

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

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

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

はい、環境変数 を使用:

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

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

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

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

関連リソース

次のステップ

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