/komoju-create-session.sql Secret
Last active
August 23, 2023 04:40
KOMOJUでの決済セッションの作成
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_request clob; | |
l_request_json json_object_t; | |
l_response clob; | |
l_response_json json_object_t; | |
l_session_id varchar2(128); | |
e_create_session_failed exception; | |
begin | |
l_request_json := json_object_t(); | |
l_request_json.put('amount', to_number(:P1_AMOUNT)); | |
l_request_json.put('currency', 'JPY'); | |
/* | |
* komoju-fields要素のsubmitを行った後にreturn_urlに指定したURLに | |
* 遷移する。その際にreturn_urlに与えたURLに引数としてsession_id=セッションIDが | |
* 付加される。APEXはこれをアプリケーション・アイテムと見做すため、 | |
* アプリケーション・アイテムSESSION_IDの作成が必要になる。session_idはKOMOJUが付加するため | |
* チェックサムの計算ができない。そのためセッション・ステート保護を制限なしに設定する必要がある。 | |
* また、遷移先のページのページ・アクセス保護も、チェックサムが無くてもアクセスができるように制限なしにする必要がある。 | |
* | |
* ホストフィールドの表示をモーダル・ダイアログかドロワーにすると、return_urlの指定は不要になる。 | |
*/ | |
-- l_request_json.put('return_url',apex_util.host_url() || apex_page.get_url(p_page => 1)); | |
l_request := l_request_json.to_clob(); | |
apex_debug.info(l_request); -- デバッグ用 | |
apex_web_service.set_request_headers('Content-Type','application/json'); | |
l_response := apex_web_service.make_rest_request( | |
p_url => :KOMOJU_ENDPOINT || '/v1/sessions' | |
,p_http_method => 'POST' | |
,p_body => l_request | |
,p_credential_static_id => 'KOMOJU_CRED' | |
); | |
apex_debug.info(l_response); -- デバッグ用 | |
if apex_web_service.g_status_code <> 200 then | |
apex_debug.info(l_response); | |
raise e_create_session_failed; | |
end if; | |
l_response_json := json_object_t(l_response); | |
-- レスポンスからセッションIDを取り出す。 | |
:P1_SESSION_ID := l_response_json.get_string('id'); | |
end; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment