Omise.js APIリファレンス
すべてのOmise.jsメソッド、パラメータ、レスポンスオブジェクトの完全なリファレンス。
初期化
Omise.setPublicKey()
API呼び出しを行う前にOmise公開鍵を設定します。
シグネチャ:
Omise.setPublicKey(publicKey: string): void
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
publicKey | string | ✓ | pkey_で始まるOmise公開鍵 |
例:
Omise.setPublicKey("pkey_test_5xs8t3mho5d4pbbkjz1dk");
注意事項:
- 他のすべてのOmise.jsメソッドを呼び出す前に実行する必要があります
- 開発環境ではテストキー(
pkey_test_...)を使用してください - 本番環境ではライブキー(
pkey_live_...)を使用してください - キーはメモリにのみ保存され、永続化されません
トークン作成
Omise.createToken()
決済データのトークン化された表現を作成します。
シグネチャ:
Omise.createToken(
type: string,
data: object,
callback: (statusCode: number, response: object) => void
): void
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
type | string | ✓ | トークンタイプ: "card" または "tokenization" |
data | object | ✓ | カードデータまたはトークン化データ |
callback | function | ✓ | (statusCode, response)を受け取るコールバック関数 |
カードトークン
カード情報からトークンを作成します。
カードデータオブジェクト:
{
name: string, // カード名義人
number: string, // カード番号(13-19桁)
expiration_month: number, // 月(1-12)
expiration_year: number, // 年(例: 2027)
security_code: string, // CVV/CVC(3-4桁)
// オプションの請求先住所
city?: string,
postal_code?: string,
country?: string // ISO 3166-1 alpha-2(例: "TH")
}
例:
Omise.createToken("card", {
name: "John Doe",
number: "4242424242424242",
expiration_month: 12,
expiration_year: 2027,
security_code: "123",
city: "Bangkok",
postal_code: "10110",
country: "TH"
}, function(statusCode, response) {
if (statusCode === 200) {
console.log("Token ID:", response.id);
// response.id = "tokn_test_5xs8t3mho5d4pbbkjz1dk"
} else {
console.error("Error:", response.message);
}
});
デジタルウォレットトークン
デジタルウォレットデータ(Google Pay、Apple Pay)からトークンを作成します。
トークン化データオブジェクト:
{
method: string, // "googlepay" または "applepay"
data: object // 決済プロバイダーからのトークンデータ
}
Google Payの例:
const googlePayToken = {
signature: "...",
protocolVersion: "ECv2",
signedMessage: "..."
};
Omise.createToken("tokenization", {
method: "googlepay",
data: googlePayToken
}, callback);
Apple Payの例:
const applePayToken = {
paymentData: {...},
transactionIdentifier: "...",
paymentMethod: {...}
};
Omise.createToken("tokenization", {
method: "applepay",
data: applePayToken
}, callback);
トークンレスポンス
成功レスポンス(ステータス200):
{
object: "token",
id: "tokn_test_5xs8t3mho5d4pbbkjz1dk",
livemode: false,
location: "/tokens/tokn_test_5xs8t3mho5d4pbbkjz1dk",
used: false,
charge_status: "unknown",
card: {
object: "card",
id: "card_test_5xs8t3mho5d4pbbkjz1dk",
livemode: false,
location: null,
country: "us",
city: null,
postal_code: null,
financing: "",
bank: "",
last_digits: "4242",
brand: "Visa",
expiration_month: 12,
expiration_year: 2027,
fingerprint: "XjOdjaoKvKLxNFvbxdPo7hpO8VRQVOM5bZt9e1D4NG0=",
name: "John Doe",
security_code_check: true,
tokenization_method: null,
created_at: "2025-02-06T10:30:45Z"
},
created_at: "2025-02-06T10:30:45Z"
}
エラーレスポンス(ステータス400+):
{
object: "error",
location: "https://docs.omise.co/api-errors#invalid-card",
code: "invalid_card",
message: "number is invalid"
}
ソース作成
Omise.createSource()
代替決済方法の決済ソースを作成します。
シグネチャ:
Omise.createSource(
type: string,
data: object,
callback: (statusCode: number, response: object) => void
): void
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
type | string | ✓ | 決済方法タイプ |
data | object | ✓ | 金額と通貨を含むソースデータ |
callback | function | ✓ | (statusCode, response)を受け取るコールバック関数 |
サポートされている決済方法
PromptPay
Omise.createSource("promptpay", {
amount: 50000, // 必須
currency: "THB" // 必須
}, callback);
PayNow(シンガポール)
Omise.createSource("paynow", {
amount: 5000, // 必須
currency: "SGD" // 必須
}, callback);
TrueMoney Wallet
Omise.createSource("truemoney", {
amount: 30000, // 必須
currency: "THB", // 必須
phone_number: "+66876543210" // 必須
}, callback);
Rabbit LINE Pay
Omise.createSource("rabbit_linepay", {
amount: 20000, // 必須
currency: "THB" // 必須
}, callback);
モバイルバンキング
// SCB Easy App
Omise.createSource("mobile_banking_scb", {
amount: 40000,
currency: "THB"
}, callback);
// KBank モバイルバンキング
Omise.createSource("mobile_banking_kbank", {
amount: 40000,
currency: "THB"
}, callback);
// Bangkok Bank モバイルバンキング
Omise.createSource("mobile_banking_bay", {
amount: 40000,
currency: "THB"
}, callback);
// Krung Thai モバイルバンキング
Omise.createSource("mobile_banking_ktb", {
amount: 40000,
currency: "THB"
}, callback);
電子マネー
// GrabPay
Omise.createSource("grabpay", {
amount: 10000,
currency: "SGD" // または "THB", "MYR"
}, callback);
// ShopeePay
Omise.createSource("shopeepay", {
amount: 25000,
currency: "THB"
}, callback);
// Boost(マレーシア)
Omise.createSource("boost", {
amount: 3000,
currency: "MYR"
}, callback);
// Touch 'n Go(マレーシア)
Omise.createSource("touch_n_go", {
amount: 5000,
currency: "MYR"
}, callback);
// Alipay
Omise.createSource("alipay", {
amount: 50000,
currency: "THB"
}, callback);
// WeChat Pay
Omise.createSource("wechat_pay", {
amount: 50000,
currency: "THB"
}, callback);
銀行振込
// FPX(マレーシア)
Omise.createSource("fpx", {
amount: 10000,
currency: "MYR",
email: "customer@example.com", // 必須
bank: "test" // 銀行コード(FPXドキュメントを参照)
}, callback);
// DuitNow QR(マレーシア)
Omise.createSource("duitnow_qr", {
amount: 5000,
currency: "MYR"
}, callback);
分割払い
// Krungthai Card 分割払い
Omise.createSource("installment_kbank", {
amount: 50000,
currency: "THB",
installment_term: 6 // 3, 6, 10ヶ月
}, callback);
// Bay 分割払い
Omise.createSource("installment_bay", {
amount: 50000,
currency: "THB",
installment_term: 10
}, callback);
// First Choice 分割払い
Omise.createSource("installment_first_choice", {
amount: 30000,
currency: "THB",
installment_term: 6
}, callback);
// KTC 分割払い
Omise.createSource("installment_ktc", {
amount: 50000,
currency: "THB",
installment_term: 6
}, callback);
// SCB 分割払い
Omise.createSource("installment_scb", {
amount: 50000,
currency: "THB",
installment_term: 10
}, callback);
後払い決済(BNPL)
// Atome
Omise.createSource("atome", {
amount: 50000,
currency: "THB",
phone_number: "+66876543210", // 必須
email: "customer@example.com", // 必須
name: "John Doe", // 必須
shipping: { // 物理的な商品の場合は必須
address: {
country: "TH",
city: "Bangkok",
postal_code: "10110",
state: "Bangkok",
street1: "123 Main St"
}
},
items: [ // オプションですが推奨
{
sku: "PROD-001",
name: "Product Name",
quantity: 1,
amount: 50000,
currency: "THB"
}
]
}, callback);
ソースレスポンス
成功レスポンス(ステータス200):
{
object: "source",
id: "src_test_5xs8t3mho5d4pbbkjz1dk",
livemode: false,
location: "/sources/src_test_5xs8t3mho5d4pbbkjz1dk",
type: "promptpay",
flow: "redirect",
amount: 50000,
currency: "THB",
charge_status: "unknown",
references: {
qr_code: "00020101021..." // QRベースの決済の場合
},
created_at: "2025-02-06T10:30:45Z"
}
OmiseCard(プリビルトフォーム)
OmiseCard.configure()
プリビルト決済フォームを設定します。
シグネチャ:
OmiseCard.configure(options: object): void
オプション:
{
// 必須
publicKey: string,
amount: number,
currency: string,
// 決済方法
defaultPaymentMethod?: string,
otherPaymentMethods?: string[],
// UIカスタマイズ
frameLabel?: string,
frameDescription?: string,
submitLabel?: string,
buttonLabel?: string,
locale?: string, // "en", "th", "ja"
image?: string, // ロゴURL
// 顧客データ
name?: string,
email?: string,
phoneNumber?: string,
// その他
location?: "yes" | "no",
metadata?: object,
// コールバック
onCreateTokenSuccess: (nonce: string) => void,
onFormClosed?: () => void
}
例:
OmiseCard.configure({
publicKey: "pkey_test_5xs8t3mho5d4pbbkjz1dk",
amount: 50000,
currency: "THB",
defaultPaymentMethod: "credit_card",
otherPaymentMethods: ["promptpay", "truemoney"],
frameLabel: "ACME Store",
submitLabel: "Pay Now",
locale: "en",
onCreateTokenSuccess: (nonce) => {
console.log("Created:", nonce);
}
});
OmiseCard.open()
決済フォームモーダルを開きます。
シグネチャ:
OmiseCard.open(): void
例:
document.getElementById('pay-button').addEventListener('click', () => {
OmiseCard.open();
});
OmiseCard.close()
決済フォームモーダルを閉じます。
シグネチャ:
OmiseCard.close(): void
例:
OmiseCard.close();
エラーコード
トークン作成エラー
| コード | メッセージ | 解決方法 |
|---|---|---|
invalid_card | number is invalid | カード番号の形式を確認してください |
invalid_card | expiration date cannot be in the past | 将来の日付を使用してください |
invalid_card | security code failed verification | CVVを確認してください |
empty_card | name can't be blank | カード名義人を入力してください |
invalid_expiration_month | expiration month is invalid | 1-12を使用してください |
invalid_expiration_year | expiration year is invalid | 4桁の年を使用してください |
invalid_security_code | security code is invalid | 3-4桁のCVVを入力してください |
invalid_number | number is invalid | カード番号を確認してください |
invalid_country | country is invalid | ISO 3166-1 alpha-2を使用してください |
public_key_is_required | public key is required | 最初にsetPublicKeyを呼び出してください |
ソース作成エラー
| コード | メッセージ | 解決方法 |
|---|---|---|
invalid_amount | amount is invalid | 金額は正の整数である必要があります |
invalid_currency | currency is invalid | 決済方法に適した通貨を使用してください |
phone_number_required | phone number is required | 電話番号を入力してください |
email_required | email is required | メールアドレスを入力してください |
invalid_phone_number | phone number is invalid | E.164形式(+66...)を使用してください |
invalid_email | email is invalid | 有効なメールアドレスを入力してください |
HTTPステータスコード
| ステータス | 意味 | アクション |
|---|---|---|
200 | 成功 | レスポンスを処理してください |
400 | 不正なリクエスト | リクエストデータを修正してください |
401 | 認証エラー | 公開鍵を確認してください |
402 | 決済が必要 | Omiseサポートにお問い合わせください |
404 | 見つかりません | エンドポイントURLを確認してください |
429 | リクエスト過多 | レート制限を実装してください |
500 | サーバーエラー | 再試行するかサポートにお問い合わせください |
503 | サービス 利用不可 | 後で再試行してください |
型定義
TypeScript
declare global {
interface Window {
Omise: {
setPublicKey(publicKey: string): void;
createToken(
type: 'card',
data: CardData,
callback: TokenCallback
): void;
createToken(
type: 'tokenization',
data: TokenizationData,
callback: TokenCallback
): void;
createSource(
type: string,
data: SourceData,
callback: SourceCallback
): void;
};
OmiseCard: {
configure(options: OmiseCardOptions): void;
open(): void;
close(): void;
};
}
}
interface CardData {
name: string;
number: string;
expiration_month: number;
expiration_year: number;
security_code: string;
city?: string;
postal_code?: string;
country?: string;
}
interface TokenizationData {
method: 'googlepay' | 'applepay';
data: any;
}
interface SourceData {
amount: number;
currency: string;
[key: string]: any;
}
type TokenCallback = (statusCode: number, response: TokenResponse | ErrorResponse) => void;
type SourceCallback = (statusCode: number, response: SourceResponse | ErrorResponse) => void;
interface TokenResponse {
object: 'token';
id: string;
livemode: boolean;
used: boolean;
card: CardObject;
created_at: string;
}
interface SourceResponse {
object: 'source';
id: string;
livemode: boolean;
type: string;
flow: string;
amount: number;
currency: string;
created_at: string;
}
interface ErrorResponse {
object: 'error';
code: string;
message: string;
}
interface OmiseCardOptions {
publicKey: string;
amount: number;
currency: string;
defaultPaymentMethod?: string;
otherPaymentMethods?: string[];
frameLabel?: string;
frameDescription?: string;
submitLabel?: string;
buttonLabel?: string;
locale?: 'en' | 'th' | 'ja';
image?: string;
name?: string;
email?: string;
phoneNumber?: string;
location?: 'yes' | 'no';
metadata?: Record<string, any>;
onCreateTokenSuccess: (nonce: string) => void;
onFormClosed?: () => void;
}
ブラウザ互換性
| 機能 | Chrome | Firefox | Safari | Edge |
|---|---|---|---|---|
| createToken | 60+ | 55+ | 11+ | 79+ |
| createSource | 60+ | 55+ | 11+ | 79+ |
| OmiseCard | 60+ | 55+ | 11+ | 79+ |
モバイル:
- iOS Safari 11+
- Chrome for Android 60+
FAQ
「Omise is not defined」エラーが発生するのはなぜですか?
これは通常、Omise.jsスクリプトがまだ読み込まれていないことを意味します。スクリプトタグを含め、Omiseメソッドを呼び出す前に読み込みを待つようにしてください:
<script src="https://cdn.omise.co/omise.js"></script>
<script>
// DOMの準備を待つ
document.addEventListener('DOMContentLoaded', function() {
Omise.setPublicKey('pkey_test_...');
});
</script>
トークン作成エラーをどのように処理しますか?
createTokenでエラーコールバックを使用します:
Omise.createToken("card", cardData, function(statusCode, response) {
if (response.object === "error") {
console.error(response.code, response.message);
// 特定のエラーコードを処理
}
});
Omise.jsはReact/Vue/Angularで使用できますか?
はい。スクリプトを動的にインポートするか、npmパッケージを使用してください。Reactの場合:
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://cdn.omise.co/omise.js';
script.onload = () => Omise.setPublicKey('pkey_test_...');
document.body.appendChild(script);
}, []);
トークンとソースの違いは何ですか?
- トークンはクレジット/デビットカード決済用で、クライアントサイドで作成されます
- ソースは代替決済方法(電子ウォレット、銀行振込、QRコード)用で、クライアントサイドまたはサーバーサイドで作成できます
実際のカードなしでテストするにはどうすればよいですか?
テストモードでテストカード番号を使用してください:
4242424242424242- 成功する決済4111111111140011- 残高不足
その他のテストカードについてはテストガイドをご覧ください 。
Omise.jsはPCI DSS準拠ですか?
はい。Omise.jsはカードデータをOmiseサーバーに直接送信するため、機密カード情報がサーバーに触れることがなく、PCI DSSコンプライアンスの維持に役立ちます。
関連リソース
サポート
- ドキュメント: https://docs.omise.co/omise-js
- サポート: support@omise.co
- GitHub: https://github.com/omise/omise.js