victorzhn/line-pay-sdk
Composer 安装命令:
composer require victorzhn/line-pay-sdk
包简介
LINE Pay SDK for PHP 7.0+ and guzzle7.3
README 文档
README
LINE Pay SDK for PHP
LINE Pay SDK for PHP
English | 繁體中文
| SDK Version | Online API Version | Offline API Version |
|---|---|---|
| v3 (Current) | v3 | v2 |
| v2 | v2 | v2 |
OUTLINE
- Demonstration
- Requirements
- Installation
- Usage
- Resources
- References
DEMONSTRATION
Sample Codes Site for LINE Pay (Request, Confirm, Refund)
// Create LINE Pay client $linePay = new \victorzhn\linePay\Client([ 'channelId' => 'Your merchant X-LINE-ChannelId', 'channelSecret' => 'Your merchant X-LINE-ChannelSecret', 'isSandbox' => true, ]); // Online Request API $response = $linePay->request([ 'amount' => 250, 'currency' => 'TWD', 'orderId' => 'Your order ID', 'packages' => [ [ 'id' => 'Your package ID', 'amount' => 250, 'name' => 'Your package name', 'products' => [ [ 'name' => 'Your product name', 'quantity' => 1, 'price' => 250, 'imageUrl' => 'https://yourname.com/assets/img/product.png', ], ], ], ], 'redirectUrls' => [ 'confirmUrl' => 'https://yourname.com/line-pay/confirm', 'cancelUrl' => 'https://yourname.com/line-pay/cancel', ], ]); // Check Request API result (returnCode "0000" check method) if (!$response->isSuccessful()) { throw new Exception("ErrorCode {$response['returnCode']}: {$response['returnMessage']}"); } // Redirect to LINE Pay payment URL header('Location: '. $response->getPaymentUrl() );
REQUIREMENTS
This library requires the following:
- PHP 5.4.0+|7.0+
- guzzlehttp/guzzle 5.3.1+|6.0+
- LINE Pay merchant authentication
Authentication
Each LINE Pay merchant Requires authentication information for LINE Pay integration, as shown below:
- channel ID
- channel Secret
To get an LINE Pay Authentication:
- Merchant's verification information can be viewed at LINE Pay Merchant Center after evaluation process is complete.
- Login into LINE Pay Merchant Center, then get the ChannelId/ChannelSecret (Payment Integration Management > Manage Link Key).
- In LINE Pay Merchant Center, set IP white list for your servers (Payment Integration Management > Manage Payment Server IP) (v3 is not required).
You can immediately create a sandbox merchant account for test through LINE Pay Sandbox Creation.
INSTALLATION
Run Composer in your project:
composer require victorzhn/line-pay-sdk ~3.0.0
Then you could use SDK class after Composer is loaded on your PHP project:
require __DIR__ . '/vendor/autoload.php'; use victorzhn\linePay\Client;
USAGE
Before using any API methods, first you need to create a Client with configuration, then use the client to access LINE Pay API methods.
Client
Create a LINE Pay Client with API Authentication:
$linePay = new \victorzhn\linePay\Client([ 'channelId' => 'Your merchant X-LINE-ChannelId', 'channelSecret' => 'Your merchant X-LINE-ChannelSecret', 'isSandbox' => true, ]);
Device Information
You could set device information for Client (Optional):
$linePay = new \victorzhn\linePay\Client([ 'channelId' => 'Your merchant X-LINE-ChannelId', 'channelSecret' => 'Your merchant X-LINE-ChannelSecret', 'isSandbox' => true, 'merchantDeviceType' => 'Device type string', 'merchantDeviceProfileId' => 'Device profile ID string', ]);
Response
Each API methods will return victorzhn\linePay\Response object, which can retrieve data referred to LINE Pay JSON response data structure.
Retrieving Data
Response object provides response body data accessing by object attributes or array keys:
Retrieving as Object
// Get LINE Pay results code from response $returnCode = $response->returnCode; // Get LINE Pay info.payInfo[] from response $payinfo = $response->info->payinfo;
Retrieving as Array
// Get LINE Pay results code from response $returnCode = $response['returnCode']; // Get LINE Pay info.payInfo[] from response $payinfo = $response['info']['payinfo'];
Methods
Response object has some helpful methods to use:
isSuccessful()
LINE Pay API result successful status (Check that returnCode is "0000")
Example:
if (!$response->isSuccessful()) { throw new Exception("Code {$response['returnCode']}: {$response['returnMessage']}"); }
getPaymentUrl()
Get LINE Pay API response body's info.paymentUrl (Default type is "web")
getPayInfo()
Get LINE Pay API response body's info.payInfo[] or info.[$param1].payInfo[] as array
toArray()
Get LINE Pay response body as array
toObject()
Get LINE Pay response body as object
getStats()
Get \GuzzleHttp\TransferStats object
Online APIs
For Web integration. Merchant will requests a payment and generates payment URL(QR code) to customer to scan by LINE App.
Payment Details API
Gets the details of payments made with LINE Pay. This API only gets the payments that have been captured.
public Response details(array $queryParams=null)
Example:
$response = $linePay->details([ "transactionId" => [$transactionId], ]);
Request API
Prior to processing payments with LINE Pay, the Merchant is evaluated if it is a normal Merchant store then the information is requested for payment. When a payment is successfully requested, the Merchant gets a "transactionId" that is a key value used until the payment is completed or refunded.
public Response request(array $bodyParams=null)
Example:
$response = $linePay->request([ 'amount' => 250, 'currency' => 'TWD', 'orderId' => 'Your order ID', 'packages' => [ [ 'id' => 'Your package ID', 'amount' => 250, 'name' => 'Your package name', 'products' => [ [ 'name' => 'Your product name', 'quantity' => 1, 'price' => 250, 'imageUrl' => 'https://yourname.com/assets/img/product.png', ], ], ], ], 'redirectUrls' => [ 'confirmUrl' => 'https://yourname.com/line-pay/confirm', 'cancelUrl' => 'https://yourname.com/line-pay/cancel', ], ]);
The
$bodyParamsspecification can be referred to Request API v3 Request Body
Confirm API
This API is used for a Merchant to complete its payment. The Merchant must call Confirm Payment API to actually complete the payment. However, when "capture" parameter is "false" on payment reservation, the payment status becomes AUTHORIZATION, and the payment is completed only after "Capture API" is called.
public Response confirm(integer $transactionId, array $bodyParams=null)
Example:
$response = $linePay->confirm($transactionId, [ "amount" => 250, "currency" => 'TWD', ]);
Refund API
Requests refund of payments made with LINE Pay. To refund a payment, the LINE Pay user's payment transactionId must be forwarded. A partial refund is also possible depending on the refund amount.
public Response refund(integer $transactionId, array $bodyParams=null)
Example:
$response = $linePay->refund($transactionId);
For Partial refund:
$response = $linePay->refund($transactionId, [ 'refundAmount' => 200, ]);
Check Payment Status API
An API to check payment request status of LINE Pay. The merchant should regularly check user payment confirm status without using the ConfirmURL and decide if it is possible to complete the payment.
public Response check(integer $transactionId)
Example:
$response = $linePay->check($transactionId);
Capture API
If "capture" is "false" when the Merchant calls the “Request API” , the payment is completed only after the Capture API is called.
public Response authorizationsCapture(integer $transactionId, array $bodyParams=null)
Example:
$response = $linePay->authorizationsCapture($transactionId, [ "amount" => 250, "currency" => 'TWD', ]);
Void API
Voids a previously authorized payment. A payment that has been already captured can be refunded by using the “Refund API”.
public Response authorizationsVoid(integer $transactionId, array $bodyParams=null)
Example:
$response = $linePay->authorizationsVoid($transactionId);
Pay Preapproved API
When the payment type of the Request API was set as PREAPPROVED, a regKey is returned with the payment result. Pay Preapproved API uses this regKey to directly complete a payment without using the LINE app.
public Response preapproved(integer $regKey, array $bodyParams=null)
Example:
$response = $linePay->preapproved([ 'productName' => 'Your product name', 'amount' => 250, 'currency' => 'TWD', 'orderId' => 'Your order ID', ]);
Check RegKey API
Checks if regKey is available before using the preapproved payment API.
public Response preapprovedCheck(integer $regKey, array $queryParams=null)
Example:
$response = $linePay->preapprovedCheck($regKey);
Expire RegKey API
Expires the regKey information registered for preapproved payment. Once the API is called, the regKey is no longer used for preapproved payments.
public Response preapprovedExpire(integer $regKey, array $bodyParams=null)
Example:
$response = $linePay->preapprovedExpire($regKey);
Offline APIs
For POS integration. Customer presents their barcode or QR code to merchants to scan at the POS machine.
Flow:
OneTimeKeysPay->OrdersCheck->OrdersRefund
Payment
This API is to process payment by reading MyCode provided from LINE Pay App with Merchant's device.
public Response oneTimeKeysPay(array $bodyParams=null)
Example:
$response = $linePay->oneTimeKeysPay([ 'productName' => 'Your product name', 'amount' => 250, 'currency' => 'TWD', 'productImageUrl' => 'https://yourname.com/assets/img/product.png', 'orderId' => 'Your order ID', "oneTimeKey"=> 'LINE Pay MyCode', ]);
Payment Status Check
It's the API used when the final payment status can't be checked due to read timeout.
- The status needs to be checked by calling it at regular intervals and 3~5 seconds are recommended for the interval time.
- Payment valid time is maximum 20 minutes and it's calculated from the Payment API Response time. Therefore, a merchant should check the payment status for maximum 20 minutes. In case 20 minutes are exceeded, that transaction will be the payment that couldn't be completed due to exceeded valid time.
public Response ordersCheck(string $orderId, array $$queryParams=null)
Example:
$response = $linePay->ordersCheck($orderId);
Void
This API is to void the authorization.
public Response ordersVoid(string $orderId, array $bodyParams=null)
Example:
$response = $linePay->ordersVoid($orderId);
Capture
This API is to capture the authorized transaction.
public Response ordersCapture(string $orderId, array $bodyParams=null)
Example:
$response = $linePay->ordersCapture($orderId);
Refund
This API is to refund after the payment completion (Captured data).
public Response ordersRefund(string $orderId, array $bodyParams=null)
Example:
$response = $linePay->ordersRefund($orderId);
Authorization Details
This API is to search the authorization details. Only authorized or cancelled (Void or Expire) data can be searched and the data after capturing can be searched by The Payment Details API.
public Response authorizations(array $queryParams=null)
Example for searching transactionId:
$response = $linePay->authorizations([ "transactionId" => [$transactionId], ]);
Example for searching orderId:
$response = $linePay->authorizations([ "orderId" => $orderId, ]);
EXCEPTIONS
Client throws exceptions for errors that occur during a API transaction.
ConnectException
A victorzhn\linePay\exception\ConnectException exception is thrown in the event of a networking error (Timeout).
try { $response = $linePay->confirm($transactionId, $bodyParams); } catch (\victorzhn\linePay\exception\ConnectException $e) { // Process of confirm API timeout handling }
RESOURCES
LINE Pay Online API v3 Guide (EN)
LINE Pay Offline API v2 Guide (EN)
LINE Pay OneTimeKeys Simulation
LINE Pay OneTimeKeys Simulation (For TW Merchant)
LINE Pay Online API v2 Documents PDF version (Multi-language)
REFERENCES
victorzhn/line-pay-sdk 适用场景与选型建议
victorzhn/line-pay-sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.14k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 06 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「api」 「sdk」 「line pay」 「LINE SDK」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 victorzhn/line-pay-sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 victorzhn/line-pay-sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 victorzhn/line-pay-sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PSR-7 compatible library for making CRUD API endpoints
Alfabank REST API integration
Zero-dependency raw PHP DNS resolver, domain-ownership verification, and intoDNS/MxToolbox-style diagnostics. Queries authoritative nameservers directly over sockets — never trusts the recursive cache for ownership checks.
A lightweight plain-PHP framework for database-backed CRUD APIs.
bughq error tracking - PHP SDK
ABsurge PHP SDK for feature flags and A/B testing
统计信息
- 总下载量: 1.14k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-06-25