For the complete documentation index, see llms.txt. This page is also available as Markdown.

署名生成

ヒント (TIP)

加盟店は以下の手順に従ってリクエストの署名を生成できます。プラットフォームはリクエストを受け取った後に署名を検証します。署名の検証に失敗した場合、リクエストは拒否され、適切なステータスコード (status code) が返されます。

準備 (Preparation)

加盟店は加盟店番号を登録し、加盟店管理画面から決済アプリを作成して、APP_IDAPP_SECRECT を取得する必要があります。

条件 (Condition)

本ドキュメントの POST メソッドのすべてのインターフェースは署名を検証する必要がありますが、その他のインターフェースは現在のところ検証の必要はありません。

生成 (Generation)

署名文字列は4行で構成され、1行につき1つのパラメーターが含まれます。行の末尾は \n (改行、ASCIIエンコード値は 0x0A) で終わりますが、最後の行には \n を追加しないでください。パラメーター自体が \n で終わっている場合でも、\n を付与する必要があります。

URL\n
Request timestamp\n
Request random string\n
Request message body

注文照会 (order inquiry) を例に挙げます。

最初のステップは、リクエストの絶対URLを取得し、ドメイン名部分を削除して署名用のURLを取得することです。リクエストにクエリパラメーターがある場合は、URLの後に '? ' と対応するクエリ文字列を追加する必要があります。

/v1/transaction/query

2番目のステップは、リクエストが開始されたときのシステムの現在のタイムスタンプ(ミリ秒)を取得することです。つまり、1970年1月1日00:00:00 GMTから現在までの総秒数をリクエストのタイムスタンプとします。プラットフォームは過去すぎるリクエストの処理を拒否するため、加盟店自身のシステムの時間を正確に保ってください。

3番目のステップは、32ビットの ランダム文字列 (random string) を生成することです。

4番目のステップは、リクエスト内のリクエストメッセージ本文(request body)を取得することです。

5番目のステップは、これまでのルールに従ってリクエストの署名文字列を構築することです:

暗号化 (Encryption)

JavaScriptでの暗号化プロセスを例に挙げます:

暗号化後の例:

連結 (Concatenate)

署名情報の連結形式は以下の通りです: app_id=APP_ID、mch_id=加盟店ID、nonce_str=ステップ3で生成されたランダム文字列、timestamp=ステップ2で生成されたタイムスタンプ、signature=暗号化された署名文字列

HTTP ヘッダー (HTTP header)

ドキュメントAPIはHTTPの Authorization ヘッダーを通じて署名を渡します。Authorization認証タイプ署名情報 の2つの部分で構成されます。現在のところ、認証タイプTTPAY-AES-256-ECB のみをサポートしています。

Authorizationヘッダーは以下の通りです:(注:組版の都合上、改行が含まれる場合がありますが、実際のデータは1行にする必要があります)

最後に、署名を含むHTTPリクエストを作成できます。

デモコード (Demo code)

最終更新