LINEミニアプリ APIリファレンス
サービスメッセージ
この機能は、認証済ミニアプリでのみ利用できます。未認証ミニアプリの場合、開発用の内部チャネルではテストできますが、公開用の内部チャネルでは利用できません。
サービスメッセージAPIを使用すると、サービスからLINEミニアプリのユーザーに、サービスメッセージを送信できます。
サービスメッセージを送信するには、サービス通知トークンとテンプレートが必要です。
サービス通知トークンを発行する
サービス通知トークンを発行します。サービス通知トークンを使用すると、紐づけられたユーザーに対してサービスメッセージを送信できます。
サービス通知トークンの特徴は以下のとおりです。
- サービス通知トークンは、発行から1年間(31,536,000秒間)有効です。有効期限が切れるまでに、最大5回サービスメッセージを送信できます。
- サービス通知トークンを使用すると、有効期限が切れておらず、残りの送信可能回数が0でない場合は、サービス通知トークンの値が更新されます。ユーザーに対して、後続のサービスメッセージを送信する場合は、更新後のサービス通知トークンを保存してください。
liff.getAccessToken()で取得したアクセストークン(LIFFのアクセストークン)を再利用して、複数のサービス通知トークンを発行することは許可されていません。
LIFFのアクセストークン1つにつき、発行できるサービス通知トークンは1つだけです。
サービス通知トークンは、一人のユーザーに紐づいています。あるユーザーに紐づいたサービス通知トークンを利用して、ほかのユーザーにサービスメッセージを送信することはできません。
リクエストの例
HTTPリクエスト
POST https://api.line.me/message/v3/notifier/token
リクエストヘッダー
Content-Type
application/json
Authorization
Bearer {channel access token}
詳しくは、「チャネルアクセストークン」を参照してください。
LINEミニアプリチャネルでは、長期のチャネルアクセストークンおよび、任意の有効期間を指定できるチャネルアクセストークン(チャネルアクセストークンv2.1)は使用できません。
LINEミニアプリの開発では、ステートレスチャネルアクセストークンまたは短期のチャネルアクセストークンを使用できます。このうち、ステートレスチャネルアクセストークンの使用を推奨します。ステートレスチャネルアクセストークンは、発行数に制限がないため、アプリケーション側でトークンのライフサイクルを管理する必要がありません。
リクエストボディ
liffAccessToken
String
liff.getAccessToken()で取得したアクセストークン(LIFFのアクセストークン)
レスポンス
ステータスコード200と以下の情報を含むJSONオブジェクトを返します。
notificationToken
String
サービス通知トークン
expiresIn
Number
サービス通知トークンの有効期限が切れるまでの秒数。サービス通知トークンは、発行から1年間(31,536,000秒間)有効です。
remainingCount
Number
発行されたサービス通知トークンで、サービスメッセージを送信できる回数
sessionId
String
セッションID。詳しくは、「サービスメッセージを送信する」を参照してください。
レスポンスの例
エラーレスポンス
以下のいずれかのステータスコードとエラーメッセージを返します。
| ステータスコード | 説明 |
|---|---|
| 400 Bad request | 以下のいずれかです。
|
| 401 Unauthorized | 以下のいずれか、または両方です。
|
| 403 Forbidden | このチャネルには、サービス通知トークンを発行する許可が与えられていません。 |
| 500 Internal Server Error | 内部サーバーのエラーです。 |
エラーレスポンスの例
サービスメッセージを送る
サービス通知トークンで指定されたユーザーに、サービスメッセージを送信します。
サービスメッセージを送信すると、有効期限が切れておらず、残りの送信可能回数が0でない場合は、サービス通知トークンの値が更新されます。ユーザーに対して、後続のサービスメッセージを送信する予定がある場合は、更新後のサービス通知トークンを保存してください。
リクエストの例
HTTPリクエスト
POST https://api.line.me/message/v3/notifier/send
リクエストヘッダー
Content-Type
application/json
Authorization
Bearer {channel access token}
詳しくは、『LINEプラットフォームの基礎知識』の「チャネルアクセストークン」を参照してください。
LINEミニアプリチャネルでは、長期のチャネルアクセストークンおよび、任意の有効期間を指定できるチャネルアクセストークン(チャネルアクセストークンv2.1)は使用できません。
LINEミニアプリの開発では、ステートレスチャネルアクセストークンまたは短期のチャネルアクセストークンを使用できます。このうち、ステートレスチャネルアクセストークンの使用を推奨します。ステートレスチャネルアクセストークンは、発行数に制限がないため、アプリケーション側でトークンのライフサイクルを管理する必要がありません。
クエリパラメータ
target
service
リクエストボディ
templateName
String
サービスメッセージとして利用する、追加済みテンプレートの名前。テンプレートの名前はLINE Developersコンソールで確認できます。詳しくは、「送信できるサービスメッセージの種類」を参照してください。
BCP 47言語タグを末尾に追加してください。
フォーマット:{template name}_{BCP 47 language tag}
最大文字数:30
サービスメッセージでサポートしている言語と言語タグは、以下のとおりです。
- 日本語:
ja - 英語:
en - 中国語(繁体字):
zh-TW - タイ語:
th - インドネシア語:
id - 韓国語:
ko
params
object
テンプレート変数と値のペアを指定するJSONオブジェクト。
テンプレートにテンプレート変数がない場合は、空のJSONオブジェクト({ })を指定します。
テンプレート変数は、テンプレートごとに定義されています。必須の要素にテンプレート変数が含まれる場合は、必ずテンプレート変数と値のペアを指定してください。
詳しくは、「サービスメッセージのテンプレートをチャネルに追加する」を参照してください。
notificationToken
String
サービス通知トークン
レスポンス
ステータスコード200と以下の情報を含むJSONオブジェクトを返します。
notificationToken
String
更新後のサービス通知トークン。このサービス通知トークンを使用して、後続のサービスメッセージを送信します。
expiresIn
Number
更新後のサービス通知トークンの有効期限が切れるまでの秒数
remainingCount
Number
更新後のサービス通知トークンで、後続のサービスメッセージを送信できる回数
sessionId
String
セッションID。詳しくは、「サービスメッセージを送信する」を参照してください。
expiresInおよびremainingCountの値が0の場合は、サービスメッセージは送信されたが、サービス通知トークンが更新できなかったことを示します。
レスポンスの例
エラーレスポンス
以下のいずれかのステータスコードとエラーメッセージを返します。
| ステータスコード | 説明 |
|---|---|
| 400 Bad request | 以下のいずれかです。
|
| 401 Unauthorized | 以下のいずれか、または両方です。
|
| 403 Forbidden | 以下のいずれかです。
|
| 500 Internal Server Error | 内部サーバーのエラーです。 |
エラーレスポンスの例
共通プロフィールのクイック入力
共通プロフィールのクイック入力を利用するには、LINEミニアプリが認証済みであり、かつクイック入力の利用申請を行う必要があります。詳しくは、「クイック入力の利用手順」を参照してください。
クイック入力とは、LINEミニアプリ上で[自動入力]をタップすることで、必要なプロフィール情報が自動で入力される機能です。ユーザーがアカウントセンターで設定した共通プロフィールの情報が、LINEミニアプリで簡単に利用できます。詳しくは、「共通プロフィールのクイック入力の概要」を参照してください。
liff.$commonProfile.get()
ユーザーがアカウントセンターで設定している共通プロフィールの情報を取得します。
liff.$commonProfile.get()メソッドを実行すると、ユーザーがプロフィールの情報を確認するためのモーダルが表示されます。表示されたモーダルでプロフィールを確認後、ユーザーが[自動で入力する]をタップすると、共通プロフィールの情報を取得できます。
モーダルの表示例:

例
構文
liff.$commonProfile.get(scopes, options);
引数
scopes
Array of strings
取得したい共通プロフィールのスコープを指定します。
scopesに指定できる値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
options
Object
共通プロフィールの情報を取得するときのオプション
options.formatOptions
Object
情報の形式に関するオプション。scopesプロパティで指定した各スコープに対して、formatOptionsオブジェクトを指定します。
キーには、オプションを設定したいスコープをキャメルケース形式で指定します。たとえば、スコープがgiven-nameのとき、キーはgivenNameになります。
formatOptionsオブジェクト
excludeEmojis
Boolean
文字列内の絵文字を削除するかどうか。デフォルトはtrueです。以下のスコープにのみ指定できます。
- givenName
- familyName
excludeNonJp
Boolean
12桁以上の電話番号を排除するかどうか。デフォルトはtrueです。trueの場合、電話番号が12桁以上のときは、空文字とエラー情報を返します。以下のスコープにのみ指定できます。
- tel
digitsOnly
Boolean
数字以外の郵便番号を排除するかどうか。デフォルトはtrueです。trueの場合、郵便番号に数字以外が含まれているときは、空文字とエラー情報を返します。以下のスコープにのみ指定できます。
- postalCode
例
戻り値
{ data: Partial<CommonProfile>, error: Partial<CommonProfileError>}型のPromiseオブジェクトが返されます。
Promiseがresolveされると、dataプロパティにユーザーの共通プロフィール情報を含むPartial<CommonProfile>型、errorプロパティにエラー情報を含むPartial<CommonProfileError>型のオブジェクトが渡されます。
次のような場合、dataが持つプロパティはundefinedもしくはnullになります。
undefinedになるケース- 引数の
scopesで対象の項目を指定していない場合 - 引数の
scopesで対象の項目を指定したが、ユーザーがその項目の権限を許可していない場合
- 引数の
nullになるケース- ユーザーが共通プロフィールで対象の項目に値を設定していない場合
- 共通プロフィールで対象の項目を取得する時にエラーが発生した場合
指定したスコープに応じて取得できるプロパティの値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
Partial<CommonProfile>型のオブジェクトの例
Partial<CommonProfileError>型のオブジェクトの例
エラーレスポンス
Promiseがrejectされたときは、LiffErrorが渡されます。
プラグインを正しくインストールせずにAPIを呼んだ場合の例
LIFFブラウザ以外でAPIが呼ばれた場合の例
liff.$commonProfile.getDummy()
共通プロフィールのダミーデータを取得します。10種類のダミーデータが用意されており、caseIdによって取得するダミーデータを指定できます。
liff.$commonProfile.getDummy()メソッドを実行すると、プロフィールの情報を確認するためのモーダルが表示されます。[自動で入力する]をタップすると、共通プロフィールのダミーデータを取得できます。
モーダルの表示例:

例
構文
liff.$commonProfile.getDummy(scopes, options, caseId);
引数
scopes
Array of strings
取得したい共通プロフィールのスコープを指定します。
scopesに指定できる値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
options
Object
共通プロフィールの情報を取得するときのオプション
options.formatOptions
Object
情報の形式に関するオプション。scopesプロパティで指定した各スコープに対して、formatOptionsオブジェクトを指定します。
キーには、オプションを設定したいスコープをキャメルケース形式で指定します。たとえば、スコープがgiven-nameのとき、キーはgivenNameになります。
caseId
number
取得したいダミーデータのIDを指定します。IDが1から10までのダミーデータが用意されています。
caseIdごとのダミーデータについては、「取得できる共通プロフィールのダミーデータ」を参照してください。
戻り値
{ data: Partial<CommonProfile>, error: Partial<CommonProfileError>}型のPromiseオブジェクトが返されます。
Promiseがresolveされると、dataプロパティにダミーデータを含むPartial<CommonProfile>型、errorプロパティにエラー情報を含むPartial<CommonProfileError>型のオブジェクトが渡されます。
次のような場合、dataが持つプロパティはundefinedもしくはnullになります。
undefinedになるケース- 引数の
scopesで対象の項目を指定していない場合
- 引数の
nullになるケース- ダミーデータで対象の項目に値が設定されていない場合
指定したIDに応じて取得できるダミーデータについては、「取得できる共通プロフィールのダミーデータ」を参照してください。
Partial<CommonProfile>型のオブジェクトの例
Partial<CommonProfileError>型のオブジェクトの例
エラーレスポンス
Promiseがrejectされたときは、LiffErrorが渡されます。
プラグインを正しくインストールせずにAPIを呼んだ場合の例
LIFFブラウザ以外でAPIが呼ばれた場合の例
liff.$commonProfile.fill()
取得した共通プロフィールの情報をフォームに自動入力します。それぞれのプロフィール情報とフォームの紐づけには、data-liff-autocomplete属性を用います。
liff.$commonProfile.fill()による自動入力は、フォームのdata-liff-autocomplete属性を用いて行います。このとき、フォームのdata-liff-autocomplete属性に指定する値は、取得したプロフィール情報のスコープ(family-name、tel、bday-yearなど)と一致している必要があります。
たとえば、誕生年(bday-year)、誕生月(bday-month)、誕生日(bday-day)の情報をそれぞれ取得した後、20110623のような形式に加工した上でフォームに自動入力させたい場合は、liff.$commonProfile.fill()の代わりに、document.getElementById().valueやdocument.querySelector().valueを用いることができます。
取得した姓、電話番号、性別をそのまま自動入力する例
取得した共通プロフィール情報の形式を一部変更して自動入力する場合
構文
liff.$commonProfile.fill(profile);
引数
profile
Partial<CommonProfile>
フォームに自動入力させるプロフィール情報を、Partial<CommonProfile>型で指定します。
指定できるスコープについては、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
戻り値
なし
アプリ内課金(クライアント)
アプリ内課金機能を利用するには、利用申請を行う必要があります。詳しくは、『LINEミニアプリドキュメント』の「アプリ内課金の概要」を参照してください。
liff.iap.getPlatformProducts()
アプリ内課金で購入可能なアイテムの一覧を取得します。
例
構文
liff.iap.getPlatformProducts({ productIds });
引数
productIds
Array of strings
取得したいアイテムのプロダクトIDの配列
戻り値
Promiseオブジェクトが返されます。Promiseオブジェクトがresolveされると、プロダクトIDをキーとし、以下のプロパティを持つオブジェクトが渡されます。
currency
String
ISO 4217形式の通貨コード。ユーザーが使用しているアプリストアのリージョンにローカライズされた通貨で返されます。
price
Number
アイテムの価格。ユーザーが使用しているアプリストアのリージョンにローカライズされた通貨で返されます。
productName
String
アイテムの名前。ユーザーが使用しているアプリストアのリージョンにローカライズされた表記で返されます。
戻り値の例
エラーレスポンス
Promiseがrejectされたときは、LiffErrorが渡されます。
発生する可能性があるエラーには、次のようなものがあります。
| エラーメッセージ | 説明 |
|---|---|
| Need access_token for api call, Please login first | ユーザーがログインしていません。 |
| In-App Purchase is not allowed in external browser | メソッドが外部ブラウザで実行されました。 |
| In-App Purchase is not allowed in this LIFF app | ユーザーが実行したLINEミニアプリがアプリ内課金をサポートしていません。 |
liff.iap.requestConsentAgreement()
ユーザーに対して、LINEアプリ内課金利用規約への同意を求めます。
ユーザーがLINEアプリ内課金利用規約に対し未同意の場合や、新たな同意が必要な場合は同意画面が表示されます。
LINEアプリ内課金利用規約が更新された場合、再度の同意が必要になります。アプリ内課金を開始する前には、必ずこのメソッドを呼び出して最新の同意状況を確認してください。
構文
await liff.iap.requestConsentAgreement();
引数
なし
戻り値
Promiseオブジェクトが返されます。
- ユーザーが同意するとresolveされます。
- ユーザーが同意しない場合や失敗した場合は、エラーオブジェクトを伴ってrejectされます。
エラーレスポンス
Promiseがrejectされたときは、LiffErrorが渡されます。
発生する可能性があるエラーには、次のようなものがあります。
| エラーメッセージ | 説明 |
|---|---|
| The user did not agree to the terms. | ユーザーがLINEアプリ内課金利用規約に同意しませんでした。 |
| Need access_token for api call, Please login first | ユーザーがログインしていません。 |
| In-App Purchase is not allowed in external browser | メソッドが外部ブラウザで実行されました。 |
| In-App Purchase is not allowed in this LIFF app | ユーザーが実行したLINEミニアプリがアプリ内課金をサポートしていません。 |
エラーレスポンスの例
liff.iap.createPayment()
アプリストア(App Store、Google Play)の決済確認画面を起動し、購入処理を開始します。
構文
liff.iap.createPayment({ productId, orderId });
引数
戻り値
Promise<void>オブジェクトが返されます。
- 購入が正常に完了するとresolveされます。
- キャンセルされた場合や失敗した場合は、エラーオブジェクトを伴ってrejectされます。
エラーレスポンス
Promiseがrejectされたときは、LiffErrorが渡されます。
発生する可能性があるエラーには、次のようなものがあります。
| エラーメッセージ | 説明 |
|---|---|
| Need access_token for api call, Please login first | ユーザーがログインしていません。 |
| In-App Purchase is not allowed in external browser | メソッドが外部ブラウザで実行されました。 |
| In-App Purchase is not allowed in this LIFF app | ユーザーが実行したLINEミニアプリがアプリ内課金をサポートしていません。 |
アプリ内課金(サーバー)
アプリ内課金機能を利用するには、利用申請を行う必要があります。詳しくは、『LINEミニアプリドキュメント』の「アプリ内課金の概要」を参照してください。
レスポンスヘッダー
アプリ内課金のレスポンスには、以下のHTTPヘッダーが含まれます。将来の弊社への問い合わせの際に参照できるよう、ログに保存してください。
| レスポンスヘッダー | 説明 |
|---|---|
| x-line-request-id | リクエストID。各リクエストごとに発行されるIDです。 |
エラーレスポンス
HTTPステータスコードが400番台または500番台の場合、以下のJSONデータを含むレスポンスボディが返されます。
errorCode
String
エラーコード
message
String
エラーメッセージ
details
array
エラーの詳細
details[].message
String
詳細メッセージ
details[].property
String
エラーの発生箇所
エラーレスポンスの例
HTTPステータスコードが400番台の場合
HTTPステータスコードが500番台の場合
購入処理を予約する
アプリストア決済を開始する前に、購入処理を予約します。
レスポンスに含まれる注文ID(orderId)は購入完了イベントにも含まれます。注文IDは弊社への問い合わせや調査で必要になるため、必ず保存してください。
また、予約成功は購入完了を保証しないため、アイテム付与は購入完了イベントを起点に行ってください。
リクエストの例
HTTPリクエスト
POST https://api.line.me/iap/v1/product/reserve
リクエストヘッダー
Authorization
Bearer {user access token}
現在のユーザーのアクセストークン。liff.getAccessToken()メソッドで取得できます。
Content-Type
application/json
リクエストボディ
clientIp
String
サーバーで取得したユーザー端末のIPアドレス。IPv4またはIPv6形式で指定してください。
clientOs
String
liff.getOS()メソッドで取得した値。iosまたはandroid。
productId
String
購入対象のプロダクトID。
shopProductName
String
購入履歴に表示されるアイテム名。
絵文字や記号は使用できません。ユーザーが購入したアイテムを認識できるように適切な値を設定してください。
最大文字数:20(UTF-16)
レスポンス
ステータスコード200と以下の情報を含むJSONオブジェクトを返します。
orderId
String
注文ID。
レスポンスの例
エラーレスポンス
エラーレスポンスの形式については、エラーレスポンスを参照してください。
一般的なもの以外で発生する可能性があるエラーには、次のようなものがあります。
| errorCode | 説明 |
|---|---|
| VALIDATION_ERROR | リクエスト制約が守られていません。例として、clientOsにiosまたはandroid以外の値が渡されています。 |
| WEBHOOK_URL_IS_NOT_SET | 支払い完了通知を受け取るWebhook URLが設定されていません。 |
| PRODUCT_ID_NOT_FOUND | リクエストされたプロダクトIDが存在しません。 |
| BLOCKED_USER | LINEプラットフォームにより、このユーザーが不正利用者と判断されました。このユーザーに関連するリクエストは処理できません。 |
| INTERNAL_SERVER_ERROR | LINEプラットフォームに一時的な問題が発生しています。再試行が可能なエンドポイントについては、指数バックオフや類似の方法で再試行してください。 |
| TERMS_AGREEMENT_ERROR | 「ユーザーからアプリ内課金利用の同意を取得する」において、このユーザーから最新の規約に対して同意を得ることができていない場合に発生します。 |
エラーレスポンスの例
Webhookイベントの履歴を取得する
LINEプラットフォームが送信したWebhookイベントの履歴を取得します。カーソルベースのページネーションで、1回に最大100件取得できます。
ソート順は、LINEプラットフォームでWebhookイベントの送信を開始した日時の昇順となります。
取得できるWebhookイベントは過去7日間に送信されたものに限られます。現時点では購入完了イベントのみ取得可能で、返金イベントは今後対応予定です。
リクエストの例
HTTPリクエスト
GET https://api.line.me/iap/v1/webhook/events
リクエストヘッダー
Authorization
Bearer {channel access token}
詳しくは、『LINEプラットフォームの基礎知識』の「チャネルアクセストークン」を参照してください。
クエリパラメータ
startEpochSeconds
Number
Webhookイベントの履歴を取得する期間の開始日時を指定します。指定した日時も取得対象に含まれます。過去7日以内のUNIX時間(秒)で指定してください。
endEpochSeconds
Number
Webhookイベントの履歴を取得する期間の終了日時を指定します。指定した日時も取得対象に含まれます。過去7日以内のUNIX時間(秒)で指定してください。
cursor
String
Webhookイベントのページのカーソル。
初回のリクエストでは指定しないでください。2回目以降のリクエストでは、前回のリクエスト時のレスポンスに含まれていたnextCursorを指定することで、続きのWebhookイベントを取得できます。
pageSize
Number
1ページあたりのWebhookイベントの件数。
- 最小値:1
- 最大値:100
status
String
取得したいWebhookイベントのステータス。次のいずれかを指定します。
SUCCESS:受け取りに成功したWebhookイベントの履歴を取得します。FAILED:受け取りに失敗したWebhookイベントの履歴を取得します。
未指定の場合、受け取りの成否に関わらず、すべてのWebhookイベントの履歴を取得します。
ページネーション中は、cursor以外のパラメータを変更せずにリクエストしてください。パラメータを変更したい場合、最初のページからリクエストし直してください。
レスポンス
成功した場合、ステータスコード200と以下の情報を含むJSONオブジェクトを返します。
events
Array
Webhookイベントのリスト。
events[].transactionType
String
常にPRODUCTが返されます。
events.event
Array
nextCursor
String
次のページのカーソル。
次のページが存在しない場合、nullとなります。
レスポンスの例
エラーレスポンス
エラーレスポンスの形式については、エラーレスポンスを参照してください。
一般的なもの以外で発生する可能性があるエラーには、次のようなものがあります。
| errorCode | 説明 |
|---|---|
| VALIDATION_ERROR | リクエスト制約が守られていません。例として、statusにSUCCESSまたはFAILED以外の値が渡されています。 |
| INTERNAL_SERVER_ERROR | LINEプラットフォームに一時的な問題が発生しています。再試行が可能なエンドポイントについては、指数バックオフや類似の方法で再試行してください。 |
アプリ内課金 Webhookイベントオブジェクト
アプリ内課金機能を利用するには、利用申請を行う必要があります。詳しくは、『LINEミニアプリドキュメント』の「アプリ内課金の概要」を参照してください。
署名を検証する
LINEミニアプリのサーバーにWebhookのリクエストが届いたら、Webhookイベントを処理する前に、リクエストヘッダーに含まれる署名を検証してください。署名の検証は、LINEミニアプリのサーバーに届いたリクエストが「LINEプラットフォームから送信されたWebhookか」および「通信経路で改ざんされていないか」などを確認するための重要な手順です。
詳しくは、『Messaging APIドキュメント』の「Webhookの署名を検証する」を参照してください。
購入完了イベント
このイベントは、ユーザーがアプリストア(App Store、Google Play)で予約アイテムを購入し、弊社が精算したときに発生します。Webhookのペイロードには購入されたアイテムの情報が含まれます。
Webhookペイロード
type
String
Webhookイベントのタイプ。purchaseCompleteが指定されます。
orderId
String
ユーザーが購入した注文のID。「購入処理を予約する」エンドポイントのレスポンスに含まれます。
productId
String
ユーザーが購入したアイテムのプロダクトID(productId)。
userId
String
購入を行ったユーザーのユーザーID。
purchaseTimestamp
number
LINEプラットフォームで決済を完了した時間。単位はUNIX時間(秒)です。
この時間は購入を行ったユーザーが実際に支払いを完了した時間ではありません。
channelId
String
LINEミニアプリチャネルのチャネルID。
例
返金イベント
このイベントは、ユーザーがアプリストア(App Store、Google Play)で購入したアイテムに対して返金が行われた場合に発生します。イベントには返金対象となったアイテムの情報が含まれます。
Webhookペイロード
type
String
Webhookイベントのタイプ。refundCompleteが指定されます。
orderId
String
ユーザーが購入後にキャンセルした注文のID。「購入処理を予約する」エンドポイントのレスポンスに含まれます。
productId
String
ユーザーが購入後にキャンセルしたアイテムのプロダクトID(productId)。
userId
String
購入後にキャンセルを行ったユーザーのユーザーID。
purchaseTimestamp
number
キャンセルされたアイテムが購入された際の時間。単位はUNIX時間(秒)です。
購入完了イベントのpurchaseTimestampと一致します。この時間はユーザーが実際に返金を完了した時間ではありません。
channelId
String
LINEミニアプリチャネルのチャネルID。
例