Storecove社が提供しているデジタルインボイスAPIを、Oracle APEXから呼び出してみます。
Storecove社のサイトは以下です。
Storecove社は、デジタル庁が推進しているPeppolのネットワークにアクセスするサービスおよびRESTful APIを提供しています。
APIの呼び出しを試すには、サンドボックス環境を取得する必要があります。サンドボックス環境は無料で取得できます。詳しくは上記のStorecove社のサイトを参照してください。
開発者アカウントを作成しログインすると、SettingsタプよりAPIキーの生成と取得ができます。
これらの情報を準備できなかったため、以下の作業のみを実施しました。
デジタルインボイスの作成(StorecoveのAPIではインボイスはJSONオブジェクトとして作成します)や、送受信のAPI呼び出しは含みません。
Authorization: Bearer API_KEY_HERE
この形式の認証は、認証タイプがHTTPヘッダーであるWeb資格証明として作成できます。
ワークスペース・ユーティリティのWeb資格証明を開きます。
Web資格証明が作成できたので、SQLコマンドよりAPIの呼び出しを行います。
{"code":"OK","email":false}
Web資格証明の作成
StorecoveのAPIは以下の形式のAuthorizationヘッダーにより、認証を行います。(1.1.3 Make your first API callのcurlのサンプルより)
Authorization: Bearer API_KEY_HERE
この形式の認証は、認証タイプがHTTPヘッダーであるWeb資格証明として作成できます。
ワークスペース・ユーティリティのWeb資格証明を開きます。
作成するWeb資格証明に、以下の値を設定します。
名前は任意です。今回はStorecove API Keyとしました。静的識別子はAPI呼び出しの際に指定する文字列になります。今回はSTORECOVE_API_KEYとしています。
認証タイプとしてHTTPヘッダーを選択します。資格証明名はヘッダー名であるAuthorizationを指定します。資格証明シークレットとして、Bearerで始め、空白で区切り、StorecoveのSettingsのAPI Keysの画面で生成したAPIキーの値を続けて設定します。
Bearer API_KEY_HERE
URLに対して有効に、APIのベースURLである以下を設定します。
https://api.storecove.com/api/v2/
APIの呼び出し
最初のAPIとして、Discover Network Participantが呼び出されています。
https://app.storecove.com/en/docs#_receiving_documents
リクエストの本体であるJSONドキュメントはDiscoverableParticipantです。
以下のPL/SQLコードを実行します。
SQLワークショップのSQLコマンドより実行します。(記事の先頭のスクリーンショット)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
declare | |
l_response clob; | |
l_request clob; | |
begin | |
l_request := q'~ | |
{ | |
"documentTypes": ["invoice"], | |
"network": "peppol", | |
"metaScheme": "iso6523-actorid-upis", | |
"scheme": "nl:kvk", | |
"identifier":"60881119" | |
} | |
~'; | |
apex_web_service.clear_request_headers; | |
apex_web_service.set_request_headers('Accept','application/json',p_reset => false); | |
apex_web_service.set_request_headers('Content-Type','application/json',p_reset => false); | |
l_response := apex_web_service.make_rest_request( | |
p_url => 'https://api.storecove.com/api/v2/discovery/receives' | |
,p_http_method => 'POST' | |
,p_body => l_request | |
,p_credential_static_id => 'STORECOVE_API_KEY' | |
); | |
dbms_output.put_line('status_code = ' || apex_web_service.g_status_code); | |
dbms_output.put_line(l_response); | |
end; |
応答としてDiscoveredParticipantが返されます。
今回の実行では、以下の応答が返されます。
{"code":"OK","email":false}
以上で、Oracle APEXからStorecove APIを呼び出せることが確認できました。
ドキュメントの送信(3.2.2 Sending a document)、インボイス(5.2.32 Invoice)、送信証明の取得(3.3.5 Sending Evidence)、ドキュメントの受信(3.4.2. Received Document Webhook)といったAPIも何かの機会があれば、試してみたいと思います。
Oracle APEXによるアプリケーション作成の参考になれば幸いです。
完