認証とAPIキー
DEUNA のパブリックおよびプライベート API キーを、正しいクライアント、サーバー、商社、および環境コンテキストで使用してください。
DEUNAの認証情報は、統合で使用される商社と環境を特定します。必要な認証は、エンドポイントと呼び出し元によって異なります。認証パネルで確認してください。 エンドポイント: カタログ リクエストの実行前に。
適切な認証情報を選択してください#
| 認証情報 | どこに属するか | 機能概要 |
|---|---|---|
| APIキーを通じて、Athiaにリアルタイムで伝達されます。 | ブラウザまたはモバイル SDK | サポートされているクライアント側のUIとトークン化フローを初期化します。 |
| プライベートAPIキー | 信頼できる商社バックエンド | 商社サーバー間での操作を認証します X-Api-Key. |
| 顧客用アクセス トークン | 顧客向けフロー | ログイン済みの顧客情報を透過的に追加 Authorization: Bearer … 対応しているエンドポイントで。 |
| 管理者のセッション | 使用する APM の評価用の不正検知プロバイダーを選択および設定します (例: Cybersource または Riskified)。 | 承認されたオペレーター向けのロールベースのアクセス権を提供します。これは、統合APIの資格情報ではありません。 |
商社バックエンドによる認証#
APIキーによる認証を使用する商社の操作では、プライベートなキーが… X-Api-Key.
curl --request GET \
--url https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN \
--header "X-Api-Key: YOUR_PRIVATE_API_KEY"const response = await fetch("https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN", {
method: "GET",
headers: {
"X-Api-Key": "YOUR_PRIVATE_API_KEY"
}
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();import requests
response = requests.request(
"GET",
"https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN",
headers={
"X-Api-Key": "YOUR_PRIVATE_API_KEY"
},
)
response.raise_for_status()
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN",
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-Api-Key: YOUR_PRIVATE_API_KEY"
]
]);
$response = curl_exec($curl);
curl_close($curl);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN"))
.header("X-Api-Key", "YOUR_PRIVATE_API_KEY")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}package main
import (
"fmt"
"io"
"net/http"
)
func main() {
request, err := http.NewRequest("GET", "https://api.sandbox.deuna.io/merchants/orders/ORDER_TOKEN", nil)
if err != nil { panic(err) }
request.Header.Set("X-Api-Key", "YOUR_PRIVATE_API_KEY")
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}一部のエンドポイントでは、さらに Authorization 顧客情報を送信するためのヘッダー
Authorization: Bearer USER_ACCESS_TOKENBearerトークンは、必要なプライベートAPIキーの代わりにはなりません。 Bearerサポートがエンドポイントドキュメントで指定され、認証された顧客コンテキスト(保存された決済手段や顧客固有の支払い方法など)が必要な場合にのみ送信してください。
環境で使用#
サンドボックスと本番環境は分離されています。 各環境には、独自のベースURL、APIキー、商社設定、接続、データ、およびWebhookエンドポイントがあります。
サンドボックスの認証情報とプロバイダのテスト設定を使用して、完全な統合をテストしてください。
本番環境の商社認証情報と本番環境の認証情報を使用して、実際の決済処理を行います。
キーの保存とローテーション#
- プライベートキーは、秘密管理ツールまたは保護された実行時設定に保存してください。
- サービスおよび必要な環境へのアクセス範囲を制限してください。
- リクエストログおよびサポート添付ファイルから認証情報を削除してください。
- 古いキーを削除する前に、代替キーをデプロイして、本番環境でのトラフィックを安全に継続します。
- キーの発行とローテーションは、承認された管理者オペレーターまたはDEUNAのTAMと連携して実施してください。
認証エラー#
認証エラーは通常、以下のような結果を返します。 401 Unauthorized または 403 Forbidden再試行する前に、以下の点を確認してください。
- 認証情報は、ドキュメントで指定されたヘッダーに存在します。
- キーは、要求された環境と商社に属していること。
- このエンドポイントは、送信した認証方法をサポートしています。
- 顧客トークンまたはキーは有効期限切れになっていません。
- 必要な商社、店舗、または顧客に関する情報はすべて含まれています。
永続的に認証エラーを再試行しないでください。 応答を保持してください。 request_id 利用可能な場合は、お問い合わせの際に必ず記載してください。
レート制限#
認証されたリクエストが許可されたリクエストレートを超えた場合、APIは 429 Too Many Requests. 敬意 Retry-After 存在する場合は、リトライを連続して送信するのではなく、バックオフする代わりに、元のidempotencyキーと本文を再利用し、同じ支払い試行に対して使用します。制限はアカウントとエンドポイントによって異なる場合があります。