ルーティングルールの作成
決済ルーティング用の新しいルーティンググループルールを作成します。ルーティングルールを使用すると、様々な条件に基づいて、トランザクションが異なる決済プロバイダーやアクワイアラ間でどのように処理されるかを制御できます。
API認証情報
リクエストパラメータ
必須 - 3フィールド必須パラメータ
`name`STRING(required)
ルーティングルールの人間が読める名前。ダッシュボードやログでの識別に使用されます。
`conditions`ARRAY(required)
このルールが適用されるタイミングを決定する条件オブジェクトの配列。各条件は、照合するフィールド、演算子、値を指定します。
`provider`STRING(required)
ターゲット決済プロバイダー識別子。このルールに一致するトランザクションはこのプロバイダーにルーティングされます。
条件構造条件パラメータ
`conditions[].field`STRING(required)
評価するトランザクションフィールド。オプションには amount、currency、card_brand、card_type、card_country、metadata フィールドが含まれます。
`conditions[].operator`STRING(required)
条件の比較演算子。
`conditions[].value`ANY(required)
比較する値。型はフィールドによって異なります(amountには数値、currencyには文字列、"in"演算子には配列)。
追加 - 5フィールド追加パラメータ
メタデータ - 1フィールドメタデータパラメータ
レスポンス
200
ルール作成成功ルーティングルールが正常に作成されました。enabledがfalseに設定されていない限り、ルールは即座にアクティブになります。
レスポンスに含まれる項目:
object- 常に "routing_group_rule" を返すid- 一意のルール識別子name- ルール名conditions- 条件オブジェクトの配列provider- ターゲットプロバイダー識別子priority- ルールの優先度enabled- ルールがアクティブかどうかcreated_at- 作成タイムスタンプ
400
不正なリクエストリクエストの検証に失敗しました。詳細はエラーメッセージを確認してください。
一般的な原因:
- 必須フィールド(name、conditions、provider)の欠落
- 無効な条件構造
- 不明なプロバイダー識別子
- フィールドタイプに対して無効な演算子
- 条件値の型の不一致
401
認証エラー認証に失敗しました。APIキーが無効または欠落しています。
一般的な原因:
- Authorizationヘッダーの欠落
- 無効なシークレットキー
- シークレットキーの代わりにパブリックキーを使用
- 不正なHTTP Basic Auth形式
404
見つかりません参照されたリソースが見つかりません。
一般的な原因:
- 無効なプロバイダー識別子
- アカウントでルーティング機能が有効になっていない
5xx
サーバーエラーサーバー側でエラーが発生しました。これらは稀ですが、適切に処理する必要があります。
対処方法:
- 指数バックオフでリクエストを再試行
- status.omise.coでサービスインシデントを確認
- 詳細なガイダンスはエラー処理を参照
コードサンプル
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
curl https://api.omise.co/routing_group_rules \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-d "name=Route high-value to Provider A" \
-d "provider=provider_a" \
-d "conditions[0][field]=amount" \
-d "conditions[0][operator]=gte" \
-d "conditions[0][value]=100000" \
-d "priority=100"
require 'omise'
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
rule = Omise::RoutingGroupRule.create({
name: 'Route high-value to Provider A',
provider: 'provider_a',
conditions: [
{ field: 'amount', operator: 'gte', value: 100000 }
],
priority: 100
})
import omise
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
rule = omise.RoutingGroupRule.create(
name='Route high-value to Provider A',
provider='provider_a',
conditions=[
{'field': 'amount', 'operator': 'gte', 'value': 100000}
],
priority=100
)
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t'
});
const rule = await omise.routingGroupRules.create({
name: 'Route high-value to Provider A',
provider: 'provider_a',
conditions: [
{ field: 'amount', operator: 'gte', value: 100000 }
],
priority: 100
});
<?php
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
$rule = OmiseRoutingGroupRule::create([
'name' => 'Route high-value to Provider A',
'provider' => 'provider_a',
'conditions' => [
['field' => 'amount', 'operator' => 'gte', 'value' => 100000]
],
'priority' => 100
]);
Client client = new Client.Builder()
.secretKey("skey_test_5xuy4w91xqz7d1w9u0t")
.build();
Condition condition = new Condition.Builder()
.field("amount")
.operator("gte")
.value(100000)
.build();
RoutingGroupRule rule = client.routingGroupRules().create()
.name("Route high-value to Provider A")
.provider("provider_a")
.conditions(Arrays.asList(condition))
.priority(100)
.send();
var client = new Client("skey_test_5xuy4w91xqz7d1w9u0t");
var rule = await client.RoutingGroupRules.Create(new CreateRoutingRuleRequest
{
Name = "Route high-value to Provider A",
Provider = "provider_a",
Conditions = new List<Condition>
{
new Condition { Field = "amount", Operator = "gte", Value = 100000 }
},
Priority = 100
});
client, _ := omise.NewClient(
"pkey_test_5xuy4w91xqz7d1w9u0t",
"skey_test_5xuy4w91xqz7d1w9u0t",
)
rule, _ := client.RoutingGroupRules().Create(&operations.CreateRoutingGroupRule{
Name: "Route high-value to Provider A",
Provider: "provider_a",
Conditions: []omise.Condition{
{Field: "amount", Operator: "gte", Value: 100000},
},
Priority: 100,
})
エラーと結果コード
一般的なエラーコード
| コード | 説明 | 解決方法 |
|---|---|---|
bad_request | パラメータの欠落または無効 | すべての必須フィールドが提供されていることを確認 |
authentication_failure | 無効なAPIキー | シークレットキーが正しいことを確認 |
invalid_condition | 条件構造が無効 | field、operator、valueが正しいことを確認 |
invalid_provider | プロバイダーが見つかりません | プロバイダー識別子が存在することを確認 |
duplicate_rule | 同名のルールが存在 | 一意のルール名を使用 |
条件演算子
| 演算子 | 説明 | 使用可能なフィールド |
|---|---|---|
eq | 等しい | すべてのフィールド |
neq | 等しくない | すべてのフィールド |
gt | より大きい | amount |
gte | 以上 | amount |
lt | より小さい | amount |
lte | 以下 | amount |
in | リスト内の値 | currency、card_brand、card_type |
not_in | リスト内にない値 | currency、card_brand、card_type |
contains | サブ文字列を含む | metadataフィールド |