ソースの作成
代替決済手段用の決済ソースを作成します。ソースを使用することで、PromptPay QRコード、モバイルバンキング、インターネットバンキング、分割払いなどでの支払いが可能になります。
リクエストパラメータ
必須 - 3項目必須パラメータ
`amount`INTEGER(required)
最小通貨単位での金額(THBの場合はサタン、USDの場合はセント、JPYの場合は円)。例:100000サタン = 1,000 THB。
`currency`STRING(required)
ISO 4217形式の3文字通貨コード(小文字)。決済手段タイプと一致する必要があります。
`type`STRING(required)
決済手段タイプ。タイプによって対応通貨が異なります。
推奨 - 2項目推奨パラメータ
追加 - 15項目追加パラメータ
レスポンス
200
取引成功ソースが正常に作成されました。レスポンスにはQRコードやリダイレクトURLなどの決済固有のデータが含まれます。
主なレスポンスフィールド:
id- チャージ作成時に使用するソースID(src_*)type- 決済手段タイプflow- 決済フロー:offline(QRコード)、redirect(Web)、またはapp_redirect(モバイルアプリ)amount- 最小通貨単位でのソース金額currency- 通貨コードscannable_code- QRベース決済用のQRコードデータcharge_status- このソースで作成されたチャージのステータスcreated_at- ソース作成タイムスタンプ(ISO 8601)
400
不正なリクエストリクエストの検証に失敗しました。詳細はエラーメッセージを確認してください。
主な原 因:
- 必須フィールド(
amount、currency、type)が不足 - 決済タイプに対して無効な通貨(例:PromptPayにSGD)
- タイプ固有の必須フィールドが不足(例:分割払いのinstallment_term)
- 無効な決済タイプ
401
認証エラー認証に失敗しました。APIキーが無効または不足しています。
主な原因:
- Authorizationヘッダーが不足
- 無効な公開キー
- 公開キーの代わりに秘密キーを使用
- HTTP Basic Auth形式が正しくない
422
処理不能なエンティティビジネスロジックの制約によりリクエストの検証に失敗しました。
主な原因:
- 決済タイプの最小金額を下回っている
- 決済タイプの最大金額を超えている
- アカウントで決済タイプが有効化されていない
- 選択した銀行に対して無効な分割払い期間
5xx
サーバーエラーサーバー側でエラーが発生しました。まれなケースですが、適切に処理する必要があります。
対処方法:
- 指数バックオフでリクエストを再試行
- status.omise.coでサービスインシデントを確認
- 詳細な ガイダンスはエラー処理を参照
コードサンプル
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
curl https://api.omise.co/sources \
-u pkey_test_5xuy4w91xqz7d1w9u0t: \
-d "amount=100000" \
-d "currency=thb" \
-d "type=promptpay"
require 'omise'
Omise.api_key = 'pkey_test_5xuy4w91xqz7d1w9u0t'
source = Omise::Source.create({
amount: 100000,
currency: 'thb',
type: 'promptpay'
})
import omise
omise.api_public = 'pkey_test_5xuy4w91xqz7d1w9u0t'
source = omise.Source.create(
amount=100000,
currency='thb',
type='promptpay'
)
const omise = require('omise')({
publicKey: 'pkey_test_5xuy4w91xqz7d1w9u0t'
});
const source = await omise.sources.create({
amount: 100000,
currency: 'thb',
type: 'promptpay'
});
<?php
define('OMISE_PUBLIC_KEY', 'pkey_test_5xuy4w91xqz7d1w9u0t');
$source = OmiseSource::create([
'amount' => 100000,
'currency' => 'thb',
'type' => 'promptpay'
]);
Client client = new Client.Builder()
.publicKey("pkey_test_5xuy4w91xqz7d1w9u0t")
.build();
Source source = client.sources().create()
.amount(100000L)
.currency("thb")
.type("promptpay")
.send();
var client = new Client("pkey_test_5xuy4w91xqz7d1w9u0t");
var source = await client.Sources.Create(new CreateSourceRequest
{
Amount = 100000,
Currency = "thb",
Type = "promptpay"
});
client, _ := omise.NewClient(
"pkey_test_5xuy4w91xqz7d1w9u0t",
"",
)
source, _ := client.Sources().Create(&operations.CreateSource{
Amount: 100000,
Currency: "thb",
Type: "promptpay",
})
エラーコードと結果コード
一般的なエラーコード
| コード | 説明 | 解決方法 |
|---|---|---|
bad_request | パラメータが不足または無効 | すべての必須フィールドが指定されているか確認 |
authentication_failure | 無効なAPIキー | 公開キーが正しいか確認 |
currency_not_supported | 決済タイプで通貨がサポートされていない | 決済タイプが通貨をサポートしているか確認 |
amount_too_low | 金額が最小値を下回っている |