1. Go to this page and download the library: Download carllee/line-pay-core-v4 library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
carllee / line-pay-core-v4 example snippets
use LinePay\Core\LinePayBaseClient;
use LinePay\Core\Config\LinePayConfig;
class MyLinePayClient extends LinePayBaseClient
{
public function requestPayment(array $body): array
{
return $this->sendRequest('POST', '/v3/payments/request', $body);
}
public function confirmPayment(string $transactionId, array $body): array
{
return $this->sendRequest(
'POST',
"/v3/payments/{$transactionId}/confirm",
$body
);
}
}
// Usage
$config = new LinePayConfig(
channelId: getenv('LINE_PAY_CHANNEL_ID'),
channelSecret: getenv('LINE_PAY_CHANNEL_SECRET'),
env: 'sandbox', // or 'production'
timeout: 30
);
$client = new MyLinePayClient($config);
use LinePay\Core\LinePayUtils;
// Generate signature for API requests
$signature = LinePayUtils::generateSignature(
$channelSecret,
'/v3/payments/request',
json_encode($requestBody),
$nonce
);
// Validate transaction ID format (must be 19 digits)
if (LinePayUtils::isValidTransactionId($transactionId)) {
// Process transaction
}
// Parse callback query parameters
$result = LinePayUtils::parseConfirmQuery($_GET);
// $result['transactionId'], $result['orderId']
use LinePay\Core\LinePayUtils;
// ✓ SECURE: Uses hash_equals() internally (timing-safe)
$isValid = LinePayUtils::verifySignature($secret, $data, $receivedSignature);
// ✗ INSECURE: Never do direct string comparison for signatures
// $isValid = ($expectedSignature === $receivedSignature); // Vulnerable to timing attacks!
use LinePay\Core\Errors\LinePayError;
use LinePay\Core\Errors\LinePayTimeoutError;
use LinePay\Core\Errors\LinePayConfigError;
use LinePay\Core\Errors\LinePayValidationError;
try {
$response = $client->requestPayment($body);
} catch (LinePayTimeoutError $e) {
// Handle timeout - IMPORTANT: Check payment status!
echo "Request timed out after {$e->getTimeout()} seconds";
} catch (LinePayValidationError $e) {
// Handle validation errors (before API call)
echo "Invalid input: {$e->getMessage()}";
} catch (LinePayError $e) {
// Handle API errors
echo "Error [{$e->getReturnCode()}]: {$e->getReturnMessage()}";
if ($e->isAuthError()) {
// 1xxx: Check your Channel ID/Secret, or signature generation
error_log("Auth failed - verify credentials");
} elseif ($e->isPaymentError()) {
// 2xxx: Transaction-specific issue (e.g., already refunded)
notifyUser("Payment could not be processed");
} elseif ($e->isInternalError()) {
// 9xxx: LINE Pay server issue - retry with backoff
scheduleRetry($body);
}
} catch (LinePayConfigError $e) {
// Configuration error (missing/invalid credentials)
echo "Configuration error: {$e->getMessage()}";
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.