概要
本章では、LINE Payの機能について説明する。
LINE Payの概要
本書は、LINE Payと連動しようとするoffline加盟店の開発者向けの文書である。
- 図 1 LINE Pay Overview *
連動環境
本章では、LINE Payと連動する前に必要とされる事項と準備について説明する。
システム要件
LINE PayのAPI連動は、LINE Payと加盟店のサーバー間の通信を基本とする。 したがって、加盟店は別のPayment Serverを構成して連動しなければならない。
技術支援の問合せ先
導入方法についての質問、または、内部エラーが発生した場合は、以下の各国の問い合わせ先までメールをお送りください。
担当 | 問合せ先 | 対象の国 |
---|---|---|
LINE Pay Japan | dl_tech_support_jp@linecorp.com | 日本 |
LINE Pay Thailand | dl_tech_support_th@linecorp.com | タイ |
LINE Pay Taiwan | dl_tech_support_tw@linecorp.com | 台湾 |
LINE Pay Global | dl_tech_support_global@linecorp.com | その他 |
連動前の準備
LINE Pay Payment APIを連動する前に、加盟店は加盟店登録および連動に必要なキー情報を確認しなければならない。
加盟店登録
LINE Payとの決済連動のためには、加盟店登録が必要である。 LINE Payの加盟店申請方法ページの内容を確認して頂き、加盟店登録を完了してください。
連動のための準備
- 加盟店Payment Serverのwhite list登録 a. LINE Payでは、加盟店Payment ServerのIPを登録して、加盟店ごとに付与されたchannel idでアクセス可能なサーバーを制限する。 b. IP登録は、「加盟店 My Pageにログイン 窶錀 決済連動管理 窶錀 決済サーバーIP管理」で行う。
- channel idとchannel secretの確認 a. API連動の必須情報として、「加盟店 My Pageにログイン 窶錀 決済連動管理 窶錀 連動キー管理」で確認できる。 b. 当該情報は、加盟店に付与された固有情報なので、外部に露出されないように注意しなければならない。
- 決済連動可能な通貨の確認 a. LINE Pay加盟店は、API連動の際に通貨を1つ使用でき、以下の通貨をサポートする。「加盟店 My Pageにログイン 窶錀 基本情報管理 窶錀 加盟店情報」で確認できる。 - JPY - USD - THB - TWD
連動の流れ
Payment Sequence diagram
決済プロセスを説明する。
対象API
- Payment API(sequence diagram - 4番)
図 2 Payment Sequence diagram
Payment Sequence diagramの説明
- LINE Pay会員は、加盟店の端末にMyCode(Barcode/QR Code)を見せる。
- 加盟店の端末は、MyCode(Barcode/QR Code)を読み取る。
- 加盟店の端末は、加盟店Payment Serverに決済要求をする。
- 加盟店Payment Serverは、Payment APIを呼び出す。
- APIレスポンス情報を通じて、決済が完了したかどうかを確認する。
- 加盟店Payment Serverは、決済の結果を加盟店の端末に送信する。
- LINE Payサーバーは、決済の結果(成功/失敗)をPushまたはLINE Pay Official Account MessageでLINE Pay会員に知らせる。
After Payment Sequence
決済プロセス後のAPIは、すべて一回のAPI呼び出しで処理される。
対象API - VOID - REFUND - CAPTURE - Authorization/Payment Details
API Specifications (Payment)
本章では、LINE Payユーザーの「oneTImeKey」(LINE Pay main menu上の「MyCode」メニュー)を読み取り、決済完了までに使用されるAPIについて説明する。
- Payment - Payment Status Check
Payment
LINE Pay appで提供されるMyCodeを加盟店のdeviceで読み取り、決済を処理するAPI。
Specification
Payment API Endpoint
項目 | 説明 |
---|---|
Endpoint URL | Sandbox : https://sandbox-api-pay.line.me/v2/payments/oneTimeKeys/pay Product : https://api-pay.line.me/v2/payments/oneTimeKeys/pay |
Method | POST |
Timeout | Read : 40秒 |
Payment API Request Header
項目 | タイプ | サイズ | 必須 | 説明 |
---|---|---|---|---|
Content-Type | string | Y | application/json; charset=UTF-8 | |
X-LINE-ChannelId | string | 10 | Y | 支払い連動情報 - Channel ID |
X-LINE-ChannelSecret | string | 32 | Y | 支払い連動情報 - Channel Secret Key |
X-LINE-MerchantDeviceProfileId | string | 100 | N | 加盟店が管理するDeviceのProfile ID |
X-LINE-MerchantDeviceType | string | 20 | N | 支払い連動するDevice type |
Payment API Request Body
項目 | タイプ | 必須 | 説明 |
---|---|---|---|
productName | string(4000) | Y | 商品名 |
amount | number(38) | Y | 決済金額 |
currency | string(3) | Y | 決済通貨 |
orderId | string(100) | Y | 決済予約の注文番号 (加盟店で管理される唯一の番号) |
oneTimeKey | string(12 - 19) | Y | LINE Pay appで提供されるQR/BarCode情報を読み取った結果 oneTimeKeyの有効時間は、LINE Pay会員がQR/Bar codeを確認した時間から5分間有効。 - JP: 19桁(2019.08.01から変更、それまでは12桁) コード仕様:code128 90000000(事業者識別コード部8桁)+00(LINE Pay識別コード部2桁)+123456789(トークン部9桁) - TW: 18桁 - TH, Global: 12桁 |
capture | boolean | N | 売上処理 true(デフォルト):オーソリと売上を一度に処理する。 false: オーソリを処理し、「Capture API」を呼び出さないと取引きが完了しない。 |
extras.branchName | string(200) | N | 決済を要求した店舗名(100文字まで) |
extras.branchId | String(32) | N | ブランチID 決済がリクエストされた場所を識別するために利用します。英字、数字、記号を利用出来ます。 |
extras.promotionRestriction | Object | N | プロモーション制限情報 プロモーション非対象商品がトランザクションに含まれる場合に、プロモーション非対象商品価格の合計額をこの項目に設定します。プロモーション非対象商品(たばこ、商品券、プリペイドカードなど)は、関連する法律、および、規制に決定されます。注意:このパラメータが有効の場合は、一部決済キャンセルはサポートされません。 - useLimit: プロモーション非対象商品の合計額(顧客はLINE ポイント、クーポン、割引にプロモーション非対象の商品への決済に利用できません。) - rewardLimit: プロモーション非対象商品の合計額(顧客はプロモーション非対象の商品への決済時にLINEポイントなどを受け取ることができません。) "promotionRestriction" : [{ "useLimit" : 100, "rewardLimit" : 100 }] |
Payment API Response Body
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
returnCode | string(4) | Y | LINE Payによって作成された結果コード - 0000 : APIリクエスト成功 - その他の応答コード: 本書の「付録 - API別の応答コード」を参照 |
returnMessage | string(100) | Y | 結果メッセージまたは失敗理由 |
info.transactionId | number(19) | Y | LINE Payの取引番号 |
info.orderId | string(100) | Y | 決済予約の注文番号 (加盟店で管理される唯一の番号) |
info.transactionDate | string(20) | Y | 取引日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
info.payInfo[].method | string(20) | Y | 決済時に使用された決済手段 - CREDIT_CARD - BALANCE - DISCOUNT - POINT(利用されたLINEポイントを区別して受け取りたい場合に設定されます。詳細は「POINT決済レスポンス」を参照ください。) |
info.payInfo[].amount | number(38) | Y | 決済金額 |
info.balance | number(38) | N | 決済後の残額 ※全額ポイント決済した場合はNULL値になります。 |
info.authorizationExpireDate | string(20) | N | 承認満了日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' オーソリ(capture=false)のみの決済の場合に送信 ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
Request
POST https://sandbox-api-pay.line.me/v2/payments/oneTimeKeys/pay HTTP/1.1
Host: sandbox-api-pay.line.me
Content-Type: application/json
X-LINE-ChannelId: {channel id}
X-LINE-ChannelSecret: {channel secret}
X-LINE-MerchantDeviceProfileId: {DEVICE_PROFILE_ID}
{
"productName": "test product",
"amount": 100,
"currency": "JPY",
"orderId": "merchant_test_order_1",
"oneTimeKey": "123456789012",
"extras" : {
"branchName" : "test_branch_1",
"branchId" : "branch1"
}
}
Response Body - 決済完了
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"transactionId": "2019010112345678910",
"orderId": "test_order_#1",
"transactionDate": "2019-01-01T01:01:00Z",
"payInfo": [{
"method": "BALANCE",
"amount": 10
}, {
"method": "DISCOUNT",
"amount": 5
}],
"balance": 9900
}
}
Response Body - LINE Payの会員確認手続きが必要な場合
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"transactionId": "2016010112345678910",
"orderId": "test_order_#1"
}
}
Payment Status Check
Readタイムアウトのために最終の決済ステータスを確認できなかった場合に利用するAPIです。
- このAPIは決済が発生してから7日間は最終の決済ステータスを確認できます。
Specification
Payment Status Check API Endpoint
項目 | 説明 |
---|---|
Endpoint URL | Sandbox : https://sandbox-api-pay.line.me/v2/payments/orders/{orderId}/check Product : https://api-pay.line.me/v2/payments/orders/{orderId}/check |
Method | POST |
Timeout | Read : 20秒 |
Payment Status Check API Request Header
項目 | タイプ | サイズ | 必須 | 説明 |
---|---|---|---|---|
Content-Type | string | Y | application/json; charset=UTF-8 | |
X-LINE-ChannelId | string | 10 | Y | 支払い連動情報 - Channel ID |
X-LINE-ChannelSecret | string | 32 | Y | 支払い連動情報 - Channel Secret Key |
X-LINE-MerchantDeviceProfileId | string | 100 | N | 加盟店が管理するDeviceのProfile ID |
X-LINE-MerchantDeviceType | string | 20 | N | 支払い連動するDevice type |
Payment Status Check API URI Parameters
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
orderId | string(100) | Y | - 加盟店が決済要求時に送信した注文番号 - 必ずURI Path上に存在するパラメータでエンコードして送信 ※reference : https://en.wikipedia.org/wiki/Percent-encoding |
Payment Status Check API Response Body
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
returnCode | string(4) | Y | 結果コード - 0000 : APIリクエスト成功 - その他の応答コード: 本書の「付録 - API別の応答コード」を参照 |
returnMessage | string(100) | Y | 結果メッセージ |
info.status | string(20) | Y | 決済状態 - COMPLETE : 決済完了 - 終了状態 - FAIL : 決済失敗 - 終了状態 - AUTH_READY : ユーザー確認待ち ※参考: 「COMPLETE」または「FAIL」の場合、追加の応答情報が存在する。 |
case "info.status" : "COMPLETE" | |||
info.transactionId | number(19) | Y | LINE Payの取引番号 |
info.orderId | string(100) | Y | 決済予約の注文番号 (加盟店で管理される唯一の番号) |
info.transactionDate | string(20) | Y | 取引日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
info.payInfo[].method | string(20) | Y | 決済時に使用された決済手段 - CREDIT_CARD - BALANCE - DISCOUNT - POINT(利用されたLINEポイントを区別して受け取りたい場合に設定されます。詳細は「POINT決済レスポンス」を参照ください。) |
info.payInfo[].amount | number(38) | Y | 決済金額 |
info.balance | number(38) | N | 決済後の残額 |
info.authorizationExpireDate | string(20) | N | 承認満了日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' オーソリ(capture=false)のみの決済の場合に送信 ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
"info.status":"FAIL"の場合 | |||
info.failReturnCode | string(4) | Y | 失敗結果コード - 応答コードは、本書の「付録- API別の応答コード」で確認する。 - Payment APIの応答コードと同じ応答コードである。 |
info.failReturnMessage | string(100) | Y | 失敗結果メッセージ |
"info.status":"AUTH_READY"の場合 | |||
info.orderId | string(100) | Y | 決済予約の注文番号 (加盟店で管理される唯一の番号) |
info.transactionId | number(19) | Y | LINE Payの取引番号 |
Request
- 「orderId」が「test_order_#1」の場合
GET https://sandbox-api-pay.line.me/v2/payments/orders/test_order_%231/check HTTP/1.1
Host: sandbox-api-pay.line.me
Content-Type: application/json
X-LINE-ChannelId: {channel id}
X-LINE-ChannelSecret: {channel secret}
X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY
Response Body - Statusが「COMPLETE」の場合
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"status": "COMPLETE",
"transactionId": "2016010112345678910",
"orderId": "test_order_#1",
"transactionDate": "2016-01-01T01:01:00Z",
"payInfo": [{
"method": "BALANCE",
"amount": 10
}, {
"method": "DISCOUNT",
"amount": 5
}],
"balance": 9900
}
}
Response Body - Statusが「FAIL」の場合
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"status": "FAIL"
}
}
API Specifications (After Payment)
本章では、決済が完了した後、加盟店の注文状況に応じて決済を払い戻したり、履歴を照会したりするAPIについて説明する。
- Void
- Capture
- Refund
- Authorization Details
- Payment Details
Void
承認取引を無効とするAPIです。
Specification
Void API Endpoint
項目 | 説明 |
---|---|
Endpoint URL | Sandbox : https://sandbox-api-pay.line.me/v2/payments/orders/{orderId}/void Product : https://api-pay.line.me/v2/payments/orders/{orderId}/void |
Method | POST |
Timeout | Read : 20秒 |
Void API Request Header
項目 | タイプ | サイズ | 必須 | 説明 |
---|---|---|---|---|
Content-Type | string | Y | application/json; charset=UTF-8 | |
X-LINE-ChannelId | string | 10 | Y | 支払い連動情報 - Channel ID |
X-LINE-ChannelSecret | string | 32 | Y | 支払い連動情報 - Channel Secret Key |
X-LINE-MerchantDeviceProfileId | string | 100 | N | 加盟店が管理するDeviceのProfile ID |
X-LINE-MerchantDeviceType | string | 20 | N | 支払い連動するDevice type |
Void API URI Parameters
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
orderId | string(100) | Y | - 加盟店が決済要求時に送信した注文番号 - 必ずURI Path上に存在するパラメータでエンコードして送信 ※reference : https://en.wikipedia.org/wiki/Percent-encoding |
Void API Response Body
項目 | タイプ | 必須 | 説明 |
---|---|---|---|
returnCode | string(4) | Y | LINE Payによって作成された結果コード - 0000 : APIリクエスト成功 - その他の応答コード: 本書の「付録 - API別の応答コード」を参照 |
returnMessage | string(100) | Y | 結果メッセージまたは失敗理由 |
Request 「orderId」が「test_order_#1」の場合
POST https://sandbox-api-pay.line.me/v2/payments/orders/test_order_%231/void HTTP/1.1
Host: sandbox-api-pay.line.me
Content-Type: application/json
X-LINE-ChannelId: {channel id}
X-LINE-ChannelSecret: {channel secret}
X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY
Response - 決済完了
{
"returnCode": "0000",
"returnMessage": "success"
}
Capture
承認取引を売上とするAPIです。
Specification
Capture API Endpoint
項目 | 説明 |
---|---|
Endpoint URL | Sandbox : https://sandbox-api-pay.line.me/v2/payments/orders/{orderId}/capture Product : https://api-pay.line.me/v2/payments/orders/{orderId}/capture |
Method | POST |
Timeout | Read : 20秒 |
Capture API Request Header
項目 | タイプ | サイズ | 必須 | 説明 |
---|---|---|---|---|
Content-Type | string | Y | application/json; charset=UTF-8 | |
X-LINE-ChannelId | string | 10 | Y | 支払い連動情報 - Channel ID |
X-LINE-ChannelSecret | string | 32 | Y | 支払い連動情報 - Channel Secret Key |
X-LINE-MerchantDeviceProfileId | string | 100 | N | 加盟店が管理するDeviceのProfile ID |
X-LINE-MerchantDeviceType | string | 20 | N | 支払い連動するDevice type |
Capture API URI Parameters
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
orderId | string(100) | Y | - 加盟店が決済要求時に送信した注文番号 - 必ずURI Path上に存在するパラメータでエンコードして送信 ※reference : https://en.wikipedia.org/wiki/Percent-encoding |
Capture API Request Body
項目 | タイプ | 必須 | 説明 |
---|---|---|---|
amount | number(38) | Y | 決済金額 |
currency | string(3) | Y | 決済通貨 |
extrapromotionRestriction | Object | N | プロモーション制限情報 プロモーション非対象商品がトランザクションに含まれる場合に、プロモーション非対象商品価格の合計額をこの項目に設定します。プロモーション非対象商品(たばこ、商品券、プリペイドカードなど)は、関連する法律、および、規制に決定されます。注意:このパラメータが有効の場合は、一部決済キャンセルはサポートされません。 - useLimit: プロモーション非対象商品の合計額(顧客はLINE ポイント、クーポン、割引にプロモーション非対象の商品への決済に利用できません。) - rewardLimit: プロモーション非対象商品の合計額(顧客はプロモーション非対象の商品への決済時にLINEポイントなどを受け取ることができません。) "promotionRestriction" : [{ "useLimit" : 100, "rewardLimit" : 100 }] |
Capture API Response Body
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
returnCode | string(4) | Y | LINE Payによって作成された結果コード - 0000 : APIリクエスト成功 - その他の応答コード: 本書の「付録 - API別の応答コード」を参照 |
returnMessage | string(100) | Y | 結果メッセージまたは失敗理由 |
info.transactionId | number(19) | Y | 決済予約時に発行された取引番号 |
info.orderId | string(100) | Y | 決済予約の注文番号 (加盟店で管理される唯一の番号) |
info.payInfo[].method | string(20) | Y | 決済時に使用された決済手段 - CREDIT_CARD - BALANCE - DISCOUNT - POINT(利用されたLINEポイントを区別して受け取りたい場合に設定されます。詳細は「POINT決済レスポンス」を参照ください。) |
info.payInfo[].amount | number(38) | Y | 決済金額 |
Request 「orderId」が「test_order_#1」の場合
POST https://sandbox-api-pay.line.me/v2/payments/orders/test_order_%231/capture HTTP/1.1
Host: sandbox-api-pay.line.me
Content-Type: application/json
X-LINE-ChannelId: {channel id}
X-LINE-ChannelSecret: {channel secret}
X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY
{
"amount": "100",
"currency": "JPY",
"extra": {
"promotionRestriction": {
"useLimit":20,
"rewardLimit":20
}
}
}
Response
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"transactionId": "2016010112345678910",
"orderId": "test_order_#1",
"transactionDate": "2016-01-01T01:01:00Z",
"payInfo": [{
"method": "BALANCE",
"amount": 95
}, {
"method": "DISCOUNT",
"amount": 5
}],
"balance": 9900
}
}
Refund
決済完了(売上データ)後の払い戻しを処理するAPIです。
Specification
Refund API Endpoint
項目 | 説明 |
---|---|
Endpoint URL | Sandbox : https://sandbox-api-pay.line.me/v2/payments/orders/{orderId}/refund Product : https://api-pay.line.me/v2/payments/orders/{orderId}/refund |
Method | POST |
Timeout | Read : 20秒 |
Refund API Request Header
項目 | タイプ | サイズ | 必須 | 説明 |
---|---|---|---|---|
Content-Type | string | Y | application/json; charset=UTF-8 | |
X-LINE-ChannelId | string | 10 | Y | 支払い連動情報 - Channel ID |
X-LINE-ChannelSecret | string | 32 | Y | 支払い連動情報 - Channel Secret Key |
X-LINE-MerchantDeviceProfileId | string | 100 | N | 加盟店が管理するDeviceのProfile ID |
X-LINE-MerchantDeviceType | string | 20 | N | 支払い連動するDevice type |
Refund API URI Parameters
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
orderId | string(100) | Y | - 加盟店が決済要求時に送信した注文番号 - 必ずURI Path上に存在するパラメータでエンコードして送信 ※reference : https://en.wikipedia.org/wiki/Percent-encoding |
Refund API Request Body
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
refundAmount | number(38) | N | 払い戻し金額 - 送信されなかった場合は全額払い戻しする。 |
extrapromotionRestriction | Object | N | プロモーション制限情報(現在は利用できません) プロモーション非対象商品がトランザクションに含まれる場合に、プロモーション非対象商品価格の合計額をこの項目に設定します。プロモーション非対象商品(たばこ、商品券、プリペイドカードなど)は、関連する法律、および、規制に決定されます。注意:このパラメータが有効の場合は、一部決済キャンセルはサポートされません。 - useLimit: プロモーション非対象商品の合計額(顧客はLINE ポイント、クーポン、割引にプロモーション非対象の商品への決済に利用できません。) - rewardLimit: プロモーション非対象商品の合計額(顧客はプロモーション非対象の商品への決済時にLINEポイントなどを受け取ることができません。) "promotionRestriction" : [{ "useLimit" : 100, "rewardLimit" : 100 }] |
Refund API Response Body
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
returnCode | string(4) | Y | LINE Payによって作成された結果コード - 0000 : APIリクエスト成功 - その他の応答コード: 本書の「付録 - API別の応答コード」を参照 |
returnMessage | string(100) | Y | 結果メッセージまたは失敗理由 |
info.refundTransactionId | number(19) | Y | 払戻取引番号 |
info.refundTransactionDate | string(20) | Y | 払戻取引日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
Request 「orderId」が「test_order_#1」の場合
POST https://sandbox-api-pay.line.me/v2/payments/orders/test_order_%231/refund HTTP/1.1
Host: sandbox-api-pay.line.me
Content-Type: application/json
X-LINE-ChannelId: {channel id}
X-LINE-ChannelSecret: {channel secret}
X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY
{
"refundAmount": "100",
"extras" : {
"promotionRestriction" : {
"useLimit":20,
"rewardLimit":20
}
}
}
Response
{
"returnCode": "0000",
"returnMessage": "success",
"info": {
"refundTransactionId": "2019010112345678910",
"refundTransactionDate": "2019-01-01T01:01:00Z"
}
}
Authorization Details
承認取引履歴を照会するAPIです。承認済みまたは承認キャンセル(void or expire)処理されたデータのみ照会可能。売上が確定されたデータはPayment Details APIで照会できる。
Specification
Authorization Details API Endpoint
項目 | 説明 |
---|---|
Endpoint URL | Sandbox : https://sandbox-api-pay.line.me/v2/payments/authrozations Product : https://api-pay.line.me/v2/payments/authrozations |
Method | POST |
Timeout | Read : 20秒 |
Authorization Details API Request Header
項目 | タイプ | サイズ | 必須 | 説明 |
---|---|---|---|---|
Content-Type | string | Y | application/json; charset=UTF-8 | |
X-LINE-ChannelId | string | 10 | Y | 支払い連動情報 - Channel ID |
X-LINE-ChannelSecret | string | 32 | Y | 支払い連動情報 - Channel Secret Key |
X-LINE-MerchantDeviceProfileId | string | 100 | N | 加盟店が管理するDeviceのProfile ID |
X-LINE-MerchantDeviceType | string | 20 | N | 支払い連動するDevice type |
Authorization Details API Query Parameters
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
orderId | string(100) | N | 加盟店が決済要求時に送信した注文番号 |
transactionId | number(19) | N | LINE Payで発行した取引番号 |
Authorization Details API Response Body
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
returnCode | string(4) | Y | LINE Payによって作成された結果コード - 0000 : APIリクエスト成功 - その他の応答コード: 本書の「付録 - API別の応答コード」を参照 |
returnMessage | string(100) | Y | 結果メッセージまたは失敗理由 |
info[].transactionId | number(19) | Y | 取引番号 |
info[].orderId | string(100) | Y | 加盟店の注文番号 |
info[].transactionDate | string(20) | Y | 取引日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
info[].transactionType | String(20) | Y | 取引区分 - PAYMENT : payment - PAYMENT_REFUND : refund - PARTIAL_REFUND : partial refund |
info[].payInfo[].method | string(20) | Y | 決済時に使用された決済手段 - CREDIT_CARD - BALANCE - DISCOUNT - POINT(利用されたLINEポイントを区別して受け取りたい場合に設定されます。詳細は「POINT決済レスポンス」を参照ください。) |
info[].payInfo[].amount | number(38) | Y | 取引金額 |
info[].currency | string(3) | Y | 通貨 ※reference : https://en.wikipedia.org/wiki/ISO_4217 |
info[].productName | string(4000) | Y | 商品名 |
info[].payStatus | string(30) | Y | 決済状態 - AUTHORIZATION : 承認 - VOIDED_AUTHORIZATION : 承認無効(「void api」を呼び出して完了した状態) - EXPIRED_AUTHORIZATION : 承認満了(LINE Payで加盟店に許可した承認期限が過ぎた状態) |
info.authorizationExpireDate | string(20) | N | 承認満了日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
Request
GET https://sandbox-api-pay.line.me/v2/payments/authorizations?orderId=20160408003 HTTP/1.1
Host: sandbox-api-pay.line.me
Content-Type: application/json
X-LINE-ChannelId: {channel id}
X-LINE-ChannelSecret: {channel secret}
X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY
Response
{
"returnCode": "0000",
"returnMessage": "success",
"info": [
{
"transactionId": 2019049910005498410,
"transactionDate": "2019-04-08T07:02:38Z",
"transactionType": "PAYMENT",
"productName": "test product",
"currency": "JPY",
"authorizationExpireDate": "2019-04-13T07:02:38Z",
"payInfo": [
{
"method": "BALANCE",
"amount": 100
}
],
"orderId": "20190408003",
"payStatus": "VOIDED_AUTHORIZATION"
}
]
}
Payment Details
売上以降の取引データを照会するAPIです。
Specification
Payment Details API Endpoint
項目 | 説明 |
---|---|
Endpoint URL | Sandbox : https://sandbox-api-pay.line.me/v2/payments/payments Product : https://api-pay.line.me/v2/payments/payments |
Method | POST |
Timeout | Read : 20秒 |
Payment Details API Request Header
項目 | タイプ | サイズ | 必須 | 説明 |
---|---|---|---|---|
Content-Type | string | Y | application/json; charset=UTF-8 | |
X-LINE-ChannelId | string | 10 | Y | 支払い連動情報 - Channel ID |
X-LINE-ChannelSecret | string | 32 | Y | 支払い連動情報 - Channel Secret Key |
X-LINE-MerchantDeviceProfileId | string | 100 | N | 加盟店が管理するDeviceのProfile ID |
X-LINE-MerchantDeviceType | string | 20 | N | 支払い連動するDevice type |
Payment Details API Query Parameters*
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
orderId | string(100) | N | 加盟店が決済要求時に送信した注文番号 |
transactionId | number(19) | N | LINE Payで発行した決済、または払い戻しの取引番号 |
Payment Details API Response Body
項目名 | タイプ | 必須 | 説明 |
---|---|---|---|
returnCode | string(4) | Y | LINE Payによって作成された結果コード - 0000 : APIリクエスト成功 - その他の応答コード: 本書の「付録 - API別の応答コード」を参照 |
returnMessage | string(100) | Y | 結果メッセージまたは失敗理由 |
info[].transactionId | number(19) | Y | 取引番号 |
info[].orderId | string(100) | Y | 加盟店の注文番号(加盟店で管理される唯一の番号) |
info[].transactionDate | string(20) | Y | 取引日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
info[].transactionType | String(20) | Y | 取引区分 - PAYMENT : 決済 - PAYMENT_REFUND : 払い戻し - PARTIAL_REFUND : 一部払い戻し |
info[].payInfo[].method | string(20) | Y | 決済時に使用された決済手段 - CREDIT_CARD - BALANCE - DISCOUNT - POINT(利用されたLINEポイントを区別して受け取りたい場合に設定されます。詳細は「POINT決済レスポンス」を参照ください。) |
info[].payInfo[].amount | number(38) | Y | 取引金額 |
info[].currency | string(3) | Y | 通貨 ※reference : https://en.wikipedia.org/wiki/ISO_4217 |
info[].productName | string(4000) | Y | 商品名 |
原決済取引の照会および払い戻し取引がある場合 | |||
info[].refundList[].refundTransactionId | number(19) | Y | 払戻取引番号 |
info[].refundList[].transactionType | string(20) | Y | 取引区分 - PAYMENT_REFUND : 払い戻し - PARTIAL_REFUND : 一部払い戻し |
info[].refundList[].refundAmount | number(38) | Y | 払い戻し金額 |
info[].refundList[].refundTransactionDate | String(20) | Y | 払戻取引日時(ISO8601 UTC) - Time Format : yyyy-MM-dd'T'HH:mm:ss'Z' ※reference : https://en.wikipedia.org/wiki/ISO_8601 |
払い戻し情報を取得するとき | |||
info[].originalTransactionId | number(19) | Y | 元決済取引番号 |
Request
GET https://sandbox-api-pay.line.me/v2/payments/?orderId=20160408001 HTTP/1.1
Host: sandbox-api-pay.line.me
Content-Type: application/json
X-LINE-ChannelId: {channel id}
X-LINE-ChannelSecret: {channel secret}
X-LINE-MerchantDeviceType: POS
X-LINE-MerchantDeviceProfileId: DUMMY
Response
{
"returnCode": "0000",
"returnMessage": "success",
"info": [
{
"transactionId": 2019049910005496810,
"transactionDate": "2019-04-08T06:31:19Z",
"transactionType": "PAYMENT",
"productName": "test product",
"currency": "JPY",
"payInfo": [
{
"method": "BALANCE",
"amount": 100
}
],
"refundList": [
{
"refundTransactionId": 2019049910005497012,
"transactionType": "PARTIAL_REFUND",
"refundAmount": -1,
"refundTransactionDate": "2019-04-08T06:33:17Z"
}
],
"orderId": "20190408001"
}
]
}
付録
応答コード
LINE Payで発生するエラーコードについて定義する。エラーコードの「returnMessage」は英語で提供され、メッセージがない場合はハイフン(-)が送信される。
LINE Payの応答コード
コード(returnCode) | 説明(300byte) |
---|---|
0000 | Success. 成功 |
1101 | Purchaser status error. LINE Pay会員ではありません。 |
1102 | Purchaser status error. 購入した会員が取引不可能な状態です。 |
1104 | Merchant not found. 加盟店がありません。 |
1105 | This Merchant cannot use LINE Pay. 加盟店がLINE Payを利用できない状態です。 |
1106 | Header information error. ヘッダー情報エラー |
1110 | Not available credit card. 使用できないクレジットカードです。 |
1115 | Cannot proceed with something. 処理を進めることができません。 |
1123 | Account balance has just updated by another transaction. 残高が他のトランザクションによって更新されました。 |
1124 | Error in Amount info. 金額情報エラーです。 |
1133 | invalid OneTimeKey. 無効なoneTimeKeyです。 |
1139 | Not support partial capture/partial cancel. 一部売上/キャンセルはサポートされていません。 |
1141 | Account status error. 決済口座の状態エラー |
1142 | Insufficient balance remains. 残高不足 |
1145 | Payment in progress. 決済中です。 |
1150 | Transaction record not found. 取引履歴がありません。 |
1152 | Transaction has already been made. 既に取引された決済です。 |
1153 | Request amount is different from real amount. 決済予約時の金額と要求された金額が異なります。 |
1155 | The transaction Id not eligible for Refund. 無効な取引番号です。 |
1159 | The transaction request does not exist. 決済要求情報がありません。 |
1163 | Exceeded the expiration for Refund. 払い戻し可能日が過ぎているため払い戻しができません。 |
1164 | Refund limit exceeded. 払い戻し可能な金額を超えました。 |
1165 | The transaction has already been refunded. すでに払い戻し済みの取引です。 |
1169 | Payment method and password must be certificated by LINE Pay. 決済確認の情報エラー(決済方法とパスワードはLINE Payにて認証されなければなりません。) |
1170 | Users account remains have been changed. 会員口座の残高が変動しました。 |
1172 | Existing same orderId. すでに同じ注文番号で取引された履歴が存在します。 |
1177 | Exceeded max. number of transactions (100) allowed to be retrieved. 照会可能な最大取引数を超えました(100件)。 |
1178 | Unsupported currency. この通貨には対応していません。 |
1179 | Status can not be processed. 処理できない状態です。 This Merchant not support cross-border payment. この加盟店はクロスボーダー決済をサポートしていません。 |
1183 | Payment amount must be less than 0. 決済金額は0より大きくなければなりません。 |
1184 | Payment amount must be greater than request amount. 決済金額が要求時の金額を超えています。 |
1195 | LINE Pay does not support your version. サポート対象外です。 |
1198 | Duplicated the request calling API. 重複したAPIリクエスト呼び出しです。 |
1199 | Internal request error. 内部リクエストエラー |
1279 | Credit card Temporary error. クレジットカード決済の一時的なエラー |
1280 | Temporary error while making a payment with Credit Card クレジットカード決済の一時的なエラー |
1281 | Credit Card Payment Error クレジットカード決済エラー |
1282 | Credit Card Authorization Error クレジットカード承認エラー |
1283 | The payment has been declined due to suspected fraud. 不正使用が疑われるため決済が拒否されました。 |
1284 | Credit Card Payment has been temporarily stopped. クレジットカード決済が一時的に中断されました。 |
1285 | Imitted credit card information クレジットカード決済情報漏れ |
1286 | Incorrect credit card payment information クレジットカードの決済情報が正しくありません。 |
1287 | Credit card expiration date has passed. クレジットカードの有効期限が過ぎています。 |
1288 | Credit card has insufficient funds. クレジットカードの決済口座の残高が不足しています。 |
1289 | Maximum credit card limit exceeded. クレジットカードの利用限度額超過 |
1290 | One-time payment limit exceeded. クレジットカード1件あたりの決済限度額超過 |
1291 | This card has been reported stolen. 盗難報告されたカードです。 |
1292 | This card has been suspended. 使用が停止されたカードです。 |
1293 | Invalid Card Vertification Number (CVN) CVN入力エラー |
1294 | This card is blacklisted. ブラックリストに登録されたカードです。 |
1295 | Invalid credit card numnber クレジットカード番号が正しくありません。 |
1296 | Invalid amount 処理できない金額です。 |
1298 | The credit card payment declined. カード使用が拒否されました。 |
1900 | Temporary Error. Please, try again later. 一時的なエラーです。しばらくたってからリトライしてください。 |
1901 | Temporary Error. Please, try again later. 一時的なエラーです。しばらくたってからリトライしてください。 |
1902 | Temporary Error. Please, try again later. 一時的なエラーです。しばらくたってからリトライしてください。 |
1903 | Temporary Error. Please, try again later. 一時的なエラーです。しばらくたってからリトライしてください。 |
1999 | It does not match the requested information. (When retrying a request) 前回のリクエスト情報と異なります(リクエストリトライ)。 |
2101 | Parameter error パラメータエラー |
2102 | JSON data format error JSONデータフォーマットエラー |
2103 | Incorrect request. Please, check a returnMessage. リクエストが正しくありません。returnMessageを確認してください。 |
2104 | Incorrect request. Please, check a returnMessage. リクエストが正しくありません。returnMessageを確認してください。 |
9000 | Internal error 内部エラー |
API別の応答コード
API別の応答コード*
エラーコード | Payment | Payment status check | 売上 | 承認無効 | 払い戻し | 承認履歴 | 決済履歴 |
---|---|---|---|---|---|---|---|
1101 | v | v | v | ||||
1102 | v | v | v | ||||
1104 | v | v | v | v | v | v | v |
1105 | v | v | v | v | v | v | v |
1106 | v | v | v | v | v | v | v |
1110 | v | ||||||
1115 | v | v | v | ||||
1123 | v | v | v | v | |||
1124 | v | v | |||||
1133 | v | ||||||
1139 | v | v | |||||
1141 | v | ||||||
1142 | v | ||||||
1145 | v | ||||||
1150 | v | v | v | v | v | v | |
1152 | v | ||||||
1153 | v | ||||||
1154 | |||||||
1155 | v | v | v | ||||
1159 | v | ||||||
1163 | v | ||||||
1164 | v | ||||||
1165 | v | v | |||||
1169 | v | ||||||
1170 | v | v | v | v | |||
1172 | v | v | |||||
1177 | v | v | |||||
1178 | v | ||||||
1179 | v | v | v | v | |||
1183 | v | v | |||||
1184 | v | v | |||||
1195 | v | ||||||
1198 | v | v | v | v | |||
1199 | v | v | v | v | |||
1279 | v | v | v | v | |||
1280 | v | v | |||||
1281 | v | v | |||||
1282 | v | v | v | v | |||
1283 | v | v | |||||
1284 | v | v | |||||
1285 | v | v | |||||
1286 | v | v | |||||
1287 | v | v | |||||
1288 | v | v | |||||
1289 | v | v | |||||
1290 | v | v | |||||
1291 | v | v | |||||
1292 | v | v | |||||
1293 | v | v | |||||
1294 | v | v | |||||
1295 | v | v | |||||
1298 | v | v | |||||
1900 | v | v | v | ||||
1901 | v | ||||||
1902 | v | ||||||
1903 | v | ||||||
1999 | v | v | v | ||||
2101 | v | v | v | v | v | v | v |
2102 | v | v | v | v | v | v | v |
2103 | v | v | v | v | v | v | v |
2104 | v | v | v | v | v | v | v |
9000 | v | v | v | v | v | v | v |
Sandboxワンタイムキー決済
加盟店はユーザーがLINE Payの”コード支払い”から表示したQR/バーコードを読み込みしてから決済します。Sandbox環境では、テスト決済を行なうために、この”コード支払い”をWebページでシミュレーションして提供します。加盟店はSandbox環境でこのQR/バーコードを読み込み、Payment APIを呼びます。
Sandbox OneTimeKey URL Specification
Sandbox OneTimeKey URL Endpopint Specification
項目 | 説明 |
---|---|
Protocol | HTTPS |
Method | GET |
Host | sandbox-web-pay.line.me |
URL | /web/sandbox/payment/oneTimeKey |
Sandbox OneTimeKey URL Request Parameters*
項目名 | 説明 |
---|---|
countryCode | 国コードです。サポートされている国は以下の通りです。通貨はcountryCodeによってセットされます。 - JP (通貨:JPY) - TW (通貨:TWD) - TH (通貨:THB) デフォルトはTH |
paymentMethod | 決済時に使用する決済手段 - card:カード決済 - balance:LINE Payアカウントで決済(JP、THのみ) - ipass:LINE Payアカウントでのみ決済(TWのみ) |
Sandbox OneTimeKey URL 例
項目 | 説明 |
---|---|
コード決済用 | https://sandbox-web-pay.line.me/web/sandbox/payment/oneTimeKey?countryCode=JP&length=19 |
POINT決済レスポンス
ユーザーが利用したポイント決済情報を下記のAPIで受け取るには、設定変更する必要があります。加盟店 My Pageにログインし、「基本情報の管理」→「その他の情報」をクリックし、「APIの決済結果にユーザーのPOINT利用情報を提供」欄を参照し、「使用する」をチェックし保存します。提供されるAPIリストも表示されますので確認してください。チェックした場合は、ポイント決済は、’info.payInfo[]’ 項目に ’method: POINT’として追加されます。 ユーザーがポイントのみで決済した場合、APIレスポンスはオプション設定によって変わります。 - 「使用しない」を設定している場合は、上位の決済手段にポイントデータが含まれます。ポイント決済は設定されません。 - 「使用する」を設定している場合は、ポイント決済データは、他の決済方法と分けられます。ポイント決済は ’payinfo’ 内に設定されます。
API Response Sample(「APIの決済結果にユーザーのPOINT利用情報を提供」に「使用しない」を設定)
{
"returnCode": "0000",
"returnMessage": "OK",
"info": {
"orderId": "order_210124213",
"transactionId": 20140101123123123,
"payInfo": [{
"method": "BALANCE",
"amount": 15
}]
}
}
API Response Sample(「APIの決済結果にユーザーのPOINT利用情報を提供」に「使用する」を設定)
{
"returnCode": "0000",
"returnMessage": "OK",
"info": {
"orderId": "order_210124213",
"transactionId": 20140101123123123,
"payInfo": [{
"method": "POINT",
"amount": 15
}]
}
}
更新履歴
LINE Pay Offline APIの最新バージョンは、0.1.11 です。
LINE Pay Offline API 更新履歴
バージョン | 日付 | 履歴 | 作成者 |
---|---|---|---|
0.1.0 | 2016.05.01 | 初版作成 | |
0.1.4 | 2017.12.01 | Payment APIからneedCheckを削除 | |
0.1.5 | 2018.10.16 | 決済 resarve APIのリクエストパラメータへフィールドを追加および例を修正 - extras.addFriends, extras.branchName |
Shuichi Shiota |
0.1.7 | 2018.12.04 | Payment、Payment Details、および、Authorization Detailsのレスポンスパラメータに加盟店用アフィリエイト用コード/カード情報を追加(台湾のみ利用可能であるので、当日本語資料には記載しておりません。) | Shuichi Shiota |
0.1.8 | 2019.04.01 | 1. 仕様変更 1.1. returnCode - Refund Payment API: エラーコード 1115の説明追加 1.2. Payment API 1.2.1注意書きを更新 1.2.2 タイムアウト変更:20秒から40秒 1.2.3 パラメータの説明を編集:extras.promotionRestriction 1.3. Payment Status Check API - レスポンスの説明を追加:AUTH_READY、CANCEL 2. 追加改訂 - “pay_tech”メールアドレスを削除 - 付録追加:ポイント決済レスポンス - タイプミスの修正 - Payment APIサンプルURLの変更 - 追加内容:SandboxワンタイムキーテストURL - APIレスポンスからエラーコード1194を削除 3. 応答コードに英語表記を追加(日本語版のみ) |
Shuichi Shiota |
0.1.9 | 2019.06.12 | 1. 仕様変更 1.1. Payment API 1.1.1. “extras.branchId”を追加 1.1.2. “oneTimeKey” 国別桁数を更新 |
Shuichi Shiota |
0.1.10 | 2021.02.25 | returnCode 9001以上のコメントを追加、returnCode 1279(Credit card Temporary error.)を追加、Charge&Payをオフラインで利用している場合にクレジット決済のエラーが発生するため、returnCode 1279から1298をAPI別の応答コードに追加 | Shuichi Shiota |
0.1.11 | 2021.05.26 | 決済 resarve APIのリクエストパラメータのextras.addFriendsフィールドを削除 API別の応答コード:1170に払い戻し(Refund)を追加 |
Shuichi Shiota |