<?php
function encrypt($key, $data) {
}
function createLinePayOrder($amount, $currency, $orderId) {
$channelSecret = 'a917ab6a2367b536f8e5a6e2977e06f4';
$channelId = 'YOUR_CHANNEL_ID'; // Replace with your actual channel ID
$requestUri = '/v3/payments/request';
$form = [
'amount' => $amount,
'currency' => $currency,
'orderId' => $orderId,
'packages' => [
[
'id' => 'package_id', // Replace with your package ID
'name' => 'shop_name', // Replace with your shop name
'amount' => $amount,
'products' => [
[
'id' => 'product_id', // Replace with your product ID
'name' => 'product_name', // Replace with your product name
'quantity' => 10,
'price' => 10
]
]
]
],
'redirectUrls' => [
'confirmUrl' => 'https://y...content-available-to-author-only...n.com/confirm', // Replace with your confirmation URL
]
];
// Convert form data to JSON
// Create the signature
$signature = encrypt($channelSecret, $channelSecret . $requestUri . $jsonForm . $nonce);
// Prepare the request headers
$headers = [
'Content-Type: application/json',
'X-LINE-ChannelId: ' . $channelId,
'X-LINE-TransactionId: ' . $nonce,
'X-LINE-Signature: ' . $signature
];
// Send the POST request to Line Pay API
curl_setopt($ch, CURLOPT_URL
, 'https://s...content-available-to-author-only...e.me' . $requestUri);
// Execute the request
// Check for errors
if ($response === false) {
return;
}
// Close cURL session
// Decode the JSON response
return $responseData;
}
// Example usage:
$orderDetails = createLinePayOrder(100, 'JPY', 'merchant_order_id');
echo 'Response: <pre>' . print_r($orderDetails, true) . '</pre>';
?>
PD9waHAKCmZ1bmN0aW9uIGVuY3J5cHQoJGtleSwgJGRhdGEpIHsKICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKGhhc2hfaG1hYygnc2hhMjU2JywgJGRhdGEsICRrZXksIHRydWUpKTsKfQoKZnVuY3Rpb24gY3JlYXRlTGluZVBheU9yZGVyKCRhbW91bnQsICRjdXJyZW5jeSwgJG9yZGVySWQpIHsKICAgICRjaGFubmVsU2VjcmV0ID0gJ2E5MTdhYjZhMjM2N2I1MzZmOGU1YTZlMjk3N2UwNmY0JzsKICAgICRjaGFubmVsSWQgPSAnWU9VUl9DSEFOTkVMX0lEJzsgIC8vIFJlcGxhY2Ugd2l0aCB5b3VyIGFjdHVhbCBjaGFubmVsIElECiAgICAkcmVxdWVzdFVyaSA9ICcvdjMvcGF5bWVudHMvcmVxdWVzdCc7CiAgICAkbm9uY2UgPSB1bmlxaWQoJycsIHRydWUpOwoKICAgICRmb3JtID0gWwogICAgICAgICdhbW91bnQnID0+ICRhbW91bnQsCiAgICAgICAgJ2N1cnJlbmN5JyA9PiAkY3VycmVuY3ksCiAgICAgICAgJ29yZGVySWQnID0+ICRvcmRlcklkLAogICAgICAgICdwYWNrYWdlcycgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnaWQnID0+ICdwYWNrYWdlX2lkJywgLy8gUmVwbGFjZSB3aXRoIHlvdXIgcGFja2FnZSBJRAogICAgICAgICAgICAgICAgJ25hbWUnID0+ICdzaG9wX25hbWUnLCAvLyBSZXBsYWNlIHdpdGggeW91ciBzaG9wIG5hbWUKICAgICAgICAgICAgICAgICdhbW91bnQnID0+ICRhbW91bnQsCiAgICAgICAgICAgICAgICAncHJvZHVjdHMnID0+IFsKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICdpZCcgPT4gJ3Byb2R1Y3RfaWQnLCAvLyBSZXBsYWNlIHdpdGggeW91ciBwcm9kdWN0IElECiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiAncHJvZHVjdF9uYW1lJywgLy8gUmVwbGFjZSB3aXRoIHlvdXIgcHJvZHVjdCBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl0eScgPT4gMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICdwcmljZScgPT4gMTAKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIF0KICAgICAgICBdLAogICAgICAgICdyZWRpcmVjdFVybHMnID0+IFsKICAgICAgICAgICAgJ2NvbmZpcm1VcmwnID0+ICdodHRwczovL3kuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm4uY29tL2NvbmZpcm0nLCAvLyBSZXBsYWNlIHdpdGggeW91ciBjb25maXJtYXRpb24gVVJMCiAgICAgICAgXQogICAgXTsKCiAgICAvLyBDb252ZXJ0IGZvcm0gZGF0YSB0byBKU09OCiAgICAkanNvbkZvcm0gPSBqc29uX2VuY29kZSgkZm9ybSk7CgogICAgLy8gQ3JlYXRlIHRoZSBzaWduYXR1cmUKICAgICRzaWduYXR1cmUgPSBlbmNyeXB0KCRjaGFubmVsU2VjcmV0LCAkY2hhbm5lbFNlY3JldCAuICRyZXF1ZXN0VXJpIC4gJGpzb25Gb3JtIC4gJG5vbmNlKTsKCiAgICAvLyBQcmVwYXJlIHRoZSByZXF1ZXN0IGhlYWRlcnMKICAgICRoZWFkZXJzID0gWwogICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICdYLUxJTkUtQ2hhbm5lbElkOiAnIC4gJGNoYW5uZWxJZCwKICAgICAgICAnWC1MSU5FLVRyYW5zYWN0aW9uSWQ6ICcgLiAkbm9uY2UsCiAgICAgICAgJ1gtTElORS1TaWduYXR1cmU6ICcgLiAkc2lnbmF0dXJlCiAgICBdOwoKICAgIC8vIFNlbmQgdGhlIFBPU1QgcmVxdWVzdCB0byBMaW5lIFBheSBBUEkKICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJ2h0dHBzOi8vcy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5tZScgLiAkcmVxdWVzdFVyaSk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRqc29uRm9ybSk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgJGhlYWRlcnMpOwoKICAgIC8vIEV4ZWN1dGUgdGhlIHJlcXVlc3QKICAgICRyZXNwb25zZSA9IGN1cmxfZXhlYygkY2gpOwoKICAgIC8vIENoZWNrIGZvciBlcnJvcnMKICAgIGlmICgkcmVzcG9uc2UgPT09IGZhbHNlKSB7CiAgICAgICAgZWNobyAnQ3VybCBlcnJvcjogJyAuIGN1cmxfZXJyb3IoJGNoKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gQ2xvc2UgY1VSTCBzZXNzaW9uCiAgICBjdXJsX2Nsb3NlKCRjaCk7CgogICAgLy8gRGVjb2RlIHRoZSBKU09OIHJlc3BvbnNlCiAgICAkcmVzcG9uc2VEYXRhID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlLCB0cnVlKTsKCiAgICByZXR1cm4gJHJlc3BvbnNlRGF0YTsKfQoKLy8gRXhhbXBsZSB1c2FnZToKJG9yZGVyRGV0YWlscyA9IGNyZWF0ZUxpbmVQYXlPcmRlcigxMDAsICdKUFknLCAnbWVyY2hhbnRfb3JkZXJfaWQnKTsKZWNobyAnUmVzcG9uc2U6IDxwcmU+JyAuIHByaW50X3IoJG9yZGVyRGV0YWlscywgdHJ1ZSkgLiAnPC9wcmU+JzsKCj8+Cg==