Contents
BtoBプラットフォームと請求書システムのAPI連携の基本フロー
API連携は「データ共有」を目的とした仕組みであり、外部システムとの連携を実現するには以下の3つのステップが不可欠です。
- 認証設定:アクセス許可を得るためのトークン取得とヘッダ設定
- マスタデータ同期:支払先情報や請求書テンプレートなどの初期設定
- 実際のAPI呼び出し:取得・送信処理を含む動作検証
特に中小企業では、運用開始後のトラブル回避が重要です。公式リファレンスに記載された手順を厳守し、ステップごとに担当者間での連携要件を明確化することが求められます。
認証仕様と共通ヘッダーの設定方法
API連携には必ず認証処理が必要であり、誤った設定ではアクセスが拒否されます。以下にOAuth2.0によるアクセストークン取得フローとリクエストヘッダに含める必須パラメータを解説します。
OAuth2.0によるアクセストークン取得フロー
認証プロセスの概要
- 認証サーバに対してクライアントIDとシークレットを送信
- アクセストークンとリフレッシュトークンが返却される(有効期限:通常1時間)
注意事項: トークンはセキュアな環境で保管し、定期的にリフレッシュする必要があります。[XXX]公式APIリファレンスには「リフレッシュトークンの再取得手順」が記載されているため、参照してください。
リクエストヘッダに含める必須パラメータ
| 項目 | 値例 | 補足 |
|---|---|---|
Authorization |
Bearer {トークン} |
アクセストークンをBase64形式で設定 |
Content-Type |
application/json |
JSON形式でのリクエストが必要 |
Accept |
application/json |
レスポンス形式の指定 |
支払先マスタのAPI連携手順
支払先情報を外部システムと同期する際には、CSVファイルを介したデータ送信が一般的です。ただし、事前に以下の前提条件を確認することが不可欠です。
データ同期前の前提条件確認
- ① 請求書システム側のマスタデータ構造の確認: 各カラム名とデータ型を公式ドキュメントで明記
- ② エンコード形式の統一: UTF-8でCSV出力し、改行コード(LF)に統一
- ③ バッチ処理時間の設定: 定期的な同期を行う場合は、夜間帯を指定
事例紹介: [XXX]のAPIリファレンスでは、「CSVデータ送信時のエラーメッセージ例」が提供されており、事前テストに活用できます。
CSV形式でのデータ送信例
| 支払先ID | 名称 | 郵便番号 | 住所 |
|---|---|---|---|
| 12345 | サンプル株式会社 | 100-8111 | 東京都千代田区 |
請求書データの取得・送信API利用例
実際のコードスニペットを参考に、GETリクエストによるデータ取得とPOSTリクエストでの送信フォーマットを解説します。
GETリクエストによるデータ取得の実装サンプル(Python)
|
1 2 3 4 5 6 7 8 9 10 |
import requests headers = { 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx', 'Content-Type': 'application/json' } response = requests.get('https://api.example.com/invoice', headers=headers) print(response.json()) |
ポイント:
response.status_codeでHTTPステータスコードを確認し、200 OK以外の場合はエラーハンドリングに移行します。
POSTリクエストでの送信フォーマット
|
1 2 3 4 5 6 7 8 |
{ "invoice_id": "INV-2026-001", "amount": 35000, "due_date": "2026-07-15", "recipient_name": "株式会社エコノミー", "payment_method": "銀行振込" } |
注意点:
due_dateはYYYY-MM-DD形式で送信し、金額は整数値を指定する必要があります。
エラーハンドリング対策
API連携時の異常時処理には、以下の2つの設計例が有効です。特に中小企業では再試行ロジックの導入が運用安定化に貢献します。
HTTPステータスコード別の処理フロー
| ステータスコード | 対応処理 |
|---|---|
| 401 Unauthorized | トークン再取得後、リトライする |
| 429 Too Many Requests | リクエスト間隔を延長(例:30秒) |
| 5xx Server Error | 約1分の待機後にリトライ |
再試行ロジックの設計例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import time import requests def retry_api_call(url, headers, max_retries=3): for i in range(max_retries): try: response = requests.post(url, headers=headers) if response.status_code == 200: return response.json() elif response.status_code == 500 and i < max_retries -1: time.sleep(60) # サーバ側負荷軽減のため一時停止 except Exception as e: print(f"リトライ中:{i+1}回目") return None |
運用開始までの申請プロセス
API連携後は、環境設定完了後の確認項目と正式稼働のための申請書類を明確に整理する必要があります。
環境設定完了後の確認項目
- ① 認証トークン発行テスト:アクセストークン取得が可能か確認
- ② データ同期テスト:CSVファイル送信後にマスタデータが反映されているかチェック
- ③ ログ監視設定:API呼び出しのステータスコードやエラーメッセージを記録
正式稼働のための申請書類
- API利用同意書([XXX]公式サイトでダウンロード可能)
- 連携システム構成図(外部開発元との連携範囲を明記)
- 運用責任者名と連絡先(トラブル時のサポート対応用)
まとめ
- 認証設定ではOAuth2.0を使用し、ヘッダに
AuthorizationとContent-Typeを必須で含める - 支払先マスタ同期はCSVファイル送信が一般的な方法。データ形式の確認が不可欠
- GET/POSTリクエストでのAPI利用例を元に、実際のコードを参考に導入可能
- エラーハンドリングではHTTPステータスコードごとに処理フローを設計し、再試行ロジックを活用
- 運用開始には申請書類と環境設定確認が必須。公式リファレンスを常に参照して実施
これらを踏まえ、担当者間で連携要件を明確化しながらAPI連携を進めてください。