クイックスタートガイド
5分で最初のテストchargeを作成します。このガイドでは、決済を受け付けるための最初のAPI呼び出しを行う方法を説明します。
作成するもの
このガイドを終えると、以下が完了します:
- ✅ Omiseテストアカウントを作成
- ✅ API keyを確認
- ✅ 最初のAPI呼び 出しを実行
- ✅ 成功したテストchargeを作成
- ✅ 基本的な決済フローを理解
所要時間: 5〜10分
ステップ1: アカウントを作成
- dashboard.omise.co/signupにアクセス
- メールアドレスを入力
- パスワードを作成(大文字、小文字、数字、特殊文字(@#?など)を含む10文字以上)
- 登録をクリック
- メールアドレスを確認
テストダッシュボードにすぐにアクセスできます - ビジネス検証は不要です!
ステップ2: API Keyを取得
- テストダッシュボードにログイン
- 設定 → Keysに移動
- 2つのkeyが表示されます:
- Public Key (
pkey_test_...) - クライアント側の操作用 - Secret Key (
skey_test_...) - サーバー側の操作用
- Public Key (
secret keyをクライアント側のコードや公開リポジトリに公開しないでください!
ステップ3: 最初のChargeを作成
Omiseは2ステップのプロセスで決済を受け付けます:
フローを理解する
ステップ3a: Tokenを作成
まず、public keyを使用して決済方法をtokenizeします。これによりカードデータがサーバーに触れません。
- cURL
- JavaScript
- PHP
curl https://vault.omise.co/tokens \
-X POST \
-u pkey_test_YOUR_PUBLIC_KEY: \
-d "card[name]=John Doe" \
-d "card[number]=4242424242424242" \
-d "card[expiration_month]=12" \
-d "card[expiration_year]=2027" \
-d "card[security_code]=123"
// Omise.jsを使用(推奨)
Omise.setPublicKey('pkey_test_YOUR_PUBLIC_KEY');
Omise.createToken('card', {
name: 'John Doe',
number: '4242424242424242',
expiration_month: 12,
expiration_year: 2027,
security_code: '123'
}, function(statusCode, response) {
if (statusCode == 200) {
console.log('Token:', response.id);
// tokenをサーバーに送信
} else {
console.error('Error:', response.message);
}
});
<?php
require_once 'vendor/autoload.php';
define('OMISE_PUBLIC_KEY', 'pkey_test_YOUR_PUBLIC_KEY');
$token = OmiseToken::create([
'card' => [
'name' => 'John Doe',
'number' => '4242424242424242',
'expiration_month' => 12,
'expiration_year' => 2027,
'security_code' => '123'
]
]);
echo $token['id']; // tokn_test_...
?>
レスポンス:
{
"object": "token",
"id": "tokn_test_5xp6ca4dtzx5cskm9mk",
"livemode": false,
"location": "/tokens/tokn_test_5xp6ca4dtzx5cskm9mk",
"used": false,
"card": {
"object": "card",
"id": "card_test_5xp6ca3y2vtgcw24o9p",
"livemode": false,
"brand": "Visa",
"last_digits": "4242",
"expiration_month": 12,
"expiration_year": 2027
},
"created_at": "2024-01-15T07:30:00Z"
}
token.id値を保存してください - 次のステップで必要になります!
ステップ3b: Chargeを作成
次に、サーバー上でsecret keyとtokenを使用してchargeを作成します。
- cURL
- Node.js
- Python
- Ruby
- PHP
curl https://api.omise.co/charges \
-X POST \
-u skey_test_YOUR_SECRET_KEY: \
-d "amount=100000" \
-d "currency=thb" \
-d "card=tokn_test_5xp6ca4dtzx5cskm9mk"
const omise = require('omise')({
secretKey: 'skey_test_YOUR_SECRET_KEY'
});
omise.charges.create({
amount: 100000, // 最小通貨単位での金額(サタン、セントなど)
currency: 'thb',
card: 'tokn_test_5xp6ca4dtzx5cskm9mk'
}, function(err, charge) {
if (err) {
console.error('Error:', err.message);
} else {
console.log('Charge successful:', charge.id);
}
});
import omise
omise.api_secret = 'skey_test_YOUR_SECRET_KEY'
charge = omise.Charge.create(
amount=100000, # 最小通貨単位での金額
currency='thb',
card='tokn_test_5xp6ca4dtzx5cskm9mk'
)
print('Charge ID:', charge.id)
print('Status:', charge.status)
require 'omise'
Omise.secret_api_key = 'skey_test_YOUR_SECRET_KEY'
charge = Omise::Charge.create({
amount: 100000,
currency: 'thb',
card: 'tokn_test_5xp6ca4dtzx5cskm9mk'
})
puts "Charge ID: #{charge.id}"
puts "Status: #{charge.status}"
<?php
require_once 'vendor/autoload.php';
define('OMISE_SECRET_KEY', 'skey_test_YOUR_SECRET_KEY');
$charge = OmiseCharge::create([
'amount' => 100000,
'currency' => 'thb',
'card' => 'tokn_test_5xp6ca4dtzx5cskm9mk'
]);
echo 'Charge ID: ' . $charge['id'] . PHP_EOL;
echo 'Status: ' . $charge['status'] . PHP_EOL;
?>
レスポンス:
{
"object": "charge",
"id": "chrg_test_5xp6ccfmecft4zxrb7p",
"location": "/charges/chrg_test_5xp6ccfmecft4zxrb7p",
"amount": 100000,
"currency": "thb",
"status": "successful",
"paid": true,
"transaction": "trxn_test_5xp6ccfmvcsm7ih0c8w",
"card": {
"object": "card",
"id": "card_test_5xp6ca3y2vtgcw24o9p",
"livemode": false,
"brand": "Visa",
"last_digits": "4242"
},
"created_at": "2024-01-15T07:30:15Z"
}
🎉 おめでとうございます! 最初のchargeの作成に成功しました!
ステップ4: ダッシュボードで確認
- テストダッシュボードにアクセス
- 左メニューのChargesをクリック
- ステータスが「Successful」のテストchargeが表示されます
テストカード
さまざまなシナリオをテストするには、以下のカード番号を使用してください:
| カード番号 | ブランド | 結果 |
|---|---|---|
4242 4242 4242 4242 | Visa | ✅ 成功 |
5555 5555 5555 4444 | Mastercard | ✅ 成功 |
3530 1113 3330 0000 | JCB | ✅ 成功 |
3782 822463 10005 | Amex | ✅ 成功 |
テストモードでは、任意の将来の有効期限と任意の3〜4桁のCVVコードを使用してください。
次のステップ
最初のchargeを作成したので、次に探索すべきことは以下の通りです:
1. 実際のチェックアウトを構築
2. 決済方法を探索
3. Webhookを処理
4. 徹底的にテスト
5. 本番環境に移行
よくある問題と解決策
Token作成が失敗する
問題: tokenを作成する際に認証エラーが発生する。
解決策:
- public keyを使用していることを確認(
pkey_で始まる) - keyがテストモード用であることを確認(
pkey_test_...) - keyがダッシュボードでアクティブであることを確認
Charge作成が失敗する
問題: chargeがエラーまたは無効なリクエストを返す。
解決策:
- secret keyを使用していることを確認(
skey_で始まる) - tokenがまだ使用されていないことを確認(tokenは1回限り)
- 金額が最小通貨単位であることを確認(例: THBのサタン)
- 通貨コードが正しいことを確認(例:
thb、jpy、sgd)
テストモードでカードが拒否される
問題: テストカードが拒否される。
解決策:
- リストから正しいテストカード番号を使 用
- テストモードであることを確認(test keyを使用)
- 将来の有効期限を使用していることを確認
FAQ
なぜtokenとchargeの両方が必要なのですか?
2ステップのプロセスにより、統合のセキュリティが保たれます:
-
Token作成はpublic keyを使用してクライアント(ブラウザ/アプリ)で行われます。これにより、機密のカードデータはサーバーに触れることなく、直接Omiseに送信されます。
-
Charge作成はsecret keyを使用してサーバーで行われます。サーバーはtoken(生のカードデータではなく)を使用して決済を完了します。
この関心事の分離により、PCI準拠の負担が軽減され、顧客データが安全に保たれます。
tokenを再利用できますか?
いいえ、tokenは1回限りです。tokenを使用してchargeを作成すると、そのtokenは再度使用できません。
顧客に複数回課金するには、以下が必要です:
- Customerオブジェクトを作成してカードを添付
- 将来のchargeにcustomer IDを使用
- Customerについて学ぶ →
どの通貨がサポートされていますか?
サポートされている通貨は、アカウントの地域によって異なります:
- タイ: THB (タイバーツ)
- 日本: JPY (日本円)
- シンガポール: SGD (シンガポールドル)
- マレーシア: MYR (マレーシアリンギット)
一部のアカウントでは複数の通貨をサポートする場合があります。利用可能なオプションについてはダッシュボードを確認してください。
金額をどのように指定しますか?
常に最小通貨単位で金額を指定します:
- THB: 100000 = ฿1,000.00 (サタン)
- JPY: 1000 = ¥1,000 (円 - 小数点以下なし)
- SGD: 10000 = S$100.00 (セント)
- MYR: 10000 = RM100.00 (セント)
金額フィールドに小数点を使用しないでください。
サンプルコードはどこで見つかりますか?
- 公式ライブラリ: 各SDKにはサンプルコードが含まれています
- GitHub: github.com/omiseのサンプルアプリケーション
- ドキュメント: これらのドキュメント全体で8以上の言語のコード例
テストから本番環境にどのように移行しますか?
- ビジネス検証を完了(本番移行を参照)
- コード内でtest keyからlive keyに切り替え
- 最初は少額の実際の取引でテスト
- ダッシュボードとwebhookエンドポイントを監視
- 徐々に拡大
統合コードは同じままです - API keyのみが変更されます!
完全な例
以下は、ローカルで実行できる完全なHTML + JavaScriptの例です:
<!DOCTYPE html>
<html>
<head>
<title>Omise Quickstart</title>
<script src="https://cdn.omise.co/omise.js"></script>
</head>
<body>
<h1>฿1,000.00を支払う</h1>
<form id="payment-form">
<div>
<label>カード番号</label>
<input type="text" id="card-number" value="4242424242424242">
</div>
<div>
<label>名前</label>
<input type="text" id="card-name" value="John Doe">
</div>
<div>
<label>有効期限 (MM/YY)</label>
<input type="text" id="card-expiry" value="12/25">
</div>
<div>
<label>CVV</label>
<input type="text" id="card-cvv" value="123">
</div>
<button type="submit">今すぐ支払う</button>
</form>
<div id="result"></div>
<script>
// public keyを設定
Omise.setPublicKey('pkey_test_YOUR_PUBLIC_KEY');
document.getElementById('payment-form').addEventListener('submit', function(e) {
e.preventDefault();
const expiry = document.getElementById('card-expiry').value.split('/');
// ステップ1: tokenを作成
Omise.createToken('card', {
name: document.getElementById('card-name').value,
number: document.getElementById('card-number').value,
expiration_month: expiry[0],
expiration_year: '20' + expiry[1],
security_code: document.getElementById('card-cvv').value
}, function(statusCode, response) {
if (statusCode == 200) {
// ステップ2: tokenをサーバーに送信してchargeを作成
createCharge(response.id);
} else {
document.getElementById('result').innerHTML =
'<p style="color:red">Error: ' + response.message + '</p>';
}
});
});
function createCharge(token) {
// 本番環境では、これはサーバーエンドポイントを呼び出します
// サーバーはsecret keyを使用してchargeを作成します
fetch('/api/charges', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
token: token,
amount: 100000,
currency: 'thb'
})
})
.then(response => response.json())
.then(data => {
document.getElementById('result').innerHTML =
'<p style="color:green">決済成功! Charge ID: ' + data.id + '</p>';
})
.catch(error => {
document.getElementById('result').innerHTML =
'<p style="color:red">Error: ' + error.message + '</p>';
});
}
</script>
</body>
</html>
ヘルプが必要ですか?
- トラブルシューティングガイドを確認
- support@omise.coにお問い合わせ
- 開発者コミュニティに参加
さらに詳しく知りたいですか? コンセプトを理解するに進んで、Omiseの仕組みを詳しく学びましょう。